summaryrefslogtreecommitdiffstats
path: root/opkg
blob: 54e2886df0fcd8624b74c668b2a57a2544561abe (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
#!/bin/sh
#
# opkg - Multiarch support wrapper for opkg
#
# Copyright (C) 2020  Patrick 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/>.

set -eu

main()
{
	local first_arg=
	local arch_arg=
	local arg=

	first_arg=true
	arch_arg=''
	for arg in "${@}"; do
		if ${first_arg}; then
			set --
			if [ -e '/etc/opkg/opkg.conf' ]; then
				set -- "${@}" --conf '/etc/opkg/opkg.conf'
			fi
			set -- "${@}" \
				--add-arch all:100 \
				--add-arch "$(cat /etc/proteanos_arch):50" \
				--add-arch src:100
			first_arg=false
		elif [ -n "${arch_arg}" ]; then
			case "${arg}" in -* | '')
				printf '%s: Option "%s" requires an argument\n'\
					"${0}" "${arch_arg}" 1>&2
				return 1
			esac
			set -- "${@}" --add-arch "${arg}:100"
			arch_arg=''
			continue
		fi
		case "${arg}" in
			-a | --host-architecture)
				arch_arg="${arg}"
				continue
				;;
			-a*)
				arg="${arg#-a}"
				set -- "${@}" --add-arch "${arg}:100"
				continue
				;;
			--host-architecture=*)
				arch_arg="${arg%=*}"
				arg="${arg#--host-architecture=}"
				if [ -z "${arg}" ]; then
					printf '%s: Option "%s" requires '$(: \
						)'an argument\n' \
						"${0}" "${arch_arg}" 1>&2
					return 1
				fi
				set -- "${@}" --add-arch "${arg}:100"
				arch_arg=''
				continue
				;;
		esac
		set -- "${@}" "${arg}"
	done
	if [ -n "${arch_arg}" ]; then
		printf '%s: Option "%s" requires an argument\n' \
			"${0}" "${arch_arg}" 1>&2
		return 1
	fi

	if /usr/bin/opkg-cl "${@}"; then
		return 0
	else
		return ${?}
	fi
}

main "${@}"