summaryrefslogtreecommitdiffhomepage
path: root/subr/build_args.subr
diff options
context:
space:
mode:
Diffstat (limited to 'subr/build_args.subr')
-rw-r--r--subr/build_args.subr75
1 files changed, 75 insertions, 0 deletions
diff --git a/subr/build_args.subr b/subr/build_args.subr
new file mode 100644
index 00000000..38f10c50
--- /dev/null
+++ b/subr/build_args.subr
@@ -0,0 +1,75 @@
+BUILD_ARGS_SPEC="
+ ARG_IPV4_ONLY:-4
+ ARG_IPV6_ONLY:-6
+ ARCH:arg:-a
+ BUILD:arg:-b
+ ARG_CLEAN:-c
+ ARG_DEBUG_MINIPIX:--debug-minipix
+ ARG_OFFLINE:-N
+ ARG_RELAXED:-R
+ ARG_RESTART:arg:-r
+ ARG_TARBALL:selfarg:-t
+ ARG_TARBALL:selfarg:-t.bz2
+ ARG_TARBALL:selfarg:-t.gz
+ ARG_TARBALL:selfarg:-t.xz
+ ARG_VERBOSE:selfarg:-v
+ ARG_VERBOSE:selfarg:-vv
+ ARG_VERBOSE:selfarg:-vvv
+ ARG_XTRACE:-x";
+
+build_args() {
+ local _spec="${BUILD_ARGS_SPEC}" _spec_arg _found;
+ while [ ${#} -gt 0 ]; do
+ if [ "${1#-}" = "${1}" ]; then
+ break;
+ fi;
+ for _spec_arg in ${_spec}; do
+ case "${_spec_arg}" in
+ *:${1}) case "${_spec_arg#*:}" in
+ arg:*)
+ ex_rtl_set_var_unsafe "${_spec_arg%%:*}" "${2}"; shift; ;;
+ selfarg:*)
+ ex_rtl_set_var_unsafe "${_spec_arg%%:*}" "${1}"; ;;
+ *)
+ ex_rtl_set_var_unsafe "${_spec_arg%%:*}" 1; ;;
+ esac; _found=1; break; ;;
+ *) _found=0; ;;
+ esac;
+ done;
+ if [ "${_found:-0}" -eq 0 ]; then
+ exec cat etc/build.usage;
+ else
+ shift;
+ fi;
+ done;
+ if [ -n "${ARG_TARBALL}" ]; then
+ if [ "${ARG_TARBALL#-t.}" != "${ARG_TARBALL}" ]; then
+ TARBALL_SUFFIX="${ARG_TARBALL#-t.}";
+ else
+ TARBALL_SUFFIX=xz;
+ fi;
+ fi;
+ case "${ARG_VERBOSE}" in
+ -v) ARG_VERBOSE=1; ;;
+ -vv) ARG_VERBOSE=2; ;;
+ -vvv) ARG_VERBOSE=3; ;;
+ esac;
+ if [ "${ARG_XTRACE:-0}" -eq 1 ]; then
+ ARG_VERBOSE=2;
+ fi;
+ if [ -n "${ARG_RESTART}" ]; then
+ if [ "${ARG_RESTART%:*}" != "${ARG_RESTART}" ]; then
+ ARG_RESTART_AT="${ARG_RESTART#*:}"; ARG_RESTART="${ARG_RESTART%:*}";
+ else
+ ARG_RESTART_AT=ALL;
+ fi;
+ ARG_RESTART="$(echo ${ARG_RESTART} | sed "s/,/ /g")";
+ fi;
+ while [ ${#} -gt 0 ]; do
+ case "${1}" in
+ *=*) ex_rtl_set_var_unsafe "${1%%=*}" "${1#*=}"; ;;
+ *) BUILD_TARGETS_META="${BUILD_TARGETS_META:+${BUILD_TARGETS_META} }${1}"; ;;
+ esac; shift; done;
+};
+
+# vim:filetype=sh