aboutsummaryrefslogtreecommitdiff
path: root/tools/release/helpers.sh
blob: f06df34e9488a640b952c1d6123cec41970cd855 (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
#!/bin/sh -e

die() {
	echo "$@" >&2
	exit 1
}

package_info_load_name() {
	grep AC_INIT configure.ac | perl -ne 's/^.+\(\[([-\w]*)\],.+$/$1/ and print'
}
package_info_load_version() {
	grep AC_INIT configure.ac | perl -ne 's/^.+\[([-\w\.]*)\],$/$1/ and print'
}

package_info_load() {
	[ -f "configure.ac" ] || \
		die "package_info_load: configure.ac is missing"

	PACKAGE_NAME="$(package_info_load_name)"
	# todo: fix this
	PACKAGE_TARNAME="${PACKAGE_NAME}"

	PACKAGE_VERSION="$(package_info_load_version)"

	[ "${PACKAGE_NAME}" -a "${PACKAGE_VERSION}" ] || \
		die "package information is missing from configure script"

	PACKAGE_VERSION_TAGS=
	[ "${PACKAGE_VERSION/-/}" = "${PACKAGE_VERSION}" ] || \
		PACKAGE_VERSION_TAGS="-${PACKAGE_VERSION#*-}"
	PACKAGE_VERSION_BASE="${PACKAGE_VERSION%%-*}"
	PACKAGE_MICRO="${PACKAGE_VERSION_BASE##*.}"
	PACKAGE_MAJOR_AND_MINOR="${PACKAGE_VERSION_BASE%.*}"
	PACKAGE_MAJOR="${PACKAGE_MAJOR_AND_MINOR%.*}"
	PACKAGE_MINOR="${PACKAGE_MAJOR_AND_MINOR#*.}"

	[ "${RELEASE_FINAL}" ] \
		&& RELEASE_VERSION="${PACKAGE_VERSION_BASE}" \
		|| RELEASE_VERSION="${PACKAGE_VERSION/-dev/}"
	PACKAGE_RELEASE="${PACKAGE_TARNAME}-${RELEASE_VERSION}"
	PACKAGE_STRING="${PACKAGE_NAME} ${PACKAGE_VERSION}"
}

package_info_show() {
	cat <<INFO
Name: ${PACKAGE_TARNAME}
Version: ${PACKAGE_VERSION}
Release: ${RELEASE_VERSION}
   Number: ${PACKAGE_VERSION_BASE}
   Series: ${PACKAGE_MAJOR_AND_MINOR}
    Major: ${PACKAGE_MAJOR}
    Minor: ${PACKAGE_MINOR}
    Micro: ${PACKAGE_MICRO}
     Tags: ${PACKAGE_VERSION_TAGS}
   Full: ${PACKAGE_TARNAME}-${PACKAGE_VERSION_BASE}${PACKAGE_VERSION_TAGS}
Release: ${PACKAGE_RELEASE}
   Type: ${RELEASE_TYPE}
INFO
}