summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorP. 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)
commit8b3d56c151552a12d5dec7ecd0928b423dd887f7 (patch)
tree3883229a98460502f0f4105a0af05898b6394192 /src
parente38c8bc4008b8ba46e2bd112fc661e458584ea40 (diff)
prokit: Implement.
Diffstat (limited to 'src')
-rw-r--r--src/prokit.sh81
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 "${@}"