summaryrefslogtreecommitdiffstats
path: root/update
blob: b8b14cb0cdae76c10e31477dae98d01074a370d8 (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'
	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
	)
	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