123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- #!/bin/sh
- # generic update scripts for updating configs and such
- #
- # Copyright (C) 2014, 2015, 2020, 2021 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 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/>.
- #
- [ "x${DEBUG+set}" = 'xset' ] && set -v
- set -u -e
- projectname="$(cat projectname)"
- ./resources/scripts/misc/versioncheck
- update=./resources/scripts/update
- listmodes() {
- for mode in "${update}"/*; do
- printf '%s\n' "${mode##*/}"
- done
- }
- # Takes exactly one mode as parameter
- listoptions() {
- for option in "${update}"/"${1}"/*; do
- printf '%s\n' "${option##*/}"
- done
- }
- help() {
- cat <<- EOF
- USAGE: ./update <MODE> <OPTION>
- possible values for 'mode':
- $(listmodes)
- Example: ./update coreboot configs
- Example: ./update coreboot configs x60
- Refer to the ${projectname} documentation for more information.
- EOF
- }
- die() {
- printf 'Error: %s\n' "${@}" 1>&2
- exit 1
- }
- if [ $# -lt 1 ]; then
- die "Wrong number of arguments specified. See './update 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
- "${update}"/"${mode}"/"${option}" $@
- done
- ;;
- *)
- if [ -d "${update}"/"${mode}"/ ]; then
- if [ -f "${update}"/"${mode}"/"${option}" ]; then
- "${update}"/"${mode}"/"${option}" $@
- else
- help
- die "Invalid option for '${mode}'. See './update ${mode} list'."
- fi
- else
- help
- die "Invalid mode '${mode}'. See './update help'."
- fi
- esac
- else
- help
- exit 0
- fi
|