summaryrefslogtreecommitdiff
path: root/modify
diff options
context:
space:
mode:
Diffstat (limited to 'modify')
-rwxr-xr-xmodify136
1 files changed, 72 insertions, 64 deletions
diff --git a/modify b/modify
index af1786e3..b54d92aa 100755
--- a/modify
+++ b/modify
@@ -2,46 +2,85 @@
# generic scripts for modifying configs and such
#
-# Copyright (C) 2014, 2015, 2020, 2021 Leah Rowe <info@minifree.org>
+# Copyright (C) 2014,2015,2020,2021,2023 Leah Rowe <info@minifree.org>
# Copyright (C) 2015 Patrick "P. J." McDermott <pj@pehjota.net>
# Copyright (C) 2015, 2016 Klemens Nanni <contact@autoboot.org>
#
-# 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 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.
+# 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/>.
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
[ "x${DEBUG+set}" = 'xset' ] && set -v
set -u -e
projectname="$(cat projectname)"
-./resources/scripts/misc/versioncheck
-
modify=./resources/scripts/modify
-
-listmodes() {
- for mode in "${modify}"/*; do
- printf '%s\n' "${mode##*/}"
- done
+mode=""
+option=""
+
+main()
+{
+ ./resources/scripts/misc/versioncheck
+
+ if [ $# -lt 1 ]; then
+ die "Wrong argument count. See './modify help'."
+ fi
+ mode="${1}"
+
+ if [ "${mode}" = help ]; then
+ help
+ exit 0
+ elif [ $# -lt 2 ]; then
+ help
+ exit 0
+ fi
+
+ option=${2}
+ shift 2
+
+ case "${option}" in
+ list)
+ printf "Options for mode '%s':\n\n" ${mode}
+ listoptions "${mode}"
+ ;;
+ all)
+ for option in $(listoptions "${mode}"); do
+ "${modify}/${mode}/${option}" $@
+ done
+ ;;
+ *)
+ if [ ! -d "${modify}/${mode}" ]; then
+ help
+ die "Invalid mode: ${mode}. Run: ./modify help"
+ elif [ ! -f "${modify}/${mode}/${option}" ]; then
+ help
+ printf "Invalid option for '%s'\n." ${mode}
+ die "Run: ./modify ${mode} list'"
+ fi
+ "${modify}/${mode}/${option}" $@
+ esac
}
# Takes exactly one mode as parameter
-listoptions() {
- for option in "${modify}"/"${1}"/*; do
- printf '%s\n' "${option##*/}"
+listoptions()
+{
+ for option in "${modify}/${1}/"*; do
+ printf '%s\n' ${option##*/}
done
}
-help() {
+help()
+{
cat <<- EOF
USAGE: ./modify <MODE> <OPTION>
@@ -51,52 +90,21 @@ help() {
Example: ./modify coreboot configs
Example: ./modify coreboot configs x60
- Refer to the ${projectname} documentation for more information.
+ Refer to ${projectname} documentation for more info.
EOF
}
-die() {
+listmodes()
+{
+ for mode in "${modify}/"*; do
+ printf '%s\n' "${mode##*/}"
+ done
+}
+
+die()
+{
printf 'Error: %s\n' "${@}" 1>&2
exit 1
}
-if [ $# -lt 1 ]; then
- die "Wrong number of arguments specified. See './modify help'."
-fi
-
-mode="${1}"
-
-[ "${mode}" = help ] && help && exit 0
-
-if [ $# -gt 1 ]; then
-
- option="${2}"
- shift 2
-
- case "${option}" in
- list)
- printf "Available options for mode '%s':\n\n" "${mode}"
- listoptions "${mode}"
- ;;
- all)
- for option in $(listoptions "${mode}"); do
- "${modify}"/"${mode}"/"${option}" $@
- done
- ;;
- *)
- if [ -d "${modify}"/"${mode}"/ ]; then
- if [ -f "${modify}"/"${mode}"/"${option}" ]; then
- "${modify}"/"${mode}"/"${option}" $@
- else
- help
- die "Invalid option for '${mode}'. See './modify ${mode} list'."
- fi
- else
- help
- die "Invalid mode '${mode}'. See './modify help'."
- fi
- esac
-else
- help
- exit 0
-fi
+main $@