adding better variable detection

This commit is contained in:
Lamar Daughma 2022-01-28 11:17:17 +00:00
parent 7b76dabe7b
commit cee2b5753c
1 changed files with 65 additions and 17 deletions

82
yadm
View File

@ -99,7 +99,7 @@ function main() {
# parse command line arguments
local retval=0
internal_commands="^(alt|bootstrap|clean|clone|config|decrypt|encrypt|enter|git-crypt|help|--help|init|introspect|list|perms|transcrypt|upgrade|version|verify|--version)$"
internal_commands="^(alt|bootstrap|clean|clone|config|decrypt|encrypt|enter|echo|git-crypt|help|--help|init|introspect|list|perms|transcrypt|upgrade|version|--version)$"
if [ -z "$*" ] ; then
# no argumnts will result in help()
help
@ -110,6 +110,8 @@ function main() {
YADM_ARGS=()
shift
# commands listed below do not process any of the parameters
if [[ "$YADM_COMMAND" =~ ^(enter|git_crypt)$ ]] ; then
YADM_ARGS=("$@")
@ -144,7 +146,11 @@ function main() {
[ ! -d "$YADM_WORK" ] && error_out "Work tree does not exist: [$YADM_WORK]"
HOOK_COMMAND="$YADM_COMMAND"
invoke_hook "pre"
$YADM_COMMAND "${YADM_ARGS[@]}"
if [[ "$YADM_COMMAND" =~ ^(echo)$ ]]; then
yecho "${YADM_ARGS[@]}"
else
$YADM_COMMAND "${YADM_ARGS[@]}"
fi
else
# any other commands are simply passed through to git
HOOK_COMMAND="$1"
@ -1117,6 +1123,7 @@ Commands:
yadm enter [COMMAND] - Run sub-shell with GIT variables set
yadm git-crypt [OPTIONS] - Run git-crypt commands for the yadm repo
yadm transcrypt [OPTIONS] - Run transcrypt commands for the yadm repo
yadm echo [OPTIONS] - View yadm internal commands and file paths
Files:
\$HOME/.config/yadm/config - yadm's configuration file
@ -1400,8 +1407,7 @@ function version() {
}
function verify() {
#verify internal yadm variables
function print_variables(){
local local_class
local local_system
local local_host
@ -1409,25 +1415,67 @@ function verify() {
local local_distro
set_local_alt_values
while [[ $# -gt 0 ]] ; do
case "$1" in
-o|--os)
echo "$local_system"
echo "Yadm variables:
distro=$local_distro
system=$local_system
hostname=$local_host
user=$local_user
class=$local_class
"
}
function print_paths(){
echo "${2}"
if [[ -z $2 ]] ; then
echo "yadm paths:
repo=$YADM_REPO
yadm_dir=$YADM_DIR
config=$YADM_CONFIG
encrypt=$YADM_ENCRYPT
archive=$YADM_ARCHIVE
"
else
case "$2" in
repo)
echo $YADM_REPO
;;
-d|--distro)
echo "$local_distro"
dir|yadm_dir)
echo $YADM_DIR
;;
-u|--user)
echo "$local_user"
config)
echo $YADM_CONFIG
;;
-h|--host)
echo "$local_host"
encrypt)
echo $YADM_ENCRYPT
;;
-c|--class)
echo "$local_class"
archive)
echo $YADM_ARCHIVE
;;
*)
#do nothing.
echo "$2 is not a valid option"
esac
fi
}
function yecho() {
#verify internal yadm variables
if [[ $# -eq 0 ]] ; then
print_variables
print_paths
fi
while [[ $# -gt 0 ]] ; do
echo "$1"
case "$1" in
vars|variables)
print_variables "${YADM_ARGS[@]}"
;;
paths|path)
print_paths "${YADM_ARGS[@]}"
;;
*)
echo "$1 is not a valid command"
;;
esac
shift