diff --git a/TODO b/TODO index 88f69f7..0d6ac0c 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,3 @@ * Remove SASS deprecation warnings * Fix theme name for GTK+2.0 -* Document build_theme.sh * Build the theme into ${CMAKE_BINARY_DIR} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 101ba60..ed8685d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,13 +1,13 @@ add_custom_target( Breeze-dark-gtk ALL - COMMAND ./build_theme.sh BreezeDark ../Breeze-dark-gtk + COMMAND ./build_theme.sh -c BreezeDark -t ../Breeze-dark-gtk WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/src" ) add_custom_target( Breeze-gtk ALL - COMMAND ./build_theme.sh Breeze ../Breeze-gtk + COMMAND ./build_theme.sh -c Breeze -t ../Breeze-gtk COMMAND cp gtk-dark-3.18.css ../Breeze-gtk/gtk-3.18/gtk-dark.css COMMAND cp gtk-dark-3.20.css ../Breeze-gtk/gtk-3.20/gtk-dark.css WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/src" ) diff --git a/src/build_theme.sh b/src/build_theme.sh index d37c2c3..a8f97ab 100755 --- a/src/build_theme.sh +++ b/src/build_theme.sh @@ -1,75 +1,103 @@ #!/bin/sh -# Usage: build_theme.sh [ []] -# If is unset or empty, colors from kdeglobals are used -# If is unset or empty, the theme is installed into ~/.local/share/themes/ set -e # Usage: create_folders create_folders () { for j in gtk-2.0 gtk-3.18 gtk-3.20; do if ! [ -d "$1/$j" ]; then mkdir -p "$1/$j" fi done } # Usage: build_sass build_sass() { if command -v sassc >/dev/null 2>&1; then sassc -I "$3" "$1" "$2" else sass -I "$3" --cache-location /tmp/sass-cache "$1" "$2" fi } # Usage: install_theme -# If is unset empty, install to $HOME/.local/share/themes/$THEME_NAME +# If is unset or empty, install to $HOME/.local/share/themes/$THEME_NAME install_theme () { THEME_INSTALL_TARGET="$3" if [ -z "${THEME_INSTALL_TARGET}" ]; then THEME_INSTALL_TARGET="${HOME}/.local/share/themes/$2" fi mkdir -p "${THEME_INSTALL_TARGET}" for dir in assets gtk-2.0 gtk-3.18 gtk-3.20; do if [ -d "${THEME_INSTALL_TARGET}/$dir" ]; then rm -rf "${THEME_INSTALL_TARGET:?}/$dir" fi mv -f "$1/$dir" "${THEME_INSTALL_TARGET}" done rmdir "$1" } # Usage render_theme render_theme () { THEME_BUILD_DIR="$(mktemp -d)" create_folders "${THEME_BUILD_DIR}" cp -R gtk2/* "${THEME_BUILD_DIR}/gtk-2.0/" python3 render_assets.py -c "$1" -a "${THEME_BUILD_DIR}/assets" \ -g "${THEME_BUILD_DIR}/gtk-2.0" -G "${THEME_BUILD_DIR}" build_sass gtk318/gtk.scss "${THEME_BUILD_DIR}/gtk-3.18/gtk.css" "${THEME_BUILD_DIR}" build_sass gtk320/gtk.scss "${THEME_BUILD_DIR}/gtk-3.20/gtk.css" "${THEME_BUILD_DIR}" rm -f "${THEME_BUILD_DIR}/_global.scss" install_theme "${THEME_BUILD_DIR}" "$2" "$3" } -# TODO : add --help and improve parameter parsing +COLOR_SCHEME="" +INSTALL_TARGET="" +THEME_NAME="" -COLOR_SCHEME="$1" -INSTALL_TARGET="$2" +while [ "$#" -gt 0 ]; do + case "$1" in + -h|--help) + echo "$0: build Breeze theme" + echo "Usage: $0 [-c COLOR_SCHEME] [-t TARGET_DIRECTORY]" + echo + echo "Arguments:" + echo " -h, --help show this help" + echo " -c COLOR_SCHEME use color scheme with name COLOR_SCHEME. If unset or" + echo " empty, the value from ~/.config/kdeglobals is used" + echo " -t TARGET_DIRECTORY the directory to install the color scheme. If unset or" + echo " empty, it is installed into" + echo " ~/.local/share/themes/THEME_NAME" + exit 0 + ;; + -c) + shift + COLOR_SCHEME="$1" + ;; + -t) + shift + INSTALL_TARGET="$1" + ;; + esac + shift +done -if [ -z "$COLOR_SCHEME" ]; then - if [ -f "$HOME/.config/kdeglobals" ]; then - render_theme "$HOME/.config/kdeglobals" Breeze "$INSTALL_TARGET" +if [ -z "${COLOR_SCHEME}" ]; then + THEME_NAME="Breeze" + if [ -f "${HOME}/.config/kdeglobals" ]; then + COLOR_SCHEME="${HOME}/.config/kdeglobals" else - echo "$HOME/.config/kdeglobals not found, using defaults" - render_theme /usr/share/color-schemes/Breeze.colors Breeze "$INSTALL_TARGET" + echo "${HOME}/.config/kdeglobals not found, using defaults" + COLOR_SCHEME="/usr/share/color-schemes/Breeze.colors" fi else - if [ -f "/usr/share/color-schemes/$COLOR_SCHEME.colors" ]; then - render_theme "/usr/share/color-schemes/$COLOR_SCHEME.colors" "$COLOR_SCHEME" "$INSTALL_TARGET" - elif [ -f "$HOME/.local/share/color-schemes/$COLOR_SCHEME.colors" ]; then - render_theme "$HOME/.local/share/color-schemes/$COLOR_SCHEME.colors" "$COLOR_SCHEME" "$INSTALL_TARGET" + THEME_NAME="${COLOR_SCHEME}" + if [ -f "/usr/share/color-schemes/${COLOR_SCHEME}.colors" ]; then + COLOR_SCHEME="/usr/share/color-schemes/${COLOR_SCHEME}.colors" + elif [ -f "${HOME}/.local/share/color-schemes/${COLOR_SCHEME}.colors" ]; then + COLOR_SCHEME="${HOME}/.local/share/color-schemes/${COLOR_SCHEME}.colors" else - echo "colorscheme $COLOR_SCHEME not found" + echo "colorscheme ${COLOR_SCHEME} not found" + exit 1 fi fi + +render_theme "${COLOR_SCHEME}" "${THEME_NAME}" "${INSTALL_TARGET}"