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

Reply via email to