core/bin/shcf_cli
#!/bin/bash
##===================================================
##~usage: shcf_cli <cmd> [<cmd_params>]
##~where:
##~ * cmd - Command supported, see below.
##~ * cmd_params - Depends on command. See below.
##~
##~ Command specific parameters:
##~ new requires <project_name>
##~ bin requires <project_name> <script_name>
##~ lib requires <project_name> <lib_name>
##~ spawn requires <project_name> <script_name>
##~ projects <no_parameter>
##~
##~ For usage per command, use 'shcf_cli help <cmd>'
##~
##===================================================
## SHCF_ROOTDIR may have been named SHCF_PLATFORM_ROOTDIR and it won't matter functionality-wise...
## However, this name is better since it denotes that "there is no platform yet" till 'init' is called.
##
SHCF_ROOTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../ && pwd )"
. $SHCF_ROOTDIR/etc/controller.bash.inc
# list of functions to auto-load
#
function_to_autoload="
create_init
case_shift
create_bin
create_help
create_lib
create_namespace
create_new
create_spawn
error_message
usage
create_projects
"
autoload_functions "$function_to_autoload"
# shcf_cli parameters. Parameters 2 & 3 depends on $cmd need,
# hence, the notation. Clarificatory declarations in respective
# command sections.
#
cmd=$(case_shift down $1)
_p2=$2
_p3=$3
# --------------------------------------------------
# tool main()
#
# supported sub-commands:
# new - to create a new shcf-based shell project
# bin - creation of new 'bin' scripts
# lib - creation of skeleton lib to a project
# help - shows the usage per command
# projects - list of projects
# --------------------------------------------------
# Define common usage of shcf_cli parameter(s).
# Override in respective sub-command as needed
#
project=$_p2
new_entity=$_p3
# Now, start selection of sub-commands
#
case $cmd in
"init")
create_init $*
;;
"new")
create_new $project
;;
"lib")
create_lib $project $new_entity
;;
"bin")
create_bin $project $new_entity
;;
"help")
create_help $_p2
;;
"projects")
create_projects
;;
"spawn")
create_spawn $project $new_entity
;;
*)
err_msg="ERROR: Unsupported command ($cmd)"
[[ $# -eq 0 ]] && err_msg='ERROR: input parameter(s) missing!'
echo $err_msg; usage
;;
esac