summaryrefslogtreecommitdiffstats
path: root/lib/metadata.sh
blob: 1ed700f55a2205d5dc4a289e00ef3c090a45de21 (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
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
116
117
118
119
120
121
122
123
# opkbuild
# lib/metadata
# Functions for parsing and validating package metadata.
#
# Copyright (C) 2012 Patrick "P. J." McDermott
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

[ -n "${_OB_METADATA_SM}" ] && return 0
_OB_METADATA_SM='true'

ob_use 'metadata/@@METADATA@@'

ob_validate_source_name()
{
	_ob_local _obvsn_name

	if [ ${#} -eq 1 ]; then
		_obvsn_name="${1}"
	else
		_ob_return 125
		return ${?}
	fi

	_ob_metadata_do 'validate_source_name' "${_obvsn_name}"

	_ob_return ${?}
	return ${?}
}

ob_validate_binary_name()
{
	_ob_local _obvbn_name

	if [ ${#} -eq 1 ]; then
		_obvbn_name="${1}"
	else
		_ob_return 125
		return ${?}
	fi

	_ob_metadata_do 'validate_binary_name' "${_obvbn_name}"

	_ob_return ${?}
	return ${?}
}

ob_parse_version()
{
	_ob_local _obpv_opt _obpv_upstreamver_var _obpv_distrev_var _obpv_version

	while getopts 'u:d:' _obpv_opt; do
		case "${_obpv_opt}" in
			u)
				_obpv_upstreamver_var="${OPTARG}"
				if ! _ob_validate_var_name "${_obpv_upstreamver_var}"; then
					_ob_return 125
					return ${?}
				fi
				;;
			d)
				_obpv_distrev_var="${OPTARG}"
				if ! _ob_validate_var_name "${_obpv_distrev_var}"; then
					_ob_return 125
					return ${?}
				fi
				;;
			?)
				_ob_return 125
				return ${?}
				;;
		esac
	done
	shift $(($OPTIND - 1))

	if [ ${#} -eq 1 ]; then
		_obpv_version="${1}"
	else
		_ob_return 125
		return ${?}
	fi

	if ! _ob_metadata_do 'validate_version' "${_obpv_version}"; then
		_ob_return 1
		return ${?}
	fi

	if [ -n "${_obpv_upstreamver_var}" ]; then
		eval ${_obpv_upstreamver_var}="$(_ob_metadata_do 'get_upstreamver' \
			"${_obpv_version}")"
	fi
	if [ -n "${_obpv_distrev_var}" ]; then
		eval ${_obpv_distrev_var}="$(_ob_metadata_do 'get_distrev' \
			"${_obpv_version}")"
	fi

	_ob_return 0
	return ${?}
}

_ob_metadata_do()
{
	_ob_local _obmd_func

	_obmd_func="${1}"
	shift 1

	"_ob_${_obmd_func}_@@METADATA@@" "${@}"

	_ob_return ${?}
	return ${?}
}