Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
4c161aba49 | |||
3ea2e0cd8f | |||
e0cbf58b3c | |||
09c214f939 | |||
e2c6007a65 |
21
run
21
run
@ -208,6 +208,12 @@ __RUN() {
|
|||||||
##########################################
|
##########################################
|
||||||
|
|
||||||
local ENV_REQUIRED=$(__CHECK_ENV_REQUIRED && echo 1 || echo 0)
|
local ENV_REQUIRED=$(__CHECK_ENV_REQUIRED && echo 1 || echo 0)
|
||||||
|
local REQUIRED_ENVIRONMENT_REGEX=$(eval echo '$SCWRYPTS_REQUIRED_ENVIRONMENT_REGEX__'$SCWRYPT_GROUP)
|
||||||
|
|
||||||
|
[ $REQUIRED_ENVIRONMENT_REGEX ] && {
|
||||||
|
[[ $ENV_NAME =~ $REQUIRED_ENVIRONMENT_REGEX ]] \
|
||||||
|
|| FAIL 5 "group '$SCWRYPT_GROUP' requires current environment to match '$REQUIRED_ENVIRONMENT_REGEX' (currently $ENV_NAME)"
|
||||||
|
}
|
||||||
|
|
||||||
[[ $ENV_REQUIRED -eq 1 ]] && {
|
[[ $ENV_REQUIRED -eq 1 ]] && {
|
||||||
[ ! $ENV_NAME ] && ENV_NAME=$(SCWRYPTS__SELECT_ENV)
|
[ ! $ENV_NAME ] && ENV_NAME=$(SCWRYPTS__SELECT_ENV)
|
||||||
@ -215,15 +221,20 @@ __RUN() {
|
|||||||
do
|
do
|
||||||
local ENV_FILE=$(SCWRYPTS__GET_ENV_FILE "$ENV_NAME" "$GROUP")
|
local ENV_FILE=$(SCWRYPTS__GET_ENV_FILE "$ENV_NAME" "$GROUP")
|
||||||
source "$ENV_FILE" || FAIL 5 "missing or invalid environment '$GROUP/$ENV_NAME'"
|
source "$ENV_FILE" || FAIL 5 "missing or invalid environment '$GROUP/$ENV_NAME'"
|
||||||
|
|
||||||
|
for f in $(eval 'echo $SCWRYPTS_STATIC_CONFIG__'$GROUP)
|
||||||
|
do
|
||||||
|
source "$f" || FAIL 5 "invalid static config '$f'"
|
||||||
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
export ENV_NAME
|
export ENV_NAME
|
||||||
}
|
}
|
||||||
|
|
||||||
for f in $(eval 'echo $SCWRYPTS_STATIC_CONFIG__'$SCWRYPT_GROUP)
|
[ $REQUIRED_ENVIRONMENT_REGEX ] && {
|
||||||
do
|
[[ $ENV_NAME =~ $REQUIRED_ENVIRONMENT_REGEX ]] \
|
||||||
source "$f" || FAIL 5 "invalid static config '$f'"
|
|| FAIL 5 "group '$SCWRYPT_GROUP' requires current environment to match '$REQUIRED_ENVIRONMENT_REGEX' (currently $ENV_NAME)"
|
||||||
done
|
}
|
||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
|
|
||||||
@ -316,8 +327,6 @@ __GET_LOGFILE() {
|
|||||||
|| [[ $SCWRYPT_NAME =~ interactive ]] \
|
|| [[ $SCWRYPT_NAME =~ interactive ]] \
|
||||||
&& return 0
|
&& return 0
|
||||||
|
|
||||||
echo 'gets a logfile' >&2
|
|
||||||
|
|
||||||
echo "$SCWRYPTS_LOG_PATH/$(echo $GROUP/$TYPE/$NAME | sed 's/^\.\///; s/\//\%/g').log"
|
echo "$SCWRYPTS_LOG_PATH/$(echo $GROUP/$TYPE/$NAME | sed 's/^\.\///; s/\//\%/g').log"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,6 +43,10 @@ SCWRYPTS__GET_ENV_FILE() {
|
|||||||
SCWRYPTS__GET_ENV_NAMES | grep -q $NAME \
|
SCWRYPTS__GET_ENV_NAMES | grep -q $NAME \
|
||||||
|| { ERROR "no environment '$NAME' exists"; return 1; }
|
|| { ERROR "no environment '$NAME' exists"; return 1; }
|
||||||
|
|
||||||
|
[ -f "$SCWRYPTS_ENV_PATH/$GROUP/$NAME" ] || {
|
||||||
|
mkdir -p "$SCWRYPTS_ENV_PATH/$GROUP"
|
||||||
|
touch "$SCWRYPTS_ENV_PATH/$GROUP/$NAME"
|
||||||
|
}
|
||||||
[ -f "$SCWRYPTS_ENV_PATH/$GROUP/$NAME" ] \
|
[ -f "$SCWRYPTS_ENV_PATH/$GROUP/$NAME" ] \
|
||||||
|| { ERROR "missing environment file for '$GROUP/$NAME'"; return 2; }
|
|| { ERROR "missing environment file for '$GROUP/$NAME'"; return 2; }
|
||||||
}
|
}
|
||||||
@ -60,8 +64,12 @@ SCWRYPTS__GET_ENV_NAMES() {
|
|||||||
ERROR 'environment initialization error'
|
ERROR 'environment initialization error'
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
[ $REQUIRED_ENVIRONMENT_REGEX ] && {
|
||||||
|
ls "$SCWRYPTS_ENV_PATH/scwrypts" | grep "$REQUIRED_ENVIRONMENT_REGEX" | sort -r
|
||||||
|
} || {
|
||||||
ls "$SCWRYPTS_ENV_PATH/scwrypts" | sort -r
|
ls "$SCWRYPTS_ENV_PATH/scwrypts" | sort -r
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SCWRYPTS__INIT_ENVIRONMENTS() {
|
SCWRYPTS__INIT_ENVIRONMENTS() {
|
||||||
[ ! -d "$SCWRYPTS_ENV_PATH" ] && mkdir -p "$SCWRYPTS_ENV_PATH"
|
[ ! -d "$SCWRYPTS_ENV_PATH" ] && mkdir -p "$SCWRYPTS_ENV_PATH"
|
||||||
|
@ -20,14 +20,14 @@ SCWRYPTS__GET_AVAILABLE_SCWRYPTS() {
|
|||||||
GROUP_TYPE=$(eval echo '$SCWRYPTS_TYPE__'$GROUP)
|
GROUP_TYPE=$(eval echo '$SCWRYPTS_TYPE__'$GROUP)
|
||||||
[ $GROUP_TYPE ] && MINDEPTH=1 && GROUP_TYPE="$GROUP_TYPE\\/" || MINDEPTH=2
|
[ $GROUP_TYPE ] && MINDEPTH=1 && GROUP_TYPE="$GROUP_TYPE\\/" || MINDEPTH=2
|
||||||
|
|
||||||
{
|
command -v SCWRYPTS__LIST_AVAILABLE_SCWRYPTS__$GROUP >/dev/null 2>&1 \
|
||||||
cd "$GROUP_PATH"
|
&& LOOKUP=SCWRYPTS__LIST_AVAILABLE_SCWRYPTS__$GROUP \
|
||||||
find . -mindepth $MINDEPTH -type f -executable \
|
|| LOOKUP=SCWRYPTS__LIST_AVAILABLE_SCWRYPTS__scwrypts \
|
||||||
| grep -v '\.git' \
|
|
||||||
| grep -v 'node_modules' \
|
|
||||||
| sed "s/^\\.\\///; s/\\.[^.]*$//; s/^/$GROUP_TYPE/" \
|
|
||||||
| sed "s|\\([^/]*\\)/\(.*\)$|$(printf $__COLOR_RESET)\\2^$(printf $TYPE_COLOR)\\1^$(printf $GROUP_COLOR)$GROUP$(printf $__COLOR_RESET)|" \
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
{
|
||||||
|
$LOOKUP \
|
||||||
|
| sed "s|\\([^/]*\\)/\(.*\)$|$(printf $__COLOR_RESET)\\2^$(printf $TYPE_COLOR)\\1^$(printf $GROUP_COLOR)$GROUP$(printf $__COLOR_RESET)|" \
|
||||||
} &
|
} &
|
||||||
LOOKUP_PIDS+=($!)
|
LOOKUP_PIDS+=($!)
|
||||||
done
|
done
|
||||||
@ -46,6 +46,17 @@ SCWRYPTS__SEPARATE_SCWRYPT_SELECTION() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SCWRYPTS__LIST_AVAILABLE_SCWRYPTS__scwrypts() {
|
||||||
|
# implementation should output lines of the following format:
|
||||||
|
# "${SCWRYPT_TYPE}/${SCWRYPT_NAME}"
|
||||||
|
cd "$GROUP_PATH"
|
||||||
|
find . -mindepth $MINDEPTH -type f -executable \
|
||||||
|
| grep -v '\.git' \
|
||||||
|
| grep -v 'node_modules' \
|
||||||
|
| sed "s/^\\.\\///; s/\\.[^.]*$//; s/^/$GROUP_TYPE/" \
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
SCWRYPTS__GET_RUNSTRING() {
|
SCWRYPTS__GET_RUNSTRING() {
|
||||||
local GROUP_PATH=$(eval echo '$SCWRYPTS_ROOT__'$SCWRYPT_GROUP)
|
local GROUP_PATH=$(eval echo '$SCWRYPTS_ROOT__'$SCWRYPT_GROUP)
|
||||||
local RUNSTRING
|
local RUNSTRING
|
||||||
@ -60,7 +71,7 @@ SCWRYPTS__GET_RUNSTRING() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
typeset -f SCWRYPTS__GET_RUNSTRING__${SCWRYPT_GROUP}__${SCWRYPT_TYPE} >/dev/null 2>&1 && {
|
[ ! $RUNSTRING ] && typeset -f SCWRYPTS__GET_RUNSTRING__${SCWRYPT_GROUP}__${SCWRYPT_TYPE} >/dev/null 2>&1 && {
|
||||||
RUNSTRING=$(SCWRYPTS__GET_RUNSTRING__${SCWRYPT_GROUP}__${SCWRYPT_TYPE})
|
RUNSTRING=$(SCWRYPTS__GET_RUNSTRING__${SCWRYPT_GROUP}__${SCWRYPT_TYPE})
|
||||||
[ ! $RUNSTRING ] && {
|
[ ! $RUNSTRING ] && {
|
||||||
ERROR "SCWRYPTS__GET_RUNSTRING__${SCWRYPT_GROUP}__${SCWRYPT_TYPE} error"
|
ERROR "SCWRYPTS__GET_RUNSTRING__${SCWRYPT_GROUP}__${SCWRYPT_TYPE} error"
|
||||||
@ -68,7 +79,7 @@ SCWRYPTS__GET_RUNSTRING() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
typeset -f SCWRYPTS__GET_RUNSTRING__${SCWRYPT_TYPE} >/dev/null 2>&1 && {
|
[ ! $RUNSTRING ] && typeset -f SCWRYPTS__GET_RUNSTRING__${SCWRYPT_TYPE} >/dev/null 2>&1 && {
|
||||||
RUNSTRING=$(SCWRYPTS__GET_RUNSTRING__${SCWRYPT_TYPE})
|
RUNSTRING=$(SCWRYPTS__GET_RUNSTRING__${SCWRYPT_TYPE})
|
||||||
[ ! $RUNSTRING ] && {
|
[ ! $RUNSTRING ] && {
|
||||||
ERROR "SCWRYPTS__GET_RUNSTRING__${SCWRYPT_TYPE} error"
|
ERROR "SCWRYPTS__GET_RUNSTRING__${SCWRYPT_TYPE} error"
|
||||||
|
@ -128,7 +128,15 @@ FZF() {
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
local SELECTION=$(fzf -i --height=30% --layout=reverse --prompt "$1 : " ${@:2})
|
local FZF_ARGS=()
|
||||||
|
|
||||||
|
FZF_ARGS+=(-i)
|
||||||
|
FZF_ARGS+=(--ansi)
|
||||||
|
FZF_ARGS+=(--bind=ctrl-c:cancel)
|
||||||
|
FZF_ARGS+=(--height=50%)
|
||||||
|
FZF_ARGS+=(--layout=reverse)
|
||||||
|
|
||||||
|
local SELECTION=$(fzf ${FZF_ARGS[@]} --layout=reverse --prompt "$1 : " ${@:2})
|
||||||
PROMPT "$1"
|
PROMPT "$1"
|
||||||
echo $SELECTION >&2
|
echo $SELECTION >&2
|
||||||
echo $SELECTION
|
echo $SELECTION
|
||||||
|
@ -21,6 +21,7 @@ for ENV_FILE in ${ENV_FILES[@]}
|
|||||||
do
|
do
|
||||||
[ ! -f "$ENV_FILE" ] && {
|
[ ! -f "$ENV_FILE" ] && {
|
||||||
STATUS "Creating '$ENV_FILE'..." \
|
STATUS "Creating '$ENV_FILE'..." \
|
||||||
|
&& mkdir -p "$(dirname "$ENV_FILE")" \
|
||||||
&& touch "$ENV_FILE" \
|
&& touch "$ENV_FILE" \
|
||||||
&& ((CREATED+=1)) \
|
&& ((CREATED+=1)) \
|
||||||
&& SUCCESS "created '$ENV_NAME'" \
|
&& SUCCESS "created '$ENV_NAME'" \
|
||||||
|
@ -18,10 +18,18 @@ SETUP_SYMLINK() {
|
|||||||
[ ! $2 ] && FAIL 1 'must provide SOURCE_CONFIG and TARGET_CONFIG'
|
[ ! $2 ] && FAIL 1 'must provide SOURCE_CONFIG and TARGET_CONFIG'
|
||||||
|
|
||||||
local SOURCE_CONFIG="$1"
|
local SOURCE_CONFIG="$1"
|
||||||
[ ! -f "$SOURCE_CONFIG" ] && [ ! -d "$SOURCE_CONFIG" ] && FAIL 2 "no such file or directory '$SOURCE_CONFIG'"
|
|
||||||
|
|
||||||
local TARGET_CONFIG="$HOME/.config/$2"
|
local TARGET_CONFIG="$HOME/.config/$2"
|
||||||
|
|
||||||
|
[ ! -f "$SOURCE_CONFIG" ] && [ ! -d "$SOURCE_CONFIG" ] && [ -f "$TARGET_CONFIG" ] && {
|
||||||
|
INFO 'SOURCE_CONFIG is not tracked; copying from TARGET_CONFIG'
|
||||||
|
mkdir -p "$(dirname "$SOURCE_CONFIG")"
|
||||||
|
cp "$TARGET_CONFIG" "$SOURCE_CONFIG"
|
||||||
|
}
|
||||||
|
[ ! -f "$SOURCE_CONFIG" ] && [ ! -d "$SOURCE_CONFIG" ] && {
|
||||||
|
WARNING "no such file or directory '$SOURCE_CONFIG'"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
[ ! -d $(dirname "$TARGET_CONFIG") ] && mkdir -p $(dirname "$TARGET_CONFIG")
|
[ ! -d $(dirname "$TARGET_CONFIG") ] && mkdir -p $(dirname "$TARGET_CONFIG")
|
||||||
|
|
||||||
[[ $SAFE_SYMLINKS -eq 1 ]] \
|
[[ $SAFE_SYMLINKS -eq 1 ]] \
|
||||||
|
Reference in New Issue
Block a user