#!/usr/bin/env bash VERSION=0.1.3 DESTDIR=~/.suckless BUILDDIR=~/.suckless-build die() { echo "${@:2}" exit $1 } usage() { die $1 "Usage: suckless-rebuild dmenu|slstatus|st " } version() { die $1 "suckless-build $VERSION" } case $1 in dmenu|slstatus|st ) software=$1; config=$2 ;; -V|--version ) version 0 ;; -h|--help) usage 0 ;; * ) usage 1 ;; esac if [[ ${#@} != 2 ]]; then usage 1 fi if [[ ! $software =~ ^dmenu$|^slstatus$|^st$ ]]; then die 1 "Unknown suckless software '$software'." fi if [[ ! -d /usr/src/$software ]]; then die 1 "'an9wer-$software' may not be installed." fi if [[ ! -f $config ]]; then die 1 "'$config' is not a regular file." fi # Move last build directory if [[ -e $BUILDDIR/$software ]]; then temp=$(mktemp -u -d /tmp/$software.XXXXX) mv "$BUILDDIR/$software" "$temp" fi mkdir -p "$BUILDDIR" cp -r /usr/src/$software "$BUILDDIR/$software" cp -f "$config" "$BUILDDIR/$software/config.h" cd "$BUILDDIR/$software" if make &> build.log && make PREFIX="$DESTDIR" install &> build.log; then echo "Done! Recommend to add '~/.suckless/bin' to \$PATH to use new builded $software." else echo "Some error occurred, check '$BUILDDIR/$software/build.log' to find more." fi if [[ -v temp ]]; then sed -i "1i The last build directory was moved to $temp\n" build.log fi # vim: set filetype=sh: