Injection fixes + utils

This commit is contained in:
2026-01-12 19:34:40 -07:00
parent 9d423b64a4
commit e859424677

View File

@@ -86,7 +86,7 @@ get_comment_start() {
ext="${ext##*.}" ext="${ext##*.}"
case $ext in case $ext in
js|rasi) js|rasi|kdl)
comment_start="//" comment_start="//"
;; ;;
@@ -127,6 +127,7 @@ create_theme() {
inject() { inject() {
path=$1 path=$1
dirname="$(dirname "$path")"
parse_scheme parse_scheme
check_scheme_path check_scheme_path
parse_comment_pattern parse_comment_pattern
@@ -135,11 +136,13 @@ inject() {
if [ "$comment_start" == "" ]; then if [ "$comment_start" == "" ]; then
comment_start="#" comment_start="#"
fi fi
cd "$dirname" || exit
awk -v blockstart="${comment_start}START SHCHEMES BLOCK" \ awk -v blockstart="${comment_start}START SHCHEMES BLOCK" \
-v blockend="${comment_start}END SHCHEMES BLOCK" \ -v blockend="${comment_start}END SHCHEMES BLOCK${comment_end}" \
-v commentend="$comment_end" \ -v commentend="$comment_end" \
-v scheme="$scheme" \ -v scheme="$scheme" \
-v shchemes="$shchemes_path" \ -v shchemes="$shchemes_path" \
-v dirname="$dirname" \
-v sq="'" \ -v sq="'" \
-v nl="\n" \ -v nl="\n" \
-F ":" ' -F ":" '
@@ -151,23 +154,24 @@ $1 ~ blockstart {
inblock = 1; inblock = 1;
bi = 0; bi = 0;
command = substr($2, 0, length($2) - length(commentend)) command = substr($2, 0, length($2) - length(commentend))
system("/usr/bin/env bash -c " sq "SCHEME=\"" scheme "\";" command sq); system("cd " dirname " && /usr/bin/env bash -c " sq "SCHEME=\"" scheme "\";" command sq);
next next
} }
$1 == blockend && inblock { $1 == blockend && inblock {
inblock = 0; inblock = 0;
print nl blockend commentend; print nl blockend;
next; next;
} }
ENDFILE { ENDFILE {
if(inblock) { if(inblock) {
print nl blockend commentend; print nl blockend;
for(i=1;i<=bi;i++) { for(i=1;i<=bi;i++) {
print lines[i]; print lines[i];
} }
} }
} }
' "$path" > "$tmp" && mv "$tmp" "$path" ' "$path" > "$tmp" && mv "$tmp" "$path"
cd - || exit
} }
# TODO: multiple format support, check that line actually has multiple fields # TODO: multiple format support, check that line actually has multiple fields
@@ -251,6 +255,13 @@ install_tinted_template() {
rm "$tmp" rm "$tmp"
} }
print_scheme_path() {
parse_scheme
check_scheme_path
printf %s\\n "$scheme_path"
exit
}
manual() { manual() {
man "${shchemes_dir}/doc/shchemes.1" man "${shchemes_dir}/doc/shchemes.1"
} }
@@ -260,6 +271,10 @@ if [ "$method" != "" ]; then
create_theme) create_theme)
create_theme "${args[1]}" create_theme "${args[1]}"
;; ;;
path)
print_scheme_path
;;
inject) inject)
inject "${args[1]}" "${args[2]}" inject "${args[1]}" "${args[2]}"