#!@SH@ # # ProteanOS Development Kit # src/prokit.sh # Main program file # # Copyright (C) 2013 Patrick "P. J." McDermott # # 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 . set -u # Constant global variables PACKAGE_NAME='@PACKAGE@' PACKAGE_VERSION='@VERSION@' PKGDATADIR='@pkgdatadir@' PKGDATACMDDIR='@pkgdatacmddir@' # use() must be defined inline so it can be used to load other modules. use() { local module="${1}" local default_dir= local lib_subdir= local dir= if [ "x${module%/*}" = "x${module}" ]; then default_dir="${PKGDATADIR}" lib_subdir='' else case "${module%/*}" in 'cmd') loading_cmd="$(printf '%s' "${module##*/}" | \ tr '[A-Z]' '[a-z]' | \ tr -C '[a-z0-9_]' '_')" default_dir="${PKGDATACMDDIR}" lib_subdir='cmd' ;; esac fi dir="${default_dir}" if [ -f "${dir}/${module##*/}.sm" ]; then . "${dir}/${module##*/}.sm" else printf '%s: Error: Failed to load module "%s": %s\n' \ "${0##*/}" "${module}" 'no such file or directory' >&2 exit 2 fi } use locale use cmd main() { local cmd= load_locale load_cmds cmd="${1}" shift run_cmd "${cmd}" "${@}" return ${?} } main "${@}"