]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
contrib: galaxy fix the array 2052/head
authorSébastien Han <seb@redhat.com>
Fri, 13 Oct 2017 15:09:58 +0000 (17:09 +0200)
committerSébastien Han <seb@redhat.com>
Fri, 13 Oct 2017 15:09:58 +0000 (17:09 +0200)
Fix the array where we build the list of which tag is newer and then
needs to be pushed.

Signed-off-by: Sébastien Han <seb@redhat.com>
contrib/push-roles-to-ansible-galaxy.sh

index 566040efe5f9ff5981c9b55a29c7a52f72b9ab2c..32764374cabefba91f7452e31331c69bc611384d 100755 (executable)
@@ -4,7 +4,6 @@ set -xe
 # VARIABLES
 BASEDIR=$(dirname "$0")
 LOCAL_BRANCH=$(cd $BASEDIR && git rev-parse --abbrev-ref HEAD)
-BRANCHES="master ansible-1.9"
 ROLES="ceph-common ceph-mon ceph-osd ceph-mds ceph-rgw ceph-restapi ceph-agent ceph-fetch-keys ceph-rbd-mirror ceph-client ceph-docker-common ceph-mgr ceph-defaults ceph-config"
 
 
@@ -12,13 +11,13 @@ ROLES="ceph-common ceph-mon ceph-osd ceph-mds ceph-rgw ceph-restapi ceph-agent c
 function goto_basedir {
   TOP_LEVEL=$(cd $BASEDIR && git rev-parse --show-toplevel)
   if [[ "$(pwd)" != "$TOP_LEVEL" ]]; then
-    pushd $TOP_LEVEL
+    pushd "$TOP_LEVEL"
   fi
 }
 
 function check_existing_remote {
-  if ! git remote show $1 &> /dev/null; then
-    git remote add $1 git@github.com:/ceph/ansible-$1.git
+  if ! git remote show "$1" &> /dev/null; then
+    git remote add "$1" git@github.com:/ceph/ansible-"$1".git
   fi
 }
 
@@ -28,7 +27,7 @@ function pull_origin {
 
 function reset_hard_origin {
   # let's bring everything back to normal
-  git checkout $LOCAL_BRANCH
+  git checkout "$LOCAL_BRANCH"
   git fetch origin --prune
   git fetch --tags
   git reset --hard origin/master
@@ -43,23 +42,25 @@ function check_git_status {
     echo ""
     echo "Do you really want to continue?"
     echo "Press ENTER to continue or CTRL C to break"
-    read
+    read -r
   fi
 }
 
 function compare_tags {
   # compare local tags (from https://github.com/ceph/ceph-ansible/) with distant tags (from https://github.com/ceph/ansible-ceph-$ROLE)
-  local tags
-  tags=$(git tag | grep -oE '^v[2-9].[0-9]*.[0-9]*$' | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n)
-  IFS=" " read -r -a tags_array <<< "${tags}"
-  local remote_tags
-  remote_tags=$(git ls-remote --tags $1 | grep -oE 'v[2-9].[0-9]*.[0-9]*$' | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n)
-  IFS=" " read -r -a remote_tags_array <<< "${remote_tags}"
+  local tag_local
+  local tag_remote
+  for tag_local in $(git tag | grep -oE '^v[2-9].[0-9]*.[0-9]*$' | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n); do
+    tags_array+=("$tag_local")
+  done
+  for tag_remote in $(git ls-remote --tags "$1" | grep -oE 'v[2-9].[0-9]*.[0-9]*$' | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n); do
+    remote_tags_array+=("$tag_remote")
+  done
 
   for i in "${tags_array[@]}"; do
     skip=
     for j in "${remote_tags_array[@]}"; do
-      [[ $i == $j ]] && { skip=1; break; }
+      [[ "$i" == "$j" ]] && { skip=1; break; }
     done
     [[ -n $skip ]] || tag_to_apply+=("$i")
   done
@@ -76,27 +77,27 @@ for ROLE in $ROLES; do
   # For readability we use 2 variables with the same content
   # so we always make sure we 'push' to a remote and 'filter' a role
   REMOTE=$ROLE
-  check_existing_remote $REMOTE
+  check_existing_remote "$REMOTE"
   reset_hard_origin
   # First we filter branches by rewriting master with the content of roles/$ROLE
   # this gives us a new commit history
   for BRANCH in $(git branch --list --remotes "origin/stable-*" "origin/master" "origin/ansible-1.9" | cut -d '/' -f2); do
-    git checkout -B $BRANCH origin/$BRANCH
+    git checkout -B "$BRANCH" origin/"$BRANCH"
     # use || true to avoid exiting in case of 'Found nothing to rewrite'
-    git filter-branch -f --prune-empty --subdirectory-filter roles/$ROLE || true
-    git push -f $REMOTE $BRANCH
+    git filter-branch -f --prune-empty --subdirectory-filter roles/"$ROLE" || true
+    git push -f "$REMOTE" "$BRANCH"
   done
   reset_hard_origin
   # then we filter tags starting from version 2.0 and push them
-  compare_tags $ROLE
+  compare_tags "$ROLE"
   if [[ ${#tag_to_apply[@]} == 0 ]]; then
     echo "No new tag to push."
     continue
   fi
   for TAG in "${tag_to_apply[@]}"; do
     # use || true to avoid exiting in case of 'Found nothing to rewrite'
-    git filter-branch -f --prune-empty --subdirectory-filter roles/$ROLE $TAG || true
-    git push -f $REMOTE $TAG
+    git filter-branch -f --prune-empty --subdirectory-filter roles/"$ROLE" "$TAG" || true
+    git push -f "$REMOTE" "$TAG"
     reset_hard_origin
   done
 done