mirror of
https://github.com/m-housh/dotfiles.git
synced 2026-02-14 22:22:40 +00:00
feat: Moves local scripts directory. Handles systemd configurations.
This commit is contained in:
98
env/.local/scripts/newx
vendored
Executable file
98
env/.local/scripts/newx
vendored
Executable file
@@ -0,0 +1,98 @@
|
||||
#!/bin/zsh
|
||||
|
||||
# Creates a new executable file.
|
||||
|
||||
declare -a localOpt
|
||||
declare -a functionOpt
|
||||
declare -a shellOpt=("zsh")
|
||||
declare -a helpOpt
|
||||
DEBUG="$(env | grep DEBUG)"
|
||||
|
||||
zparseopts -D -K -- \
|
||||
{l,-local}+:=localOpt \
|
||||
{f,-function}+:=functionOpt \
|
||||
{s,-shell}+=shellOpt \
|
||||
{h,-help}=helpOpt
|
||||
|
||||
shell=${shellOpt[-1]}
|
||||
localPath=${localOpt[-1]}
|
||||
|
||||
#-------------------- Helpers --------------------
|
||||
function usage() {
|
||||
cat << EOF
|
||||
newx: Create new executable (script, function, or local script).
|
||||
|
||||
Typical usage:
|
||||
|
||||
newx foo (creates new script named 'foo')
|
||||
|
||||
Usage: newx [-l <name>] [-f <name>] [-s <shell>]
|
||||
|
||||
-l | --local <name>: Create a script in current directory.
|
||||
-f | --function <name>: Create a function.
|
||||
|
||||
Advanced options:
|
||||
-s | --shell <shell>: Customize the shell for the script.
|
||||
EOF
|
||||
|
||||
}
|
||||
|
||||
function debug_print() {
|
||||
[ -n "$DEBUG" ] \
|
||||
&& echo "DEBUG: $1"
|
||||
}
|
||||
|
||||
function create_script() {
|
||||
|
||||
local script_path="$1"
|
||||
|
||||
debug_print "shell: $shell"
|
||||
debug_print "script-path: $script_path"
|
||||
|
||||
printf "#!/bin/%s\n\n" "${shell}" > "${script_path}"
|
||||
chmod +x "${script_path}"
|
||||
exec "${EDITOR}" +2 "${script_path}"
|
||||
}
|
||||
|
||||
function parse_local_path() {
|
||||
if [ -z "$localPath" ]; then
|
||||
local prefix="${1[1]}${1[2]}"
|
||||
debug_print "prefix: $prefix"
|
||||
[ "$prefix" = "./" ] && localPath="$1"
|
||||
fi
|
||||
}
|
||||
|
||||
#-------------------- Main --------------------
|
||||
|
||||
debug_print "first-arg: $1"
|
||||
|
||||
if [ -n "${helpOpt}" ]; then
|
||||
usage && exit 0
|
||||
fi
|
||||
|
||||
if [ -n "${functionOpt[-1]}" ]; then
|
||||
debug_print "function-opt: $functionOpt"
|
||||
|
||||
[ ! -d "$ZFUNCDIR" ] \
|
||||
&& echo "Function directory not found" \
|
||||
&& return 1
|
||||
|
||||
create_script "$ZFUNCDIR/${functionOpt[-1]}"
|
||||
return 0
|
||||
fi
|
||||
|
||||
parse_local_path "$1"
|
||||
|
||||
if [ -n "$localPath" ]; then
|
||||
debug_print "local: $localPath"
|
||||
create_script "$localPath"
|
||||
return 0
|
||||
fi
|
||||
|
||||
debug_print "scripts: $1"
|
||||
[ ! -d "$SCRIPTS" ] \
|
||||
&& echo "Scripts directory not found. Set the SCRIPTS environment variable." \
|
||||
&& return 1
|
||||
|
||||
create_script "${SCRIPTS}/$1"
|
||||
|
||||
Reference in New Issue
Block a user