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:
9
zsh/scwrypts/environment/common.zsh
Normal file
9
zsh/scwrypts/environment/common.zsh
Normal file
@ -0,0 +1,9 @@
|
||||
source ${0:a:h}/../common.zsh
|
||||
|
||||
__CHECK_DEPENDENCIES \
|
||||
;
|
||||
|
||||
__CHECK_ENV_VARS \
|
||||
;
|
||||
|
||||
#####################################################################
|
24
zsh/scwrypts/environment/copy
Executable file
24
zsh/scwrypts/environment/copy
Executable file
@ -0,0 +1,24 @@
|
||||
#!/bin/zsh
|
||||
source ${0:a:h}/common.zsh
|
||||
__CHECK_IMPORTS
|
||||
#####################################################################
|
||||
|
||||
__PROMPT 'choose an environment to copy'
|
||||
TEMPLATE_ENV_NAME=$(__SELECT_ENV)
|
||||
[ ! $TEMPLATE_ENV_NAME ] && __ABORT
|
||||
|
||||
__STATUS "selected '$TEMPLATE_ENV_NAME'"
|
||||
|
||||
__PROMPT 'enter new environment name'
|
||||
ENV_NAME=$(__FZF_HEAD 'new environment')
|
||||
[ ! $ENV_NAME ] && __ABORT
|
||||
|
||||
TEMPLATE_ENV_FILE=$(__GET_ENV_FILE $TEMPLATE_ENV_NAME)
|
||||
ENV_FILE=$(__GET_ENV_FILE $ENV_NAME)
|
||||
|
||||
[ -f "$ENV_FILE" ] && __FAIL 2 "'$ENV_NAME' already exists"
|
||||
|
||||
__STATUS "creating environment"
|
||||
cp "$TEMPLATE_ENV_FILE" "$ENV_FILE" \
|
||||
&& __SUCCESS "created '$ENV_NAME'" \
|
||||
|| __FAIL 3 "unable to create '$ENV_NAME'"
|
24
zsh/scwrypts/environment/delete
Executable file
24
zsh/scwrypts/environment/delete
Executable file
@ -0,0 +1,24 @@
|
||||
#!/bin/zsh
|
||||
source ${0:a:h}/common.zsh
|
||||
__CHECK_IMPORTS
|
||||
#####################################################################
|
||||
|
||||
__PROMPT 'choose an environment to delete'
|
||||
ENV_NAME=$(__SELECT_ENV)
|
||||
[ ! $ENV_NAME ] && __ABORT
|
||||
|
||||
ENV_FILE=$(__GET_ENV_FILE $ENV_NAME)
|
||||
|
||||
__STATUS "preparing to remove '$ENV_NAME'"
|
||||
|
||||
__WARNING
|
||||
__WARNING "the '$ENV_NAME' environment will be removed"
|
||||
__WARNING 'configured options and stored credentials will be lost forever'
|
||||
__WARNING
|
||||
|
||||
__yN 'continue?' || __ABORT
|
||||
|
||||
__STATUS "removing environment"
|
||||
rm "$ENV_FILE" \
|
||||
&& __SUCCESS "removed '$ENV_NAME'" \
|
||||
|| __FAIL 3 "unable to remove '$ENV_FILE'; is it protected?"
|
49
zsh/scwrypts/environment/edit
Executable file
49
zsh/scwrypts/environment/edit
Executable file
@ -0,0 +1,49 @@
|
||||
#!/bin/zsh
|
||||
source ${0:a:h}/common.zsh
|
||||
__CHECK_IMPORTS
|
||||
#####################################################################
|
||||
|
||||
[ $SCWRYPTS_ENV ] \
|
||||
&& ENV_NAME=$SCWRYPTS_ENV \
|
||||
|| ENV_NAME=$(__SELECT_OR_CREATE_ENV)
|
||||
[ ! $ENV_NAME ] && __ABORT
|
||||
|
||||
ENV_FILE=$(__GET_ENV_FILE $ENV_NAME)
|
||||
[ ! -f $ENV_FILE ] && {
|
||||
__STATUS "Creating '$ENV_NAME'..." \
|
||||
&& cp $__ENV_TEMPLATE $ENV_FILE \
|
||||
&& __SUCCESS 'created!' \
|
||||
|| { __ERROR "failed to create '$ENV_FILE'"; exit 1; }
|
||||
}
|
||||
|
||||
__STATUS "opening '$ENV_NAME' for editing..."
|
||||
__EDIT $ENV_FILE
|
||||
sed -i "s/^[A-Z]/export &/; s/^[^#=]\\+$/&=/" $ENV_FILE
|
||||
LC_COLLATE=C sort -uo $ENV_FILE $ENV_FILE
|
||||
|
||||
__STATUS "finished editing; looking for new environment variables"
|
||||
while read line
|
||||
do
|
||||
ENV_VAR=$(echo "$line" | sed 's/=.*$//; s/^export //')
|
||||
grep -q "$ENV_VAR" $__ENV_TEMPLATE || {
|
||||
((NEW_VAR+=1))
|
||||
echo "export $ENV_VAR=" >> $__ENV_TEMPLATE
|
||||
__STATUS "detected new variable '$ENV_VAR'"
|
||||
}
|
||||
done < $ENV_FILE
|
||||
|
||||
[ $NEW_VAR ] && {
|
||||
LC_COLLATE=C sort -uo $__ENV_TEMPLATE $__ENV_TEMPLATE
|
||||
NOPROMPT=1 ${0:a:h}/synchronize
|
||||
git add $__ENV_TEMPLATE \
|
||||
&& __SUCCESS "auto-staged the $(basename $__ENV_TEMPLATE) changes" \
|
||||
|| {
|
||||
__WARNING "unable to stage $(basename $__ENV_TEMPLATE) changes"
|
||||
__REMINDER "don't forget to commit changes to $(basename $__ENV_TEMPLATE)"
|
||||
}
|
||||
true
|
||||
} || {
|
||||
__STATUS 'no new environment variables'
|
||||
}
|
||||
|
||||
__SUCCESS "environment '$ENV_NAME' successfully modified"
|
6
zsh/scwrypts/environment/stage-variables
Executable file
6
zsh/scwrypts/environment/stage-variables
Executable file
@ -0,0 +1,6 @@
|
||||
#!/bin/zsh
|
||||
source ${0:a:h}/common.zsh
|
||||
__CHECK_IMPORTS
|
||||
#####################################################################
|
||||
|
||||
__CHECK_ENV_VARS $@ || NOPROMPT=1 $SCWRYPTS_ROOT/zsh/scwrypts/environment/synchronize
|
46
zsh/scwrypts/environment/synchronize
Executable file
46
zsh/scwrypts/environment/synchronize
Executable file
@ -0,0 +1,46 @@
|
||||
#!/bin/zsh
|
||||
source ${0:a:h}/common.zsh
|
||||
__CHECK_IMPORTS
|
||||
#####################################################################
|
||||
|
||||
[ ! $NOPROMPT ] && {
|
||||
__yN 'change the template before sync?' && __EDIT $__ENV_TEMPLATE
|
||||
sed -i "s/^[A-Z]/export &/; s/^[^#=]\\+$/&=/; s/=.*$/=/" $__ENV_TEMPLATE
|
||||
LC_COLLATE=C sort -uo $__ENV_TEMPLATE $__ENV_TEMPLATE
|
||||
git add $__ENV_TEMPLATE >/dev/null 2>&1
|
||||
}
|
||||
|
||||
ENVIRONMENTS=$(__GET_ENV_FILES)
|
||||
|
||||
__STATUS 'inserting new environment variables...'
|
||||
while read line
|
||||
do
|
||||
for ENV_FILE in $(echo $ENVIRONMENTS)
|
||||
do
|
||||
grep -q "^$line" $ENV_FILE || {
|
||||
echo $line >> $ENV_FILE && __STATUS "added '$line' to '$ENV_FILE'"
|
||||
}
|
||||
done
|
||||
done < <(sed -n '/^./p' $__ENV_TEMPLATE)
|
||||
|
||||
__STATUS 'removing old environment variables...'
|
||||
for ENV_FILE in $(echo $ENVIRONMENTS)
|
||||
do
|
||||
while read line
|
||||
do
|
||||
ENV_VAR=$(echo "$line" | sed 's/=.*/=/')
|
||||
grep -q "$ENV_VAR" $__ENV_TEMPLATE || {
|
||||
sed -i "\\%$ENV_VAR%d" $ENV_FILE
|
||||
__WARNING "removed unwanted '$ENV_VAR' from '$ENV_FILE'"
|
||||
}
|
||||
done < $ENV_FILE
|
||||
done
|
||||
|
||||
for ENV_FILE in $(echo $ENVIRONMENTS)
|
||||
do
|
||||
sed -i "s/^[A-Z]/export &/; s/^[^#=]\\+$/&=/" $ENV_FILE
|
||||
LC_COLLATE=C sort -uo $ENV_FILE $ENV_FILE
|
||||
done
|
||||
LC_COLLATE=C sort -uo $__ENV_TEMPLATE $__ENV_TEMPLATE
|
||||
|
||||
__SUCCESS 'finished sync!'
|
Reference in New Issue
Block a user