v1.0.0
===================================================================== Finally decided to port personal scripts into a standalone library. --- Release Notes ------------------------ - added support for python, zsh, and zx scripts - added support for "interactive" scripts which drop the user to a REPL - added support for passing arguments to commands - added support for python/node virtualenv management through scwrypts - added contributing and usage docs - updated zsh plugin to write commands to history - licensed under GPLv3 --- New Scripts -------------------------- zsh/scwrypts ) - configure - environment/copy - environment/delete - environment/edit - environment/synchronize - logs/clear - logs/view zsh ) - aws/ecr/login - aws/efs/mount - aws/efs/unmount - aws/route53/backup - aws/s3/media-sync/pull - aws/s3/media-sync/push python ) - redis/interactive
This commit is contained in:
7
zsh/utils/credits.zsh
Normal file
7
zsh/utils/credits.zsh
Normal file
@ -0,0 +1,7 @@
|
||||
__CREDITS() {
|
||||
local COMMAND="$1"
|
||||
cd $SCWRYPTS_ROOT
|
||||
cat ./**/README.md \
|
||||
| grep 'Generic Badge' \
|
||||
| sed -n "s/.*Generic Badge.*-$COMMAND-.*(/(/p"
|
||||
}
|
45
zsh/utils/dependencies.zsh
Normal file
45
zsh/utils/dependencies.zsh
Normal file
@ -0,0 +1,45 @@
|
||||
__CHECK_DEPENDENCIES() {
|
||||
local DEPENDENCY
|
||||
for DEPENDENCY in $*
|
||||
do
|
||||
__CHECK_DEPENDENCY $DEPENDENCY || ((__DEPENDENCY_ERROR+=1))
|
||||
done
|
||||
|
||||
__CHECK_COREUTILS || ((__DEPENDENCY_ERROR+=$?))
|
||||
|
||||
return $__DEPENDENCY_ERROR
|
||||
}
|
||||
|
||||
__CHECK_DEPENDENCY() {
|
||||
local DEPENDENCY="$1"
|
||||
[ ! $DEPENDENCY ] && return 1
|
||||
|
||||
command -v $DEPENDENCY >/dev/null 2>&1 || {
|
||||
__ERROR "'$1' required but not installed. $(__CREDITS $1)"
|
||||
return 1
|
||||
}
|
||||
}
|
||||
|
||||
__CHECK_COREUTILS() {
|
||||
local COREUTILS=(awk find grep sed)
|
||||
local MISSING_DEPENDENCY_COUNT=0
|
||||
local NON_GNU_DEPENDENCY_COUNT=0
|
||||
|
||||
local UTIL
|
||||
for UTIL in $(echo $COREUTILS)
|
||||
do
|
||||
__CHECK_DEPENDENCY $UTIL || { ((MISSING_DEPENDENCY_COUNT+=1)); continue; }
|
||||
|
||||
$UTIL --version 2>&1 | grep -q 'GNU' || {
|
||||
__WARNING "non-GNU version of $UTIL detected"
|
||||
((NON_GNU_DEPENDENCY_COUNT+=1))
|
||||
}
|
||||
done
|
||||
|
||||
[[ $NON_GNU_DEPENDENCY_COUNT -gt 0 ]] && {
|
||||
__WARNING 'scripts rely on GNU coreutils; functionality may be limited'
|
||||
__IS_MACOS && __REMINDER 'GNU coreutils can be installed and linked through Homebrew'
|
||||
}
|
||||
|
||||
return $MISSING_DEPENDENCY_COUNT
|
||||
}
|
45
zsh/utils/environment.zsh
Normal file
45
zsh/utils/environment.zsh
Normal file
@ -0,0 +1,45 @@
|
||||
__CHECK_ENV_VARS() {
|
||||
local OPTIONAL=0
|
||||
[[ $1 =~ ^--optional$ ]] && { shift 1; OPTIONAL=1; }
|
||||
|
||||
local VAR_NAME
|
||||
for VAR_NAME in $*
|
||||
do
|
||||
__CHECK_ENV_VAR $VAR_NAME $OPTIONAL || ((__ENVIRONMENT_ERROR+=1))
|
||||
done
|
||||
|
||||
return $__ENVIRONMENT_ERROR
|
||||
}
|
||||
|
||||
__CHECK_ENV_VAR() {
|
||||
local NAME="$1"
|
||||
local OPTIONAL="$2"
|
||||
local DEFAULT_VALUE="$3"
|
||||
|
||||
local VALUE=$(eval echo '$'$NAME)
|
||||
[ $VALUE ] && return 0
|
||||
|
||||
local LINE="export $NAME="
|
||||
local TEMPLATE="$SCWRYPTS_ROOT/.template.env"
|
||||
|
||||
grep -q -- "^$LINE" "$TEMPLATE" || {
|
||||
__STATUS 'staging new variable in template'
|
||||
|
||||
echo "$LINE" >> "$TEMPLATE" \
|
||||
&& NOPROMPT=1 $SCWRYPTS_ROOT/zsh/scwrypts/environment/synchronize \
|
||||
&& git add $TEMPLATE >/dev/null 2>&1 \
|
||||
&& __SUCCESS "staged '$NAME'" \
|
||||
|| {
|
||||
__WARNING "failed to stage '$NAME'"
|
||||
__REMINDER "add/commit '$NAME' to template manually"
|
||||
}
|
||||
}
|
||||
|
||||
[ $OPTIONAL ] && {
|
||||
__ERROR "'$NAME' required"
|
||||
return 1
|
||||
} || {
|
||||
[ $DEFAULT_VALUE ] && $NAME="$DEFAULT_VALUE"
|
||||
return 0
|
||||
}
|
||||
}
|
44
zsh/utils/io.zsh
Normal file
44
zsh/utils/io.zsh
Normal file
@ -0,0 +1,44 @@
|
||||
__ERROR() { echo "\\033[1;31mERROR ✖ : $@\\033[0m" >&2; }
|
||||
__SUCCESS() { echo "\\033[1;32mSUCCESS ✔ : $@\\033[0m" >&2; }
|
||||
__WARNING() { echo "\\033[1;33mWARNING : $@\\033[0m" >&2; }
|
||||
__STATUS() { echo "\\033[1;34mSTATUS : $@\\033[0m" >&2; }
|
||||
__REMINDER() { echo "\\033[1;35mREMINDER : $@\\033[0m" >&2; }
|
||||
__PROMPT() {
|
||||
echo "\\033[1;36mPROMPT : $@\\033[0m" >&2
|
||||
printf "\\033[1;36mUSER : \\033[0m" >&2
|
||||
}
|
||||
|
||||
__Yn() {
|
||||
__PROMPT "$@ [Yn]"
|
||||
local Yn; __READ -k Yn; echo
|
||||
[[ $Yn =~ [nN] ]] && return 1 || return 0
|
||||
}
|
||||
|
||||
__yN() {
|
||||
__PROMPT "$@ [yN]"
|
||||
local yN; __READ -k yN; echo
|
||||
[[ $yN =~ [yY] ]] && return 0 || return 1
|
||||
}
|
||||
|
||||
__FAIL() { __ERROR "${@:2}"; exit $1; }
|
||||
|
||||
__ABORT() { __FAIL 69 'user abort'; }
|
||||
|
||||
#####################################################################
|
||||
|
||||
__GETSUDO() {
|
||||
echo "\\033[1;36mPROMPT : checking sudo password...\\033[0m" >&2
|
||||
sudo echo hi >/dev/null 2>&1 </dev/tty \
|
||||
&& __SUCCESS '...authenticated!' \
|
||||
|| { __ERROR 'failed :c'; return 1; }
|
||||
}
|
||||
|
||||
__LESS() { less -R $@ </dev/tty >/dev/tty; }
|
||||
|
||||
__FZF() { fzf -i --height=30% --layout=reverse --prompt "$@ : "; }
|
||||
__FZF_HEAD() { fzf -i --height=30% --layout=reverse --print-query --prompt "$@ : " | head -n1; }
|
||||
__FZF_TAIL() { fzf -i --height=30% --layout=reverse --print-query --prompt "$@ : " | tail -n1; }
|
||||
|
||||
__READ() { read $@ </dev/tty; }
|
||||
|
||||
__EDIT() { $EDITOR $@ </dev/tty >/dev/tty; }
|
12
zsh/utils/os.zsh
Normal file
12
zsh/utils/os.zsh
Normal file
@ -0,0 +1,12 @@
|
||||
__IS_MACOS() { uname -s | grep -q 'Darwin'; }
|
||||
|
||||
__OPEN() {
|
||||
local OPEN=''
|
||||
{
|
||||
command -v xdg-open && OPEN=xdg-open
|
||||
command -v open && OPEN=open
|
||||
} >/dev/null 2>&1
|
||||
|
||||
[ ! $OPEN ] && { __ERROR 'unable to detect default open command (e.g. xdg-open)'; return 1 }
|
||||
$OPEN $@
|
||||
}
|
Reference in New Issue
Block a user