Add parameters to use different keys and repos.
authorIvan Alejandro <ivanalejandro0@gmail.com>
Thu, 9 Oct 2014 19:01:10 +0000 (16:01 -0300)
committerIvan Alejandro <ivanalejandro0@gmail.com>
Thu, 9 Oct 2014 19:01:10 +0000 (16:01 -0300)
Now, from the command line you can set the key to use as well as the
repository.
Show at start the value of the parameters to be sure that we set the
options as we needed.
Add the option to use a repo file instead of downloading the latest one,
this is useful for the first time release.

tuf-stuff.sh

index 6a9178e..8aa83ec 100755 (executable)
@@ -35,13 +35,15 @@ cc_normal="${esc}[39m"
 
 show_help() {
 cat << EOF
 
 show_help() {
 cat << EOF
-Usage: ${0##*/} [-h] [-s] [-a (32|64)] -v VERSION
+Usage: ${0##*/} [-h] [-r FILE] [-s] [-a (32|64)] -v VERSION -k KEY_FILE
 Do stuff for version VERSION and arch ARCH.
 
 Do stuff for version VERSION and arch ARCH.
 
-    -h          display this help and exit.
-    -a ARCH     do the tuf stuff for that ARCH, 32 or 64 bits. The default is '64'.
-    -s          run the setup process, create virtualenv and install dependencies.
-    -v VERSION  version to work with. This is a mandatory argument.
+    -h           display this help and exit.
+    -a ARCH      do the tuf stuff for that ARCH, 32 or 64 bits. The default is '64'.
+    -k KEY_FILE  use this key file to sign the release
+    -r FILE      use particular repo/ file to do the tuf stuff. FILE must be a .tar.gz file.
+    -s           run the setup process, create virtualenv and install dependencies.
+    -v VERSION   version to work with. This is a mandatory argument.
 EOF
 }
 
 EOF
 }
 
@@ -50,8 +52,9 @@ get_args() {
     local OPTIND
 
     ARCH="64"
     local OPTIND
 
     ARCH="64"
+    SETUP="NO"
 
 
-    while getopts "hsv:a:" opt; do
+    while getopts "hr:sv:a:k:" opt; do
         case "$opt" in
             h)
                 show_help
         case "$opt" in
             h)
                 show_help
@@ -59,8 +62,12 @@ get_args() {
                 ;;
             v)  VERSION=$OPTARG
                 ;;
                 ;;
             v)  VERSION=$OPTARG
                 ;;
+            r)  REPO=`realpath $OPTARG`
+                ;;
             s)  SETUP='YES'
                 ;;
             s)  SETUP='YES'
                 ;;
+            k)  KEY_FILE=`realpath $OPTARG`
+                ;;
             a)  ARCH=$OPTARG
                 ;;
             '?')
             a)  ARCH=$OPTARG
                 ;;
             '?')
@@ -72,10 +79,24 @@ get_args() {
     shift "$((OPTIND-1))" # Shift off the options and optional --.
 
     if [[ -z $VERSION ]]; then
     shift "$((OPTIND-1))" # Shift off the options and optional --.
 
     if [[ -z $VERSION ]]; then
-        echo 'Missing -v flag'
+        echo 'Error: missing -v flag'
+        show_help
+        exit 1
+    fi
+    if [[ -z $KEY_FILE ]]; then
+        echo 'Error: missing -k flag'
         show_help
         exit 1
     fi
         show_help
         exit 1
     fi
+
+    echo "---------- settings ----------"
+    echo "Arch: $ARCH"
+    echo "Key: $KEY_FILE"
+    echo "Repo: $REPO"
+    echo "Setup: $SETUP"
+    echo "Version: $VERSION"
+    echo "--------------------"
+    read -p "Press <Enter> to continue, <Ctrl>+C to exit. "
 }
 
 # ----------------------------------------
 }
 
 # ----------------------------------------
@@ -88,7 +109,6 @@ do_init(){
     VENVDIR=$WORKDIR/tuf.venv
 
     BITMASK="Bitmask-linux$ARCH-$VERSION"
     VENVDIR=$WORKDIR/tuf.venv
 
     BITMASK="Bitmask-linux$ARCH-$VERSION"
-    KEY="$BASE/tuf_private_key.pem"
     RELEASE=$BASE/../bitmask_client/pkg/tuf/release.py
 
     # Initialize path
     RELEASE=$BASE/../bitmask_client/pkg/tuf/release.py
 
     # Initialize path
@@ -121,10 +141,16 @@ do_tuf_stuff() {
         TUF_ARCH='linux-i386'
     fi
 
         TUF_ARCH='linux-i386'
     fi
 
-    # Download old repo metadata
-    echo "${cc_yellow}-> Downloading metadata files from the old bundle...${cc_normal}"
-    wget --quiet --recursive --no-host-directories --cut-dirs=2 --no-parent --reject "index.html*" https://dl.bitmask.net/tuf/$TUF_ARCH/metadata/
-    mv metadata metadata.staged
+    if [[ -z $REPO ]]; then
+        # Download old repo metadata
+        echo "${cc_yellow}-> Downloading metadata files from the old bundle...${cc_normal}"
+        wget --quiet --recursive --no-host-directories --cut-dirs=2 --no-parent --reject "index.html*" https://dl.bitmask.net/tuf/$TUF_ARCH/metadata/
+        mv metadata metadata.staged
+    else
+        echo "${cc_yellow}-> Extracting metadata files from the repo file...${cc_normal}"
+        # we need that specific folder without the repo/ parent path
+        tar xzf $REPO repo/metadata.staged/ --strip-components=1
+    fi
 
     echo "${cc_yellow}-> Uncompressing bundle and moving to its place...${cc_normal}"
     tar xjf $BASE/$BITMASK.tar.bz2  # fresh bundled bundle
 
     echo "${cc_yellow}-> Uncompressing bundle and moving to its place...${cc_normal}"
     tar xjf $BASE/$BITMASK.tar.bz2  # fresh bundled bundle
@@ -133,7 +159,7 @@ do_tuf_stuff() {
     mv $BITMASK targets
 
     echo "${cc_yellow}-> Doing release magic...${cc_normal}"
     mv $BITMASK targets
 
     echo "${cc_yellow}-> Doing release magic...${cc_normal}"
-    $RELEASE $WORKDIR/repo $KEY
+    $RELEASE $WORKDIR/repo $KEY_FILE
 
     echo "${cc_yellow}-> Creating output file...${cc_normal}"
     cd $WORKDIR
 
     echo "${cc_yellow}-> Creating output file...${cc_normal}"
     cd $WORKDIR
@@ -147,7 +173,7 @@ get_args $@
 
 do_init
 
 
 do_init
 
-if [[ -n $SETUP ]]; then
+if [[ $SETUP == 'YES' ]]; then
     do_setup
 else
     if [[ ! -f $VENVDIR/bin/activate ]]; then
     do_setup
 else
     if [[ ! -f $VENVDIR/bin/activate ]]; then