1
0
forked from GitHub/quartz
isuckatcode-quartz/action.sh

161 lines
4.3 KiB
Bash

#!/bin/bash
# To fetch and use this script in a GitHub action:
#
# curl -s -S https://raw.githubusercontent.com/saberzero1/quartz-themes/master/action.sh | bash -s -- <THEME_NAME>
RED='\033[0;31m'
YELLOW='\033[1;33m'
GREEN='\033[0;32m'
BLUE='\033[1;34m'
NC='\033[0m'
echo_err() { echo -e "${RED}$1${NC}"; }
echo_warn() { echo -e "${YELLOW}$1${NC}"; }
echo_ok() { echo -e "${GREEN}$1${NC}"; }
echo_info() { echo -e "${BLUE}$1${NC}"; }
THEME_DIR="themes"
QUARTZ_STYLES_DIR="quartz/styles"
if test -f ${QUARTZ_STYLES_DIR}/custom.scss; then
echo_ok "Quartz root succesfully detected..."
THEME_DIR="${QUARTZ_STYLES_DIR}/${THEME_DIR}"
else
echo_warn "Quartz root not detected, checking if we are in the styles directory..."
if test -f custom.scss; then
echo_ok "Styles directory detected..."
else
echo_err "Cannot detect Quartz repository. Are you in the correct working directory?" 1>&2
exit 1
fi
fi
echo -e "Input theme: ${BLUE}$*${NC}"
echo "Parsing input theme..."
# Concat parameters
result=""
for param in "$@"; do
if [ -n "$result" ]; then
result="$result-"
fi
result="$result$param"
done
if "$result" = ""; then
echo_warn "No theme provided, defaulting to Tokyo Night..."
result="tokyo-night"
fi
# Convert to lowercase
THEME=$(echo "$result" | tr '[:upper:]' '[:lower:]')
echo -e "Theme ${BLUE}$*${NC} parsed to $(echo_info ${THEME})"
echo "Validating theme..."
GITHUB_URL_BASE="https://raw.githubusercontent.com/saberzero1/quartz-themes/master/__CONVERTER/"
GITHUB_OUTPUT_DIR="__OUTPUT/"
GITHUB_OVERRIDE_DIR="__OVERRIDES/"
GITHUB_THEME_DIR="${THEME}/"
CSS_INDEX_URL="${GITHUB_URL_BASE}${GITHUB_OUTPUT_DIR}${GITHUB_THEME_DIR}_index.scss"
CSS_FONT_URL="${GITHUB_URL_BASE}${GITHUB_OUTPUT_DIR}${GITHUB_THEME_DIR}_fonts.scss"
CSS_DARK_URL="${GITHUB_URL_BASE}${GITHUB_OUTPUT_DIR}${GITHUB_THEME_DIR}_dark.scss"
CSS_LIGHT_URL="${GITHUB_URL_BASE}${GITHUB_OUTPUT_DIR}${GITHUB_THEME_DIR}_light.scss"
CSS_OVERRIDE_URL="${GITHUB_URL_BASE}${GITHUB_OVERRIDE_DIR}${GITHUB_THEME_DIR}_index.scss"
README_URL="${GITHUB_URL_BASE}${GITHUB_OVERRIDE_DIR}${GITHUB_THEME_DIR}README.md"
PULSE=$(curl -o /dev/null --silent -lw '%{http_code}' "${CSS_INDEX_URL}")
if [ "${PULSE}" = "200" ]; then
echo_ok "Theme '${THEME}' found. Preparing to fetch files..."
else
if [ "${PULSE}" = "404" ]; then
echo_err "Theme '${THEME}' not found. Please check the compatibility list." 1>&2
exit 1
else
echo_err "Something weird happened. If this issue persists, please open an Issue on GitHub." !>&2
exit 1
fi
fi
echo "Cleaning theme directory..."
rm -rf ${THEME_DIR}
echo "Creating theme directory..."
mkdir -p ${THEME_DIR}/overrides
echo "Fetching theme files..."
curl -s -S -o ${THEME_DIR}/_index.scss "${CSS_INDEX_URL}"
curl -s -S -o ${THEME_DIR}/_fonts.scss "${CSS_FONT_URL}"
curl -s -S -o ${THEME_DIR}/_dark.scss "${CSS_DARK_URL}"
curl -s -S -o ${THEME_DIR}/_light.scss "${CSS_LIGHT_URL}"
curl -s -S -o ${THEME_DIR}/overrides/_index.scss "${CSS_OVERRIDE_URL}"
echo "Fetching README file..."
curl -s -S -o ${THEME_DIR}/README.md "${README_URL}"
echo "Checking theme files..."
if test -f ${THEME_DIR}/_index.scss; then
echo_ok "_index.scss exists"
else
echo_err "_index.scss missing" 1>&2
exit 1
fi
if test -f ${THEME_DIR}/_fonts.scss; then
echo_ok "_fonts.scss exists"
else
echo_err "_fonts.scss missing" 1>&2
exit 1
fi
if test -f ${THEME_DIR}/_dark.scss; then
echo_ok "_dark.scss exists"
else
echo_err "_dark.scss missing" 1>&2
exit 1
fi
if test -f ${THEME_DIR}/_light.scss; then
echo_ok "_light.scss exists"
else
echo_err "_light.scss missing" 1>&2
exit 1
fi
if test -f ${THEME_DIR}/overrides/_index.scss; then
echo_ok "overrides/_index.scss exists"
else
echo_err "overrides/_index.scss missing" 1>&2
exit 1
fi
if test -f ${THEME_DIR}/README.md; then
echo_ok "README file exists"
else
echo_warn "README file missing"
fi
echo "Verifying setup..."
if grep -q '^@use "./themes";' ${THEME_DIR}/../custom.scss; then
# Import already present in custom.scss
echo_warn "Theme import line already present in custom.scss. Skipping..."
else
# Add `@use "./themes";` import to custom.scss
sed -ir 's#@use "./base.scss";#@use "./base.scss";\n@use "./themes";#' ${THEME_DIR}/../custom.scss
echo_info "Added import line to custom.scss..."
fi
echo_ok "Finished fetching and applying theme '${THEME}'."