Thanks for bringing over the updates. I see two differences of note that still remain between the xf86-input-wacom and input-wacom version of the script. Looks like the the former doesn't have DRY_RUN support for two error conditions. We might want to make a patch for that too.
Reviewed-by: Jason Gerecke <jason.gere...@wacom.com> Jason --- Now instead of four in the eights place / you’ve got three, ‘Cause you added one / (That is to say, eight) to the two, / But you can’t take seven from three, / So you look at the sixty-fours.... On Fri, Jan 26, 2018 at 1:52 PM, Aaron Armstrong Skomra <sko...@gmail.com> wrote: > Signed-off-by: Aaron Armstrong Skomra <sko...@gmail.com> > --- > release.sh | 88 > ++++++++++++++++++++++++++++++++++++++------------------------ > 1 file changed, 54 insertions(+), 34 deletions(-) > > diff --git a/release.sh b/release.sh > index f8a484321fdd..3ca2f72d9378 100755 > --- a/release.sh > +++ b/release.sh > @@ -15,6 +15,14 @@ > export LC_ALL=C > > > #------------------------------------------------------------------------------ > +# Function: check_for_jq > +#------------------------------------------------------------------------------ > +# > +check_for_jq() { > + command -v jq >/dev/null 2>&1 || { echo >&2 "This script requires jq but > it is not installed. Exiting."; exit 1;} > +} > + > +#------------------------------------------------------------------------------ > # Function: check_local_changes > > #------------------------------------------------------------------------------ > # > @@ -113,10 +121,10 @@ release_to_sourceforge () { > section_path="projects/linuxwacom/files/$section" > srv_path="/home/frs/project/linuxwacom/$section" > > - echo "creating shell on sourceforge for $USER_NAME" > - ssh ${USER_NAME%@},linuxwacom@$hostname create > + echo "creating shell on sourceforge for $SF_USERNAME" > + ssh ${SF_USERNAME%@},linuxwacom@$hostname create > #echo "Simply log out once you get to the prompt" > - #ssh -t ${USER_NAME%@},linuxwacom@$hostname create > + #ssh -t ${SF_USERNAME%@},linuxwacom@$hostname create > #echo "Sleeping for 30 seconds, because this sometimes helps against > sourceforge's random authentication denials" > #sleep 30 > fi > @@ -125,7 +133,7 @@ release_to_sourceforge () { > # srv_path="~/public_html$srv_path" > > # Check that the server path actually does exist > - ssh $USER_NAME$hostname ls $srv_path >/dev/null 2>&1 || > + ssh $SF_USERNAME$hostname ls $srv_path >/dev/null 2>&1 || > if [ $? -ne 0 ]; then > echo "Error: the path \"$srv_path\" on the web server does not exist." > cd $top_src > @@ -134,7 +142,7 @@ release_to_sourceforge () { > > # Check for already existing tarballs > for tarball in $targz $tarbz2 $tarxz; do > - ssh $USER_NAME$hostname ls $srv_path/$tarball >/dev/null 2>&1 > + ssh $SF_USERNAME$hostname ls $srv_path/$tarball >/dev/null 2>&1 > if [ $? -eq 0 ]; then > if [ "x$FORCE" = "xyes" ]; then > echo "Warning: overwriting released tarballs due to --force > option." > @@ -149,7 +157,7 @@ release_to_sourceforge () { > # Upload to host using the 'scp' remote file copy program > if [ x"$DRY_RUN" = x ]; then > echo "Info: uploading tarballs to web server:" > - scp $targz $tarbz2 $tarxz $siggz $sigbz2 $sigxz > $USER_NAME$hostname:$srv_path > + scp $targz $tarbz2 $tarxz $siggz $sigbz2 $sigxz > $SF_USERNAME$hostname:$srv_path > if [ $? -ne 0 ]; then > echo "Error: the tarballs uploading failed." > cd $top_src > @@ -159,6 +167,13 @@ release_to_sourceforge () { > echo "Info: skipping tarballs uploading in dry-run mode." > echo " \"$srv_path\"." > fi > + > + host_current="sourceforge.net" > + section_path="projects/linuxwacom/files/$section" > + # DL_URL & PGP_URL will be overwritten by the Github download url if > github was > + # enabled on the command line > + DL_URL="http://$host_current/$section_path/$tarbz2" > + PGP_URL="http://$host_current/$section_path/$tarbz2.sig" > } > > > #------------------------------------------------------------------------------ > @@ -183,12 +198,13 @@ check_json_message() { > release_to_github() { > # Creating a release on Github automatically creates a tag. > > - #dependency 'jq' for reading the json github sends us back > + # dependency 'jq' for reading the json github sends us back > > - #note git_username should include the suffix ":KEY" if the user has > enabled 2FA > - #example skomra:de0e4dc3efbf2d008053027708227b365b7f80bf > + # note git_username should include the suffix ":KEY" if the user has > enabled 2FA > + # example skomra:de0e4dc3efbf2d008053027708227b365b7f80bf > > - GH_REPO=linuxwacom > + GH_REPO="linuxwacom" > + PROJECT="input-wacom" > release_description="Temporary Empty Release Description" > release_descr=$(jq -n --arg release_description "$release_description" > '$release_description') > > @@ -199,7 +215,7 @@ release_to_github() { > "body": %s, > "draft": false, > "prerelease": false}' "$tar_name" "$tar_name" > "$release_descr") > - create_result=`curl -s --data "$api_json" -u $GH_USERNAME > https://api.github.com/repos/$GH_REPO/input-wacom/releases` > + create_result=`curl -s --data "$api_json" -u $GH_USERNAME > https://api.github.com/repos/$GH_REPO/$PROJECT/releases` > GH_RELEASE_ID=`echo $create_result | jq '.id'` > > check_json_message "$create_result" > @@ -208,8 +224,8 @@ release_to_github() { > upload_result=`curl -s -u $GH_USERNAME \ > -H "Content-Type: application/x-bzip" \ > --data-binary @$tarbz2 \ > - > "https://uploads.github.com/repos/$GH_REPO/input-wacom/releases/$GH_RELEASE_ID/assets?name=$tarbz2"` > - GH_DL_URL=`echo $upload_result | jq -r '.browser_download_url'` > + > "https://uploads.github.com/repos/$GH_REPO/$PROJECT/releases/$GH_RELEASE_ID/assets?name=$tarbz2"` > + DL_URL=`echo $upload_result | jq -r '.browser_download_url'` > > check_json_message "$upload_result" > > @@ -217,8 +233,8 @@ release_to_github() { > sig_result=`curl -s -u $GH_USERNAME \ > -H "Content-Type: application/pgp-signature" \ > --data-binary @$tarbz2.sig \ > - > "https://uploads.github.com/repos/$GH_REPO/input-wacom/releases/$GH_RELEASE_ID/assets?name=$tarbz2.sig"` > - GH_SIG_URL=`echo $sig_result | jq -r '.browser_download_url'` > + > "https://uploads.github.com/repos/$GH_REPO/$PROJECT/releases/$GH_RELEASE_ID/assets?name=$tarbz2.sig"` > + PGP_URL=`echo $sig_result | jq -r '.browser_download_url'` > > check_json_message "$sig_result" > > @@ -246,16 +262,14 @@ git tag: $tag_name > > RELEASE > > - for tarball in $tarbz2 $targz $tarxz; do > cat <<RELEASE > -$GH_DL_URL > +$DL_URL > MD5: `$MD5SUM $tarball` > SHA1: `$SHA1SUM $tarball` > SHA256: `$SHA256SUM $tarball` > -PGP: $GH_SIG_URL > +PGP: $PGP_URL > > RELEASE > - done > } > > > #------------------------------------------------------------------------------ > @@ -362,7 +376,7 @@ get_section() { > module_url=`echo $module_url | cut -d'/' -f3,4` > else > # The look for mesa, xcb, etc... > - module_url=`echo "$full_module_url" | $GREP -o -e "linuxwacom/.*" -e > "/linuxwacom/.*" -e "Pinglinux/.*" -e "jigpu/.*" -e "skomra/.*"` > + module_url=`echo "$full_module_url" | $GREP -o -e "/linuxwacom/.*"` > if [ $? -eq 0 ]; then > module_url=`echo $module_url | cut -d'/' -f2,3` > else > @@ -621,8 +635,6 @@ process_module() { > fi > fi > > - # --------- Now the tarballs are ready to upload ---------- > - > # Pushing the top commit tag to the remote repository > if [ x$DRY_RUN = x ]; then > echo "Info: pushing tag \"$tag_name\" to remote \"$remote_name\":" > @@ -637,11 +649,13 @@ process_module() { > echo "Info: skipped pushing tag \"$tag_name\" to the remote > repository in dry-run mode." > fi > > - if [ -n "$USER_NAME" ]; then > + if [ -n "$SF_USERNAME" ]; then > release_to_sourceforge > fi > > - release_to_github > + if [ -n "$GH_USERNAME" ]; then > + release_to_github > + fi > > # --------- Generate the announce e-mail ------------------ > # Failing to generate the announce is not considered a fatal error > @@ -668,7 +682,8 @@ process_module() { > fi > generate_announce > "$tar_name.announce" > echo "Info: [ANNOUNCE] template generated in \"$tar_name.announce\" > file." > - echo " Please pgp sign and send it." > + echo " Please edit the .announce file to add a description of > what's interesting and then" > + echo " pgp sign and send it." > > # --------- Update the "body" text of the Github release with the > .announce file ----------------- > > @@ -682,10 +697,10 @@ process_module() { > "body": %s, > "draft": false, > "prerelease": false}' "$tar_name" "$tar_name" > "$release_descr") > - create_result=`curl -s -X PATCH --data "$api_json" -u $GH_USERNAME > https://api.github.com/repos/$GH_REPO/input-wacom/releases/$GH_RELEASE_ID` > + create_result=`curl -s -X PATCH --data "$api_json" -u $GH_USERNAME > https://api.github.com/repos/$GH_REPO/$PROJECT/releases/$GH_RELEASE_ID` > > check_json_message "$create_result" > - echo "Announcement posted to release at Github." > + echo "Git shortlog posted to the release at Github, please edit the > release to add a description of what's interesting." > fi > > # --------- Successful completion -------------------------- > @@ -733,6 +748,9 @@ HELP > # Choose which make program to use (could be gmake) > MAKE=${MAKE:="make"} > > +# Check if the json parser 'jq' is installed > +check_for_jq > + > # Choose which grep program to use (on Solaris, must be gnu grep) > if [ "x$GREP" = "x" ] ; then > if [ -x /usr/gnu/bin/grep ] ; then > @@ -798,16 +816,18 @@ do > --no-quit) > NO_QUIT=yes > ;; > - # Github username with possible Personal Access Token > + # Github username. Optional. Append colon and Personali > + # Access Token to username if 2FA is enabled on the user > + # account doing the release > --github) > GH_USERNAME=$2 > shift > ;; > - # Username of your fdo account if not configured in ssh > - --user) > + # Sourceforge username. Optional. > + --sourceforge) > check_option_args $1 $2 > shift > - USER_NAME=$1 > + SF_USERNAME=$1 > ;; > --*) > echo "" > @@ -838,9 +858,9 @@ do > shift > done > > -if [ x$GH_USERNAME = x ] ; then > - echo "--github option required" > - exit 1 > +if [[ x$GH_USERNAME = "x" ]] && [[ x$SF_USERNAME = "x" ]] ; then > + echo "At least one of --github or --sourceforge option required"; > + exit 1; > fi > > # If no modules specified (blank cmd line) display help > -- > 2.7.4 > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > Linuxwacom-devel mailing list > Linuxwacom-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel