diff options
author | P. J. McDermott <pjm@nac.net> | 2013-07-12 11:00:02 (EDT) |
---|---|---|
committer | P. J. McDermott <pjm@nac.net> | 2013-07-12 11:00:02 (EDT) |
commit | c3d3f0c1ac1ef45916b3ff7d32b39f9531f94e51 (patch) | |
tree | adf2f8f7a23acbccd7b9e7e3dec3bce9bf8c05ca /src | |
parent | d434079c95fbd491dd96d4a54bbfe3787716c3e0 (diff) |
Write pro-archman and command handling.
Diffstat (limited to 'src')
-rw-r--r-- | src/local.mk | 5 | ||||
-rw-r--r-- | src/pro-archman.sh | 85 |
2 files changed, 90 insertions, 0 deletions
diff --git a/src/local.mk b/src/local.mk new file mode 100644 index 0000000..c42c66e --- /dev/null +++ b/src/local.mk @@ -0,0 +1,5 @@ +# pro-archman +# src/local.mk + +bin_srcs = \ + src/pro-archman.sh diff --git a/src/pro-archman.sh b/src/pro-archman.sh new file mode 100644 index 0000000..a3824cf --- /dev/null +++ b/src/pro-archman.sh @@ -0,0 +1,85 @@ +#!@@SH@@ +# +# pro-archman +# src/archive-manager.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/>. + +set -u + +# Constant global variables +PKGLIBDIR='@@PKGLIBDIR@@' +PKGLIBCMDDIR='@@PKGLIBCMDDIR@@' +PKGLIBCMD='@@PKGLIBCMD@@' +LF=' +' + +# Global variables +loading_cmd= + +# use() must be defined inline so it can be used to load other modules. +use() +{ + local module default_dir lib_subdir dir + + module="${1}" + + if [ "x${module%/*}" = "x${module}" ]; then + default_dir="${PKGLIBDIR}" + lib_subdir='' + else + case "${module%/*}" in + 'cmd') + loading_cmd="$(printf '%s' "${module##*/}" | \ + tr '[A-Z]' '[a-z]' | \ + tr -C '[a-z0-9_]' '_')" + default_dir="${PKGLIBCMDDIR}" + lib_subdir='cmd' + ;; + esac + fi + + if [ "${ARCHMAN_LIBDIR+set}" = 'set' ]; then + dir="${ARCHMAN_LIBDIR:-.}/${lib_subdir}" + else + dir="${default_dir}" + fi + + if [ -f "${dir}/${module##*/}.sm" ]; then + . "${dir}/${module##*/}.sm" + else + printf 'Failed to load module "%s": %s\n' \ + "${module}" 'no such file or directory' >&2 + exit 2 + fi +} + +use cmd + +main() +{ + load_cmds + + if [ ${#} -lt 1 ]; then + cmd_help_main >&2 + exit 1 + fi + + run_cmd "${@}" +} + +main "${@}" |