From f7f3aef17e0a4a210e23829c3f40e34e69f6466f Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Thu, 18 May 2023 11:14:17 +0100 Subject: modify: cleaner coding style main() on top top-down logic reduced indentation Signed-off-by: Leah Rowe --- modify | 136 ++++++++++++++++++++++++++++++++++------------------------------- 1 file changed, 72 insertions(+), 64 deletions(-) (limited to 'modify') 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 +# Copyright (C) 2014,2015,2020,2021,2023 Leah Rowe # Copyright (C) 2015 Patrick "P. J." McDermott # Copyright (C) 2015, 2016 Klemens Nanni # -# 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 . +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . # [ "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