File: gh-man.sh

package info (click to toggle)
mpich 4.3.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 101,184 kB
  • sloc: ansic: 1,040,629; cpp: 82,270; javascript: 40,763; perl: 27,933; python: 16,041; sh: 14,676; xml: 14,418; f90: 12,916; makefile: 9,270; fortran: 8,046; java: 4,635; asm: 324; ruby: 103; awk: 27; lisp: 19; php: 8; sed: 4
file content (98 lines) | stat: -rwxr-xr-x 2,502 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/bin/bash

set -euxo pipefail

# Only do anything meaningful in the main ofiwg/libfabric repo.  If
# we're not in that repo, then don't do anything because it confuses
# people who fork the libfabric repo if GH Man Page Updater commits
# show up in their fork with different git hashes than the GH Man
# Page Updater commits on the ofiwg/libfabric repo.
if test -n "$REPO"; then
    first=`echo $REPO | cut -d/ -f1`
    second=`echo $REPO | cut -d/ -f2`

    if test "$first" != "ofiwg" -o "$second" != "libfabric"; then
        cat <<EOF

The GH Man Page Updater is contractually obligated to only operate on
the ofiwg/libfabric repository.

Exiting without doing anything.

EOF
        exit 0
    fi
fi

if test "$BASE_REF" != "main"; then
        echo "Not the main branch -- nothing to do!"
    exit 0
fi

git config --global user.name "OFIWG Bot"
git config --global user.email "ofiwg@lists.openfabrics.org"

mkdir tmp && cp man/*.md tmp/

branch_name=pr/update-gh-man-pages
git fetch origin gh-pages
git checkout gh-pages
git checkout -b $branch_name
cp tmp/*.md main/man/
git add main/man/*.md

set +e
git commit -as -m 'Update GH man pages'
st=$?
set -e

if test $st -ne 0; then
    echo "Nothing to commit -- nothing to do!"
    exit 0
fi

# Yes, we committed something.  Push the branch and make a PR.
# Extract the PR number.
git push --set-upstream origin $branch_name
url=`gh pr create --base gh-pages --title 'Update GH man pages' --body ''`
pr_num=`echo $url | cut -d/ -f7`

# Wait for the required "DCO" CI to complete
i=0
sleep_time=5
max_seconds=300
i_max=`expr $max_seconds / $sleep_time`

echo "Waiting up to $max_seconds seconds for DCO CI to complete..."
while test $i -lt $i_max; do
    date
    set +e
    status=`gh pr checks | egrep '^DCO' | awk '{ print $2 }'`
    set -e
    if test "$status" = "pass"; then
        echo "DCO CI is complete!"
        break
    fi
    sleep $sleep_time
    i=`expr $i + 1`
done

status=0
if test $i -lt $i_max; then
    # rebase the commit onto the base branch
    gh pr merge $pr_num -r

    # command to do it by hand when "hub" was used which didn't have command
    # to merge a PR. keep it here for reference.
    #curl \
    #    -XPUT \
    #    -H "Authorization: token $GITHUB_TOKEN" \
    #    https://api.github.com/repos/$GITHUB_REPOSITORY/pulls/$pr_num/merge
else
    echo "Sad panda; DCO CI didn't complete -- did not merge $url"
    status=1
fi

# Delete the remote branch
git push origin --delete $branch_name
exit $status