get-rc-branches.sh 1.47 KB
Newer Older
1 2 3 4 5 6 7 8 9
#!/bin/bash

usage() {

  prog=$(basename "$0")
  cat<<EOF

  This will clone a repo and look for release
  candidate branches that will be returned as
Han Su Kim committed
10
  a sorted list in json to be
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
  parsed by the dynamic choice jenkins plugin

  Usage: $prog
            -v    add verbosity (set -x)
            -n    echo what will be done
            -h    this
            -r    repo to look in
            -f    filter string for branch list

  Example: $prog -r https://github.com/edx/edx-platform -f "rc/"
EOF
}

while getopts "vnhr:f:" opt; do
  case $opt in
    v)
      set -x
      shift
      ;;
    h)
      usage
      exit 0
      ;;
    n)
      noop="echo Would have run: "
      shift
      ;;
    r)
      repo=$OPTARG
      ;;
    f)
      filter=$OPTARG
      ;;
  esac
done

if [[ -z $repo || -z $filter ]]; then
    echo  'Need to specify a filter and a repo'
    usage
    exit 1
fi

repo_basename=$(basename "$repo")
cd /var/tmp

if [[ ! -d $repo_basename ]]; then
57
    $noop git clone "$repo" "$repo_basename" --mirror > /dev/null 2>&1
58 59
else
    $noop cd "/var/tmp/$repo_basename"
60
    $noop git fetch > /dev/null > /dev/null 2>&1
61 62 63 64
fi

$noop cd "/var/tmp/$repo_basename"
if [[ -z $noop ]]; then
65
    for branch in $(git branch -a | sort -r | tr -d ' ' | grep -E "$filter" ); do
66
        echo "origin/${branch}"
67
    done
68 69 70
    for tag in $(git tag -l | sort -r | tr -d ' ' | grep -E "$filter"); do
        echo "$tag"
    done
Han Su Kim committed
71 72
else
    echo "Would have checked for branches or tags using filter $filter"
73
fi