diff options
author | Leah Rowe <leah@libreboot.org> | 2023-05-18 10:41:30 +0100 |
---|---|---|
committer | Leah Rowe <leah@libreboot.org> | 2023-05-18 10:49:47 +0100 |
commit | 34df727c989d78430e5968fc6aeba7a5a108130a (patch) | |
tree | 6204d1803a86a049c3e0469441e6329c941c7aeb | |
parent | 1a062bb62810ba555351a01bb17f74e3beb992a8 (diff) |
build: cleaner coding style
main() on top
top-down logic
reduced indentation
Signed-off-by: Leah Rowe <leah@libreboot.org>
-rwxr-xr-x | build | 123 |
1 files changed, 65 insertions, 58 deletions
@@ -20,29 +20,73 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # -./.gitcheck [ "x${DEBUG+set}" = 'xset' ] && set -v set -u -e projectname="$(cat projectname)" - build=./resources/scripts/build +mode="" +option="" + +main() +{ + if [ $# -lt 1 ]; then + die "Wrong argument count. Run: ./build help" + fi + mode="${1}" + + ./.gitcheck + + if [ "${mode}" != "dependencies" ]; then + ./resources/scripts/misc/versioncheck + fi + if [ "${mode}" = help ]; then + usage + exit 0 + elif [ $# -lt 2 ]; then + usage + exit 0 + fi -listmodes() { - for mode in "${build}"/*; do - printf '%s\n' "${mode##*/}" - done + 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 + "${build}/${mode}/${option}" $@ + done + ;; + *) + if [ ! -d "${build}/${mode}" ]; then + usage + die "Invalid mode '${mode}'. Run: ./build help" + elif [ ! -f "${build}/${mode}/${option}" ]; then + usage + printf "Invalid option for '%s'." ${mode} + die "Run: ./build ${mode} list'." + fi + "${build}/${mode}/${option}" $@ + esac + + ./.gitcheck clean } # Takes exactly one mode as parameter -listoptions() { - for option in "${build}"/"${1}"/*; do - printf '%s\n' "${option##*/}" +listoptions() +{ + for option in "${build}/${1}/"*; do + printf '%s\n' ${option##*/} done } -help() { +usage() +{ cat <<- EOF USAGE: ./build <MODE> <OPTION> @@ -58,54 +102,17 @@ help() { EOF } -die() { - printf 'Error: %s\n' "${@}" 1>&2 - exit 1 +listmodes() +{ + for mode in "${build}"/*; do + printf '%s\n' ${mode##*/} + done } -if [ $# -lt 1 ]; then - die "Wrong argument count. Run: ./build help" -fi - -mode="${1}" - -if [ "${mode}" != "dependencies" ]; then - ./resources/scripts/misc/versioncheck -fi - -[ "${mode}" = help ] && help && exit 0 - -if [ $# -gt 1 ]; then - - 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 - "${build}"/"${mode}"/"${option}" $@ - done - ;; - *) - if [ ! -d "${build}"/"${mode}"/ ]; then - help - die "Invalid mode '${mode}'. Run: ./build help" - fi - if [ -f "${build}"/"${mode}"/"${option}" ]; then - "${build}"/"${mode}"/"${option}" $@ - else - help - printf "Invalid option for '%s'." ${mode} - die "Run: ./build ${mode} list'." - fi - esac -else - help - exit 0 -fi +die() +{ + printf 'Error: %s\n' ${@} 1>&2 + exit 1 +} -./.gitcheck clean +main $@ |