v3.2.0
===================================================================== --- Changes ------------------------------ - split up environment files per scwrypts group - updated i3/launch-or-show to provide some new options --- Bug Fixes ---------------------------- - utils/io commands like 'STATUS' no longer throw errors '%' characters - fixed ERROR_CHECK function calls to CHECK_ERRORS
This commit is contained in:
@@ -2,11 +2,6 @@ export SCWRYPTS_ROOT__scwrypts="$SCWRYPTS_ROOT"
|
||||
export SCWRYPTS_LIBRARY_ROOT__scwrypts="$SCWRYPTS_ROOT/zsh/lib"
|
||||
export SCWRYPTS_COLOR__scwrypts='\033[0;32m'
|
||||
|
||||
export SCWRYPTS_ENV_PATH__scwrypts="$SCWRYPTS_CONFIG_PATH/scwrypts/env"
|
||||
[ ! -d "$SCWRYPTS_ENV_PATH__scwrypts" ] && mkdir -p "$SCWRYPTS_ENV_PATH__scwrypts"
|
||||
|
||||
export SCWRYPTS_ENV_TEMPLATE__scwrypts="$SCWRYPTS_ROOT__scwrypts/.env.template"
|
||||
export SCWRYPTS_ENV_TEMPLATE_DESCRIPTIONS__scwrypts="$SCWRYPTS_ROOT__scwrypts/.env.template.descriptions"
|
||||
|
||||
export SCWRYPTS_VIRTUALENV_PATH__scwrypts="$SCWRYPTS_DATA_PATH/virtualenv"
|
||||
[ ! -d "$SCWRYPTS_VIRTUALENV_PATH__scwrypts" ] && mkdir -p "$SCWRYPTS_VIRTUALENV_PATH__scwrypts"
|
||||
|
@@ -118,7 +118,16 @@ use() {
|
||||
}
|
||||
|
||||
GET_SCWRYPTS_LIBRARY_ROOT() {
|
||||
eval echo '$SCWRYPTS_LIBRARY_ROOT__'$SCWRYPTS_LIBRARY_GROUP
|
||||
local ROOT
|
||||
|
||||
ROOT=$(eval echo '$SCWRYPTS_LIBRARY_ROOT__'$SCWRYPTS_LIBRARY_GROUP)
|
||||
[ $ROOT ] && echo $ROOT && return 0
|
||||
|
||||
[[ $(eval echo '$SCWRYPTS_TYPE__'$SCWRYPTS_LIBRARY_GROUP) =~ zsh ]] \
|
||||
&& ROOT=$(eval echo '$SCWRYPTS_ROOT__'$SCWRYPTS_LIBRARY_GROUP/lib) \
|
||||
|| ROOT=$(eval echo '$SCWRYPTS_ROOT__'$SCWRYPTS_LIBRARY_GROUP/zsh/lib) \
|
||||
;
|
||||
[ $ROOT ] && echo $ROOT && return 0
|
||||
}
|
||||
|
||||
IS_LOADED() {
|
||||
|
@@ -15,20 +15,43 @@ SCWRYPTS__SELECT_OR_CREATE_ENV() {
|
||||
SCWRYPTS__GET_ENV_NAMES | FZF_TAIL 'select / create an environment'
|
||||
}
|
||||
|
||||
SCWRYPTS__GET_ENV_FILE() {
|
||||
SCWRYPTS__GET_ENV_FILES() {
|
||||
local NAME="$1"
|
||||
|
||||
echo "$SCWRYPTS_ENV_PATH/$NAME"
|
||||
local FILENAMES=$(
|
||||
for GROUP in ${SCWRYPTS_GROUPS[@]}
|
||||
do
|
||||
echo "$SCWRYPTS_ENV_PATH/$GROUP/$NAME"
|
||||
done
|
||||
)
|
||||
|
||||
echo $FILENAMES | grep 'environments/scwrypts/'
|
||||
echo $FILENAMES | grep -v 'environments/scwrypts/' | sort
|
||||
|
||||
SCWRYPTS__GET_ENV_NAMES | grep -q $NAME \
|
||||
|| { ERROR "no environment '$NAME' exists"; return 1; }
|
||||
}
|
||||
|
||||
SCWRYPTS__GET_ENV_FILE() {
|
||||
local NAME="$1"
|
||||
local GROUP="$2"
|
||||
|
||||
[ ! $GROUP ] && { ERROR 'must provide group'; return 1; }
|
||||
|
||||
echo "$SCWRYPTS_ENV_PATH/$GROUP/$NAME"
|
||||
|
||||
SCWRYPTS__GET_ENV_NAMES | grep -q $NAME \
|
||||
|| { ERROR "no environment '$NAME' exists"; return 1; }
|
||||
|
||||
[ -f "$SCWRYPTS_ENV_PATH/$GROUP/$NAME" ] \
|
||||
|| { ERROR "missing environment file for '$GROUP/$NAME'"; return 2; }
|
||||
}
|
||||
|
||||
SCWRYPTS__GET_ENV_TEMPLATE_FILES() {
|
||||
local GROUP
|
||||
for GROUP in ${SCWRYPTS_GROUPS[@]}
|
||||
do
|
||||
eval echo '$SCWRYPTS_ENV_TEMPLATE__'$GROUP
|
||||
eval echo '$SCWRYPTS_ROOT__'$GROUP/.config/env.template
|
||||
done
|
||||
}
|
||||
|
||||
@@ -37,7 +60,7 @@ SCWRYPTS__GET_ENV_NAMES() {
|
||||
ERROR 'environment initialization error'
|
||||
return 1
|
||||
}
|
||||
ls "$SCWRYPTS_ENV_PATH" | sort -r
|
||||
ls "$SCWRYPTS_ENV_PATH/scwrypts" | sort -r
|
||||
}
|
||||
|
||||
SCWRYPTS__INIT_ENVIRONMENTS() {
|
||||
@@ -49,7 +72,11 @@ SCWRYPTS__INIT_ENVIRONMENTS() {
|
||||
local BASIC_ENV
|
||||
for BASIC_ENV in local dev prod
|
||||
do
|
||||
GENERATE_TEMPLATE > "$SCWRYPTS_ENV_PATH/$BASIC_ENV"
|
||||
for GROUP in ${SCWRYPTS_GROUPS[@]}
|
||||
do
|
||||
mkdir -p "$SCWRYPTS_ENV_PATH/$GROUP"
|
||||
GENERATE_TEMPLATE > "$SCWRYPTS_ENV_PATH/$GROUP/$BASIC_ENV"
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
@@ -58,30 +85,28 @@ SCWRYPTS__INIT_ENVIRONMENTS() {
|
||||
_SED() { sed --follow-symlinks $@; }
|
||||
|
||||
GENERATE_TEMPLATE() {
|
||||
echo "#!/bin/zsh"
|
||||
echo '#####################################################################'
|
||||
echo "### scwrypts runtime configuration ##################################"
|
||||
echo '#####################################################################'
|
||||
local FILE GROUP CONTENT
|
||||
local VARIABLE DESCRIPTION
|
||||
for GROUP in ${SCWRYPTS_GROUPS[@]}
|
||||
do
|
||||
FILE=$(eval echo '$SCWRYPTS_ENV_TEMPLATE__'$GROUP)
|
||||
[ ! $GROUP ] && { ERROR 'must provide GROUP'; return 1; }
|
||||
DIVIDER='#####################################################################'
|
||||
HEADER='### scwrypts runtime configuration '
|
||||
[[ GROUP =~ ^scwrypts$ ]] || HEADER="${HEADER}(group '$GROUP') "
|
||||
printf "#!/bin/zsh\n$DIVIDER\n$HEADER%s\n$DIVIDER\n" "${DIVIDER:${#$(echo "$HEADER")}}"
|
||||
|
||||
CONTENT=$(GET_VARIABLE_NAMES "$FILE" | sed 's/^/export /; s/$/=/')
|
||||
local FILE CONTENT
|
||||
local VARIABLE DESCRIPTION
|
||||
FILE=$(eval echo '$SCWRYPTS_ROOT__'$GROUP/.config/env.template)
|
||||
|
||||
while read DESCRIPTION_LINE
|
||||
do
|
||||
VARIABLE=$(echo $DESCRIPTION_LINE | sed 's/ \+| .*$//')
|
||||
DESCRIPTION=$(echo $DESCRIPTION_LINE | sed 's/^.* | //')
|
||||
[ ! $DESCRIPTION ] && continue
|
||||
CONTENT=$(GET_VARIABLE_NAMES "$FILE" | sed 's/^/export /; s/$/=/')
|
||||
|
||||
CONTENT=$(echo "$CONTENT" | sed "/^export $VARIABLE=/i #" | sed "/^export $VARIABLE=/i # $DESCRIPTION")
|
||||
done < <(_SED -n '/^[^ ]\+ \+| /p' "$FILE.descriptions")
|
||||
while read DESCRIPTION_LINE
|
||||
do
|
||||
VARIABLE=$(echo $DESCRIPTION_LINE | sed 's/ \+| .*$//')
|
||||
DESCRIPTION=$(echo $DESCRIPTION_LINE | sed 's/^.* | //')
|
||||
[ ! $DESCRIPTION ] && continue
|
||||
|
||||
echo "$CONTENT" | sed 's/^#$//'
|
||||
echo '\n#####################################################################'
|
||||
done
|
||||
CONTENT=$(echo "$CONTENT" | sed "/^export $VARIABLE=/i #" | sed "/^export $VARIABLE=/i # $DESCRIPTION")
|
||||
done < <(_SED -n '/^[^ ]\+ \+| /p' "$FILE.descriptions")
|
||||
|
||||
echo "$CONTENT" | sed 's/^#$//'
|
||||
}
|
||||
|
||||
GET_VARIABLE_NAMES() {
|
||||
@@ -91,4 +116,3 @@ GET_VARIABLE_NAMES() {
|
||||
| grep -v '__[a-z]\+$' \
|
||||
;
|
||||
}
|
||||
|
||||
|
@@ -16,12 +16,16 @@ SCWRYPTS__GET_AVAILABLE_SCWRYPTS() {
|
||||
do
|
||||
GROUP_PATH=$(eval echo '$SCWRYPTS_ROOT__'$GROUP)
|
||||
GROUP_COLOR=$(eval echo '$SCWRYPTS_COLOR__'$GROUP)
|
||||
|
||||
GROUP_TYPE=$(eval echo '$SCWRYPTS_TYPE__'$GROUP)
|
||||
[ $GROUP_TYPE ] && MINDEPTH=1 && GROUP_TYPE="$GROUP_TYPE\\/" || MINDEPTH=2
|
||||
|
||||
{
|
||||
cd "$GROUP_PATH"
|
||||
find . -mindepth 2 -type f -executable \
|
||||
find . -mindepth $MINDEPTH -type f -executable \
|
||||
| grep -v '\.git' \
|
||||
| grep -v 'node_modules' \
|
||||
| sed "s/^\\.\\///; s/\\.[^.]*$//" \
|
||||
| sed "s/^\\.\\///; s/\\.[^.]*$//; s/^/$GROUP_TYPE/" \
|
||||
| sed "s|\\([^/]*\\)/\(.*\)$|$(printf $__COLOR_RESET)\\2^$(printf $TYPE_COLOR)\\1^$(printf $GROUP_COLOR)$GROUP$(printf $__COLOR_RESET)|" \
|
||||
;
|
||||
} &
|
||||
@@ -43,53 +47,50 @@ SCWRYPTS__SEPARATE_SCWRYPT_SELECTION() {
|
||||
}
|
||||
|
||||
SCWRYPTS__GET_RUNSTRING() {
|
||||
# accepts a selected line from SCWRYPTS__GET_AVAILABLE_SCWRYPTS
|
||||
local NAME="$1"
|
||||
local TYPE="$2"
|
||||
local GROUP="$3"
|
||||
local GROUP_PATH=$(eval echo '$SCWRYPTS_ROOT__'$GROUP)
|
||||
local GROUP_PATH=$(eval echo '$SCWRYPTS_ROOT__'$SCWRYPT_GROUP)
|
||||
local RUNSTRING
|
||||
|
||||
[ $NAME ] && [ $TYPE ] && [ $GROUP ] || {
|
||||
[ $SCWRYPT_NAME ] && [ $SCWRYPT_TYPE ] && [ $SCWRYPT_GROUP ] || {
|
||||
ERROR 'missing required information to get runstring'
|
||||
return 1
|
||||
}
|
||||
|
||||
[ $ENV_REQUIRED ] && [[ $ENV_REQUIRED -eq 1 ]] && [ ! $ENV_NAME ] && {
|
||||
ERROR 'missing required information to get runstring'
|
||||
return 1
|
||||
}
|
||||
|
||||
typeset -f SCWRYPTS__GET_RUNSTRING__${GROUP}__${TYPE} >/dev/null 2>&1 && {
|
||||
RUNSTRING=$(SCWRYPTS__GET_RUNSTRING__${GROUP}__${TYPE})
|
||||
typeset -f SCWRYPTS__GET_RUNSTRING__${SCWRYPT_GROUP}__${SCWRYPT_TYPE} >/dev/null 2>&1 && {
|
||||
RUNSTRING=$(SCWRYPTS__GET_RUNSTRING__${SCWRYPT_GROUP}__${SCWRYPT_TYPE})
|
||||
[ ! $RUNSTRING ] && {
|
||||
ERROR "SCWRYPTS__GET_RUNSTRING__${GROUP}__${TYPE} error"
|
||||
ERROR "SCWRYPTS__GET_RUNSTRING__${SCWRYPT_GROUP}__${SCWRYPT_TYPE} error"
|
||||
return 2
|
||||
}
|
||||
}
|
||||
|
||||
typeset -f SCWRYPTS__GET_RUNSTRING__${TYPE} >/dev/null 2>&1 && {
|
||||
RUNSTRING=$(SCWRYPTS__GET_RUNSTRING__${TYPE})
|
||||
typeset -f SCWRYPTS__GET_RUNSTRING__${SCWRYPT_TYPE} >/dev/null 2>&1 && {
|
||||
RUNSTRING=$(SCWRYPTS__GET_RUNSTRING__${SCWRYPT_TYPE})
|
||||
[ ! $RUNSTRING ] && {
|
||||
ERROR "SCWRYPTS__GET_RUNSTRING__${TYPE} error"
|
||||
ERROR "SCWRYPTS__GET_RUNSTRING__${SCWRYPT_TYPE} error"
|
||||
return 3
|
||||
}
|
||||
}
|
||||
|
||||
[ ! $RUNSTRING ] && {
|
||||
ERROR "type ${TYPE} (group ${GROUP}) has no supported runstring generator"
|
||||
ERROR "type ${SCWRYPT_TYPE} (group ${SCWRYPT_GROUP}) has no supported runstring generator"
|
||||
return 4
|
||||
}
|
||||
|
||||
RUNSTRING="SCWRYPTS_ENV=$ENV_NAME; $RUNSTRING"
|
||||
RUNSTRING="source $SCWRYPTS_ROOT/zsh/lib/import.driver.zsh; $RUNSTRING"
|
||||
|
||||
local _VIRTUALENV=$(eval echo '$SCWRYPTS_VIRTUALENV_PATH__'$GROUP'/$TYPE/bin/activate')
|
||||
local _VIRTUALENV=$(eval echo '$SCWRYPTS_VIRTUALENV_PATH__'$SCWRYPT_GROUP'/$SCWRYPT_TYPE/bin/activate')
|
||||
[ -f $_VIRTUALENV ] && RUNSTRING="source $_VIRTUALENV; $RUNSTRING"
|
||||
|
||||
local G SCWRYPTSENV
|
||||
for G in ${SCWRYPTS__GROUPS[@]}
|
||||
do
|
||||
SCWRYPTSENV=$(eval echo '$SCWRYPTS_ENV_PATH__'$GROUP'/$ENV_NAME')
|
||||
SCWRYPTSENV="$SCWRYPTS_ENV_PATH/$G/$ENV_NAME"
|
||||
[ -f $SCWRYPTSENV ] && RUNSTRING="source $SCWRYPTSENV; $RUNSTRING"
|
||||
done
|
||||
|
||||
@@ -99,7 +100,12 @@ SCWRYPTS__GET_RUNSTRING() {
|
||||
SCWRYPTS__GET_RUNSTRING__zsh() {
|
||||
__CHECK_DEPENDENCY zsh || return 1
|
||||
|
||||
echo "source $GROUP_PATH/$TYPE/$NAME"
|
||||
[ $(eval echo '$SCWRYPTS_TYPE__'$SCWRYPT_GROUP) ] \
|
||||
&& echo "source $GROUP_PATH/$SCWRYPT_NAME" \
|
||||
|| echo "source $GROUP_PATH/$SCWRYPT_TYPE/$SCWRYPT_NAME" \
|
||||
;
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
SCWRYPTS__GET_RUNSTRING__py() {
|
||||
@@ -110,11 +116,11 @@ SCWRYPTS__GET_RUNSTRING__py() {
|
||||
WARNING 'compatibility may vary'
|
||||
}
|
||||
|
||||
echo "cd $GROUP_PATH; python -m $(echo $TYPE/$NAME | sed 's/\//./g; s/\.py$//; s/\.\.//')"
|
||||
echo "cd $GROUP_PATH; python -m $(echo $SCWRYPT_TYPE/$SCWRYPT_NAME | sed 's/\//./g; s/\.py$//; s/\.\.//')"
|
||||
}
|
||||
|
||||
SCWRYPTS__GET_RUNSTRING__zx() {
|
||||
__CHECK_DEPENDENCY zx || return 1
|
||||
|
||||
echo "export FORCE_COLOR=3; cd $GROUP_PATH; ./$TYPE/$NAME.js"
|
||||
echo "export FORCE_COLOR=3; cd $GROUP_PATH; ./$SCWRYPT_TYPE/$SCWRYPT_NAME.js"
|
||||
}
|
||||
|
@@ -16,7 +16,9 @@ PRINT() {
|
||||
shift 1
|
||||
done
|
||||
|
||||
local STYLED_MESSAGE="${COLOR}$({
|
||||
MESSAGE="$(echo "$MESSAGE" | sed 's/%/%%/g')"
|
||||
|
||||
local STYLED_MESSAGE="$({
|
||||
printf "${COLOR}"
|
||||
while IFS='' read line
|
||||
do
|
||||
@@ -26,7 +28,9 @@ PRINT() {
|
||||
|
||||
PREFIX=$(echo $PREFIX | sed 's/./ /g')
|
||||
done <<< $MESSAGE
|
||||
})${__COLOR_RESET}${LAST_LINE_END}"
|
||||
})"
|
||||
STYLED_MESSAGE="${COLOR}$(echo "$STYLED_MESSAGE" | sed 's/%/%%/g')${__COLOR_RESET}${LAST_LINE_END}"
|
||||
|
||||
[[ $STDERR -eq 1 ]] && printf $STYLED_MESSAGE >&2
|
||||
[[ $STDOUT -eq 1 ]] && printf $STYLED_MESSAGE
|
||||
|
||||
|
Reference in New Issue
Block a user