summaryrefslogtreecommitdiff
path: root/functions/packageslists.sh
diff options
context:
space:
mode:
Diffstat (limited to 'functions/packageslists.sh')
-rwxr-xr-xfunctions/packageslists.sh97
1 files changed, 97 insertions, 0 deletions
diff --git a/functions/packageslists.sh b/functions/packageslists.sh
new file mode 100755
index 000000000..6ce0c520a
--- /dev/null
+++ b/functions/packageslists.sh
@@ -0,0 +1,97 @@
+#!/bin/sh
+
+# packagelists.sh - expands package list includes
+# Copyright (C) 2006-2009 Daniel Baumann <daniel@debian.org>
+#
+# live-helper comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
+# This is free software, and you are welcome to redistribute it
+# under certain conditions; see COPYING for details.
+
+Expand_packagelist ()
+{
+ _LH_EXPAND_QUEUE="$(basename "${1}")"
+
+ shift
+
+ while [ -n "${_LH_EXPAND_QUEUE}" ]
+ do
+ _LH_LIST_NAME="$(echo ${_LH_EXPAND_QUEUE} | cut -d" " -f1)"
+ _LH_EXPAND_QUEUE="$(echo ${_LH_EXPAND_QUEUE} | cut -s -d" " -f2-)"
+ _LH_LIST_LOCATION=""
+ _LH_NESTED=0
+ _LH_ENABLED=1
+
+ for _LH_SEARCH_PATH in ${@} "${LH_BASE:-/usr/share/live-helper}/lists"
+ do
+ if [ -e "${_LH_SEARCH_PATH}/${_LH_LIST_NAME}" ]
+ then
+ _LH_LIST_LOCATION="${_LH_SEARCH_PATH}/${_LH_LIST_NAME}"
+ break
+ fi
+ done
+
+ if [ -z "${_LH_LIST_LOCATION}" ]
+ then
+ echo "W: Unknown package list '${_LH_LIST_NAME}'" >&2
+ continue
+ fi
+
+ while read _LH_LINE
+ do
+ case "${_LH_LINE}" in
+ \#if\ *)
+ if [ ${_LH_NESTED} -eq 1 ]
+ then
+ echo "E: Nesting conditionals is not supported" >&2
+ exit 1
+ fi
+ _LH_NESTED=1
+
+ _LH_NEEDLE="$(echo "${_LH_LINE}" | cut -d' ' -f3-)"
+ _LH_HAYSTACK="$(eval "echo \$LH_$(echo "${_LH_LINE}" | cut -d' ' -f2)")"
+
+ _LH_ENABLED=0
+ for _LH_NEEDLE_PART in ${_LH_NEEDLE}
+ do
+ for _LH_HAYSTACK_PART in ${_LH_HAYSTACK}
+ do
+ if [ "${_LH_NEEDLE_PART}" = "${_LH_HAYSTACK_PART}" ]
+ then
+ _LH_ENABLED=1
+ fi
+ done
+ done
+ ;;
+
+ \#endif*)
+ _LH_NESTED=0
+ _LH_ENABLED=1
+ ;;
+
+ \#*)
+ if [ ${_LH_ENABLED} -ne 1 ]
+ then
+ continue
+ fi
+
+ # Find includes
+ _LH_INCLUDES="$(echo "${_LH_LINE}" | sed -n \
+ -e 's|^#<include> \([^ ]*\)|\1|gp' \
+ -e 's|^#include <\([^ ]*\)>|\1|gp')"
+
+ # Add to queue
+ _LH_EXPAND_QUEUE="$(echo ${_LH_EXPAND_QUEUE} ${_LH_INCLUDES} |
+ sed -e 's|[ ]*$||' -e 's|^[ ]*||')"
+ ;;
+
+ *)
+ if [ ${_LH_ENABLED} -eq 1 ]
+ then
+ echo "${_LH_LINE}"
+ fi
+ ;;
+
+ esac
+ done < "${_LH_LIST_LOCATION}"
+ done
+}