slackbuilds/ap/alacritty-theme/SlackBuild

140 lines
3.5 KiB
Bash
Executable file

#!/bin/bash
# variables
GITHUB_REPO=alacritty/alacritty-theme
VERSION=${VERSION:-trunk} # or VERSION=trunk
BUILD=${BUILD:-3}
TAG=gwh
TMP=/tmp/$TAG
CWD=$(pwd)
PRGNAM=$(basename "$CWD")
PKG=$TMP/pkg-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
ARCH=${ARCH:-$(uname -m)}
REPOSITORY=${REPOSITORY:-/var/cache/SlackBuilds.gwh/$PRGNAM}
PREFIX=${PREFIX:-/usr}
# nettoyage préalable
rm -fr "$PKG" "${TMP:?}/$PRGNAM"
mkdir -p "$PKG"
# mise en place
cd $TMP || exit 1
[ ! -e "$REPOSITORY" ] && git clone https://github.com/${GITHUB_REPO}.git "$REPOSITORY"
cd "$REPOSITORY" || exit 1
git pull --all
cp -R "$REPOSITORY" $TMP/
cd "$TMP/$PRGNAM" || exit 1
[ "$VERSION" == "latest" ] && VERSION=$(git tag --sort=-version:refname | head -n1)
[ "$VERSION" == "" ] && VERSION=trunk
[ "$VERSION" == "trunk" ] && VERSION="git_r$(git rev-list --count HEAD)_$(git log -1 --format=%h)" || git checkout "$VERSION"
mkdir -p "$PKG$PREFIX/share/"
mv themes "$PKG$PREFIX/share/$PRGNAM"
# move doc/ to the appropriate location
mkdir -p "$PKG$PREFIX/doc/$PRGNAM"
mv ./* "$PKG$PREFIX/doc/$PRGNAM/"
mkdir -p "$PKG$PREFIX/bin"
cat <<EOF > "$PKG$PREFIX/bin/alacritty-theme-chooser.sh"
#!/bin/bash
ALACRITTY_CONFIG_DIR=~/.config/alacritty
ALACRITTY_THEMES_DIR=$PREFIX/share/$PRGNAM
if [ ! -e "\$ALACRITTY_CONFIG_DIR"/alacritty.toml ]; then
echo "Alacritty config file "\$ALACRITTY_CONFIG_DIR"/alacritty.toml is missing"
exit 1
fi
if ! \$(grep -q "theme.toml" "\$ALACRITTY_CONFIG_DIR"/alacritty.toml); then
echo "You need this line in your \$ALACRITTY_CONFIG_DIR/alacritty.toml :"
echo " import = [ \"~/.config/alacritty/theme.toml\" ]"
exit 1
fi
apply() {
THEME_NAME=\${1:-Cobalt2}
[ -e "\$ALACRITTY_THEMES_DIR/\$THEME_NAME.toml" ] || exit 1
ln -sf "\$ALACRITTY_THEMES_DIR/\$THEME_NAME.toml" "\$ALACRITTY_CONFIG_DIR"/theme.toml
touch "\$ALACRITTY_CONFIG_DIR"/alacritty.toml
}
list() {
find "\$ALACRITTY_THEMES_DIR" -name \*.toml | sort | rev | cut -d/ -f1 | rev | sed 's|.toml\$||'
}
menu() {
let i = 0
THEMES=() # define working array
while read -r line; do # process file by file
let i=\$i+1
THEMES+=(\$i "\$line")
done < <( list )
THEME=\$(dialog --title "List file of directory /home" --menu "Chose one" 24 80 17 "\${THEMES[@]}" 3>&2 2>&1 1>&3) # show dialog and store output
RESULT=\$?
clear
if [ \$RESULT -eq 0 ]; then # Exit with OK
apply "\${THEMES[\$((THEME * 2 -1))]}"
fi
}
case "\$1" in
apply)
apply "\$2"
;;
list)
list
;;
help|h|-h|--help)
echo "Usage: \$0 (menu | list | apply <theme>)"
;;
*)
menu
;;
esac
EOF
chmod +x "$PKG$PREFIX/bin/alacritty-theme-chooser.sh"
# correction
cd "$PKG" || exit 1
chown -R root:root ./*
# embaumement
mkdir -p "$PKG/install"
cat <<EOF > "$PKG/install/slack-desc"
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in. You must
# make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
$PRGNAM: $PRGNAM (Themes for Alacritty and a helper script)
$PRGNAM:
$PRGNAM:
$PRGNAM:
$PRGNAM:
$PRGNAM:
$PRGNAM:
$PRGNAM:
$PRGNAM:
$PRGNAM:
$PRGNAM: https://github.com/${GITHUB_REPO}
EOF
# empaquetage
/sbin/makepkg --linkadd y --chown n --prepend "$OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.txz"