summaryrefslogtreecommitdiffstats
path: root/update
blob: 2ab8c02c35e3ac57e21f03ff894f5816928d797c (plain)
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
#!/bin/sh

do_submodules()
{
    set -ex
    echo >&2 "Executing: git submodule sync"
    git submodule sync
    echo >&2 "Executing: git submodule update --init"
    git submodule update --init
}

do_gitmaster()
{
    set -ex
    git submodule foreach 'git checkout master'
    git submodule foreach 'git pull --rebase'
    git submodule foreach 'git remote prune origin'
}

do_releasetag_submodule()
{
    (
        cd "$1"
        version=`git tag | grep "^$2[0-9]" | sort -V | tail -n 1`
        git checkout --detach refs/tags/"$version"
    )
}

do_releasetag()
{
    set -ex
    git submodule foreach 'git fetch'
    git submodule foreach 'git remote prune origin'
    do_releasetag_submodule ffmpeg  'n'
    do_releasetag_submodule fribidi ''
    do_releasetag_submodule libass  ''
    do_releasetag_submodule mpv     'v'
}

if [ x"$1" != x"--skip-selfupdate" ]; then
    (
        set -ex
        git pull --rebase
    )
    exec "$0" --skip-selfupdate "$@"
fi
shift

case "$1" in
    --submodule|'')
        do_submodules
        ;;
    --master)
        do_gitmaster
        ;;
    --release)
        do_releasetag
        ;;
    *)
        echo >&2 "$0 --submodule"
        echo >&2 "$0 --master"
        echo >&2 "$0 --release"
        exit 0
        ;;
esac