#!@@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 . set -u # Constant global variables PKGLIBDIR='@@PKGLIBDIR@@' PKGLIBCMDDIR='@@PKGLIBCMDDIR@@' PKGLIBCMD='@@PKGLIBCMD@@' LF=' ' # Global variables loading_cmd= archive= # 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 '%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() { load_locale load_cmds # FIXME: Make this a command-line option. archive='archive' # FIXME: Read from conf file. conf_incoming_channel='dev' if [ ${#} -lt 1 ]; then cmd_help_main >&2 exit 1 fi run_cmd "${@}" } main "${@}"