forked from rethinkdb/rethinkdb_rebirth
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgen-version.sh
executable file
·115 lines (98 loc) · 3.23 KB
/
gen-version.sh
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#!/usr/bin/env bash
# Copyright 2018-present RebirthDB
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use
# this file except in compliance with the License. You may obtain a copy of the
# License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
#
# This file incorporates work covered by the following copyright:
#
# Copyright 2010-present, The Linux Foundation, portions copyright Google and
# others and used with permission or subject to their respective license
# agreements.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -euo pipefail
print_usage () {
echo "Usage: $0 [-r|-h]"
echo " -r Print number of revisions since v0.1 tag and exit"
echo " -h Print help (this message)"
echo "Otherwise generate a rebirthdb version number for this source tree"
}
main () {
parse_opts "$@"
root=$(dirname $0)/..
export GIT_DIR="$root/.git"
export GIT_WORK_TREE="$root"
try_files "${VERSION_FILE:-}" "$root/VERSION.OVERRIDE" "./VERSION"
if version=$(git_gen_version); then
try_version "$version"
fi
if ! version=$(release_notes_version); then
version=0.0-internal-unknown-fallback
fi
fallback_version=$version-fallback
echo "$0: Warning: could not determine the version, using the default version '${fallback_version}'" >&2
echo "$fallback_version"
}
lf='
'
try_files () {
for file in "$@"; do
if [[ -n "$file" && -f "$file" ]]; then
try_version "$(cat $file)"
fi
done
}
try_version () {
case "$1" in
# If it is empty or contains newline or space, ignore it
""|*$lf*|*" "*) return;;
# Otherwise strip a leading "v" and return it
*) echo $1 | sed -e 's/^v//'; exit 0;;
esac
}
parse_opts () {
while getopts rsh opt; do
case "$opt" in
r) git rev-list v0.1..HEAD | wc -l; exit 0;;
h) print_usage; exit 0;;
?) print_usage >&2; exit 1;;
esac
done
}
git_gen_version () {
if version=$(git describe --tags --match "v[0-9]*" --abbrev=6 HEAD 2> /dev/null); then
if git_is_dirty; then
echo "$version-dirty"
else
echo "$version"
fi
else
return 1
fi
}
git_is_dirty () {
test -n "$(git status --porcelain)"
}
release_notes_version () {
grep Release "$root/NOTES.md" | egrep -o '[0-9]+(\.[0-9]+)+' | head -n 1
}
main "$@"