diff options
author | P. J. McDermott <pjm@nac.net> | 2013-10-23 13:16:01 (EDT) |
---|---|---|
committer | P. J. McDermott <pjm@nac.net> | 2013-10-23 13:16:01 (EDT) |
commit | 8b3d56c151552a12d5dec7ecd0928b423dd887f7 (patch) | |
tree | 3883229a98460502f0f4105a0af05898b6394192 | |
parent | e38c8bc4008b8ba46e2bd112fc661e458584ea40 (diff) |
prokit: Implement.
-rw-r--r-- | src/prokit.sh | 81 |
1 files changed, 80 insertions, 1 deletions
diff --git a/src/prokit.sh b/src/prokit.sh index 45e0735..d86803d 100644 --- a/src/prokit.sh +++ b/src/prokit.sh @@ -1,3 +1,82 @@ #!@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 <http://www.gnu.org/licenses/>. -printf 'Hello, world!\n' +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 "${@}" |