fix thing

This commit is contained in:
2026-11-01 15:10:40 -07:00
parent 15b04ddb4a
commit 6d2a1ca47a
4 changed files with 88 additions and 5 deletions
@@ -129,7 +129,7 @@ ${scwryptsmodule}.parse() {
( -l | --list-themes ) parsed=1 ( -l | --list-themes ) parsed=1
dotwryn.config colorscheme.themes dotwryn.config colorscheme.themes
EARLY_ESCAPE_CODE=0 EARLY_ESCAPE_CODE=-1
;; ;;
( --only ) parsed=2 ( --only ) parsed=2
+75
View File
@@ -29,3 +29,78 @@ done
unset DOTWRYN_REQUIRED_VAR unset DOTWRYN_REQUIRED_VAR
##################################################################### #####################################################################
dotwryn.config() {
local value values=()
local set_variable="${2}"
##########################################
case "${1}" in
( colorscheme.path )
value="${DOTWRYN}/config/colorschemes"
mkdir -p -- "${value}"
;;
( colorscheme.active.path )
value="$(dotwryn.config colorscheme.path)/active"
mkdir -p -- "${value}"
;;
( colorscheme.active.source )
value="$(dotwryn.config colorscheme.active.path)/source.yaml"
;;
( colorscheme.active.default-material-references )
value="$(dotwryn.config colorscheme.active.path)/default.yaml"
;;
( colorscheme.themes )
local _theme
while IFS= read -r _theme
do
values+=("${_theme}")
done < <(
cd -- "$(dotwryn.config colorscheme.path)"
find . -mindepth 1 -maxdepth 1 -type f -name \*.yaml \
| sed 's|^./||; s|\.yaml$||' \
)
unset _theme
;;
( colorscheme.supported-apps )
use --group dotwryn desktop/colorscheme/apps \
|| echo.error 'cannot determine supported apps due to module load error' \
|| return 1
local _app
while IFS= read -r _app
do
values+=("${_app}")
done < <(typeset -f + | sed -n 's/^_GENERATE_THEME__//p')
unset _app
;;
esac
##########################################
local value_type=none
[[ "${value}" ]] && value_type=scalar
[[ "${#values[@]}" -gt 0 ]] && value_type=array
case "${value_type}" in
( none ) return 1 ;;
( scalar )
case "${set_variable}" in
( '' ) echo "${value}" ;;
( * ) ${set_variable}="${value}" ;;
esac
;;
( array )
case "${set_variable}" in
( '' ) printf '%s\n' "${values[@]}" ;;
( * ) eval "${set_variable}=(${(q)values[@]})" ;;
esac
esac
}
+1 -1
View File
@@ -43,5 +43,5 @@ MAIN() {
MAIN.parse() { return 0; } MAIN.parse() { return 0; }
MAIN.parse.validate() { MAIN.parse.validate() {
[[ DRY_RUN =~ true ]] && FORWARD_ARGS+=(--dry-run) [[ ${DRY_RUN} =~ true ]] && FORWARD_ARGS+=(--dry-run)
} }
@@ -17,12 +17,20 @@ ${scwryptsmodule}() {
do do
((SYMLINK_COUNT+=1)) ((SYMLINK_COUNT+=1))
SOURCE_CONFIG="$(scwrypts.get-realpath "$(echo ${SYMLINK} | awk '{print $1;}')")" SOURCE_CONFIG="$(scwrypts.get-realpath "$(echo ${SYMLINK} | awk '{print $1;}')")"
TARGET_CONFIG="$(scwrypts.get-realpath "$(echo ${SYMLINK} | awk '{print $2;}')")" TARGET_CONFIG="$(echo ${SYMLINK} | awk '{print $2;}' | envsubst)"
[[ "${TARGET_CONFIG}" ]] \
&& TARGET_CONFIG="$(readlink --canonicalize-missing -- "$(dirname -- "${TARGET_CONFIG}")")/$(basename -- "${TARGET_CONFIG}")"
[ "${SOURCE_CONFIG}" ] && [ "${TARGET_CONFIG}" ] \ [ "${SOURCE_CONFIG}" ] && [ "${TARGET_CONFIG}" ] \
|| echo.error "bad symlink entry : ${SYMLINK}" \ || echo.error "bad symlink entry : ${SYMLINK}" \
|| continue || continue
[ -L "${TARGET_CONFIG}" ] && [[ "$(readlink --canonicalize -- "${TARGET_CONFIG}")" == "${SOURCE_CONFIG}" ]] && {
echo.debug "already linked '$(echo "${TARGET_CONFIG}" | sed "s|${HOME}/||")'"
continue
}
case "${TARGET_CONFIG}" in case "${TARGET_CONFIG}" in
( /etc/* ) ( /etc/* )
case ${SUDO} in case ${SUDO} in
@@ -60,7 +68,7 @@ ${scwryptsmodule}() {
&& [ ! -f "${SOURCE_CONFIG}" ] && [ ! -d "${SOURCE_CONFIG}" ] \ && [ ! -f "${SOURCE_CONFIG}" ] && [ ! -d "${SOURCE_CONFIG}" ] \
&& [ ! -f "${TARGET_CONFIG}" ] && [ ! -d "${TARGET_CONFIG}" ] \ && [ ! -f "${TARGET_CONFIG}" ] && [ ! -d "${TARGET_CONFIG}" ] \
&& echo.status "${SOURCE_CONFIG} is a new file" \ && echo.status "${SOURCE_CONFIG} is a new file" \
&& mkdir -p -- "$(basename -- "${SOURCE_CONFIG}")" \ && mkdir -p -- "$(dirname -- "${SOURCE_CONFIG}")" \
&& touch "${SOURCE_CONFIG}" \ && touch "${SOURCE_CONFIG}" \
; ;
@@ -68,7 +76,7 @@ ${scwryptsmodule}() {
&& [ ! -f "${SOURCE_CONFIG}" ] && [ ! -d "${SOURCE_CONFIG}" ] \ && [ ! -f "${SOURCE_CONFIG}" ] && [ ! -d "${SOURCE_CONFIG}" ] \
&& [ -f "${TARGET_CONFIG}" ] \ && [ -f "${TARGET_CONFIG}" ] \
&& echo.status "${SOURCE_CONFIG} is not tracked yet; copying from ${TARGET_CONFIG}" \ && echo.status "${SOURCE_CONFIG} is not tracked yet; copying from ${TARGET_CONFIG}" \
&& mkdir -p -- "$(basename -- "${SOURCE_CONFIG}")" \ && mkdir -p -- "$(dirname -- "${SOURCE_CONFIG}")" \
&& cp -- "${TARGET_CONFIG}" "${SOURCE_CONFIG}" \ && cp -- "${TARGET_CONFIG}" "${SOURCE_CONFIG}" \
; ;