aboutsummaryrefslogtreecommitdiff
path: root/builder.sh
diff options
context:
space:
mode:
Diffstat (limited to 'builder.sh')
-rwxr-xr-xbuilder.sh94
1 files changed, 88 insertions, 6 deletions
diff --git a/builder.sh b/builder.sh
index 1fcdd28..e730395 100755
--- a/builder.sh
+++ b/builder.sh
@@ -4,14 +4,36 @@ declare -g configFile="./templates/config.yaml"
declare -g fileName
declare -g headJson
declare -g bodyJson
+declare -g tmpBodyJson
declare -g schemeSystem
declare -g schemeSlug
+declare -g schemeSlugUnderscored
declare -g schemeName
declare -g schemeAuthor
declare -g schemeVariant
+declare -g tokenHex
+declare -g tokenBgr
+declare -g tokenHexR
+declare -g tokenHexG
+declare -g tokenHexB
+declare -g tokenRgbR
+declare -g tokenRgbG
+declare -g tokenRgbB
+declare -g tokenRgb16R
+declare -g tokenRgb16G
+declare -g tokenRgb16B
+declare -g tokenDecR
+declare -g tokenDecG
+declare -g tokenDecB
+
readarray -t schemesFiles < <(find "$HOME"/projects/schemes/base16/ -type f -iname '*.yaml')
+readarray -t necessaryTokensPaletteList < <(grep -oP '\{\{\K[^}]+(?=\}\})' ./templates/body.mustache | awk -F'.' '{print $1}' | sort -u)
+
+function getProperty() {
+ yq -oy "$schemeFile" | yq -o=json -r ".$1"
+}
function createFile() {
# Extract filename entry from config
@@ -26,10 +48,6 @@ function createFile() {
fi
}
-function getProperty() {
- yq -oy "$schemeFile" | yq -o=json -r ".$1"
-}
-
for schemeFile in "${schemesFiles[@]}"; do
schemeName=$(getProperty "name")
schemeAuthor=$(getProperty "author")
@@ -47,10 +65,73 @@ for schemeFile in "${schemesFiles[@]}"; do
--arg schemeSlugUnderscored "$schemeSlugUnderscored" \
--arg schemeSystem "$schemeSystem" \
--arg schemeVariant "$schemeVariant" \
- '{ "scheme-name": $schemeName, "scheme-author": $schemeAuthor, "scheme-slug": $schemeSlug, "scheme-slug-underscored": $schemeSlugUnderscored, "scheme-system": $schemeSystem, "scheme-variant": $schemeVariant, hasVariant: (if $schemeVariant != "" then "true" else "false" end) }'
+ '{
+ "scheme-name": $schemeName,
+ "scheme-author": $schemeAuthor,
+ "scheme-slug": $schemeSlug,
+ "scheme-slug-underscored": $schemeSlugUnderscored,
+ "scheme-system": $schemeSystem,
+ "scheme-variant": $schemeVariant,
+ "hasVariant": (if $schemeVariant != "" then "true" else "false" end)
+ }'
)
- bodyJson=$(getProperty "palette")
+ for tokenName in "${necessaryTokensPaletteList[@]}"; do
+ tokenHex=$(yq -oy "$schemeFile" | yq -o=json -r ".palette.$tokenName")
+ tokenBgr=$(echo "$tokenHex" | rev)
+ tokenHexR=${tokenHex:0:2}
+ tokenHexG=${tokenHex:2:2}
+ tokenHexB=${tokenHex: -2}
+ tokenRgbR=$((16#$tokenHexR))
+ tokenRgbG=$((16#$tokenHexG))
+ tokenRgbB=$((16#$tokenHexB))
+ tokenRgb16R=$(echo "($tokenRgbR / 255) * 65535" | bc -l | awk '{print int($1)}')
+ tokenRgb16G=$(echo "($tokenRgbG / 255) * 65535" | bc -l | awk '{print int($1)}')
+ tokenRgb16B=$(echo "($tokenRgbB / 255) * 65535" | bc -l | awk '{print int($1)}')
+ tokenDecR=$(echo "scale=4; $tokenRgbR / 255" | bc)
+ tokenDecG=$(echo "scale=4; $tokenRgbG / 255" | bc)
+ tokenDecB=$(echo "scale=4; $tokenRgbB / 255" | bc)
+
+ tmpBodyJson=$(
+ jq \
+ --null-input \
+ --arg tokenName "$tokenName" \
+ --arg tokenHex "$tokenHex" \
+ --arg tokenBgr "$tokenBgr" \
+ --arg tokenHexR "$tokenHexR" \
+ --arg tokenHexG "$tokenHexG" \
+ --arg tokenHexB "$tokenHexB" \
+ --arg tokenRgbR "$tokenRgbR" \
+ --arg tokenRgbG "$tokenRgbG" \
+ --arg tokenRgbB "$tokenRgbB" \
+ --arg tokenRgb16R "$tokenRgb16R" \
+ --arg tokenRgb16G "$tokenRgb16G" \
+ --arg tokenRgb16B "$tokenRgb16B" \
+ --arg tokenDecR "$tokenDecR" \
+ --arg tokenDecG "$tokenDecG" \
+ --arg tokenDecB "$tokenDecB" \
+ '{
+ ($tokenName): {
+ "hex": $tokenHex,
+ "bgr": $tokenBgr,
+ "hex-r": $tokenHexR,
+ "hex-g": $tokenHexG,
+ "hex-b": $tokenHexB,
+ "rgb-r": $tokenRgbR,
+ "rgb-g": $tokenRgbG,
+ "rgb-b": $tokenRgbB,
+ "rgb16-r": $tokenRgb16R,
+ "rgb16-g": $tokenRgb16G,
+ "rgb16-b": $tokenRgb16B,
+ "dec-r": $tokenDecR,
+ "dec-g": $tokenDecG,
+ "dec-b": $tokenDecB
+ },
+ }'
+ )
+
+ bodyJson=$(echo "$bodyJson" "$tmpBodyJson" | jq -s 'add')
+ done
createFile
@@ -59,4 +140,5 @@ for schemeFile in "${schemesFiles[@]}"; do
echo >>./"$fileName"
lustache-cli -i ./templates/body.mustache --json-data "$bodyJson" >>./"$fileName"
+
done