diff options
-rwxr-xr-x | modify | 136 |
1 files changed, 72 insertions, 64 deletions
@@ -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 $@ |