File: git-pr

package info (click to toggle)
insighttoolkit5 5.4.5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 704,588 kB
  • sloc: cpp: 784,579; ansic: 628,724; xml: 44,704; fortran: 34,250; python: 22,934; sh: 4,078; pascal: 2,636; lisp: 2,158; makefile: 461; yacc: 328; asm: 205; perl: 203; lex: 146; tcl: 132; javascript: 98; csh: 81
file content (56 lines) | stat: -rwxr-xr-x 1,639 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
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
#!/usr/bin/env bash

usage() {
  echo "git pr <pull-request-number>"
}

egrep-q() {
  egrep "$@" >/dev/null 2>/dev/null
}

if [[ "$1" = "-h" || "$1" = "--help" ]] ; then
  usage
  exit 0
fi

have_python3=false
python_exe=python
if type python3 >/dev/null 2>&1; then
  have_python3=true
  python_exe=python3
elif type python >/dev/null 2>&1; then
  if echo $(python --version 2>&1) | egrep-q 'Python 3'; then
    have_python3=true
    python_exe=python
  fi
fi
if [[ $# -lt 1 ]]; then
  if $have_python3 && type curl >/dev/null 2>&1; then
    config="${BASH_SOURCE%/*}/config" &&
    host=$(git config -f "$config" --get github.host || echo "github.com")
    organization_name=$(git config -f "$config" --get github.organization-name)
    repo_name=$(git config -f "$config" --get github.repo-name)
    url="https://api.$host/repos/$organization_name/$repo_name/pulls?sort=updated;direction=desc"
    pr_prompt=$(curl -s "https://api.$host/repos/$organization_name/$repo_name/pulls?sort=updated;direction=desc" \
      | $python_exe -c "import sys, json; res = json.load(sys.stdin); [print(str(pr['number']) + ': ' + str(pr['title'])) for pr in res] if 'pr' in res else sys.exit(1);")
    if [ $? -ne 0 ]; then
      usage
      exit 1
    fi
    echo "$pr_prompt"
    echo ""
    pr_number=$(echo "$pr_prompt" | sed -n -e "s/\([[:alnum:]]\+\).*/\1/p" | tail -n1)
    read -ep "Pull request number? [$pr_number]: " ans &&
    if [ -n "$ans" ]; then
      pr_number="$ans"
    fi
  else
    usage
    exit 1
  fi
else
  pr_number=$1
fi

git fetch -fu ${2:-upstream} refs/pull/$pr_number/head:pr/$pr_number && \
  git checkout pr/$pr_number;