diff --git a/home/dotfiles/profile b/home/dotfiles/profile index c8eda23..f2e91db 100644 --- a/home/dotfiles/profile +++ b/home/dotfiles/profile @@ -3,26 +3,6 @@ # just for this profile code PROFILE_DEBUG="${PROFILE_DEBUG:-0}" -# features -PROFILE_ALIAS=${PROFILE_ALIAS:-1} -PROFILE_BIN=${PROFILE_BIN:-1} -PROFILE_DEFAULT_TERM=${PROFILE_DEFAULT_TERM:-1} -PROFILE_GO=${PROFILE_GO:-1} -PROFILE_GPG_PINENTRY_FIX=${PROFILE_GPG_PINENTRY_FIX:-1} -PROFILE_IBUS=${PROFILE_IBUS:-1} -PROFILE_KEYCHAIN=${PROFILE_KEYCHAIN:-0} -PROFILE_NANO=${PROFILE_NANO:-1} -PROFILE_NANO_EXPLICIT_WIDE=${PROFILE_NANO_EXPLICIT_WIDE:-0} -PROFILE_NO_BEEPS=${PROFILE_NO_BEEPS:-1} -PROFILE_NODE=${PROFILE_NODE:-1} -PROFILE_PRINT_REBOOT_REQUIRED=${PROFILE_PRINT_REBOOT_REQUIRED:-0} # hacky, see below -PROFILE_RUBY=${PROFILE_RUBY:-1} -PROFILE_RUST=${PROFILE_RUST:-1} -PROFILE_SSH_AGENT=${PROFILE_SSH_AGENT:-1} -PROFILE_SYSTEMD=${PROFILE_SYSTEMD:-1} -PROFILE_THEFUCK=${PROFILE_THEFUCK:-1} -PROFILE_YARN=${PROFILE_YARN:-1} - ############################################################################## # Profile helper code from here @@ -32,6 +12,19 @@ PROFILE_DEBUG_SECTION_END_TEXT="/" DEBUG_INDENT=0 +when_binary_available() { + if has_binary "$@"; then + printf '1' + return + fi + printf '0' + return +} + +has_binary() { + command -v "$@" >/dev/null 2>&1 +} + section() { if [ $PROFILE_DEBUG -gt 0 ]; then echo "${PROFILE_DEBUG_SECTION_START_PREFIX}$(tput smso)$*$(tput rmso)" @@ -60,6 +53,28 @@ log() { fi } +############################################################################## +# Profile tweaks and features + +PROFILE_ALIAS=${PROFILE_ALIAS:-1} +PROFILE_BIN=${PROFILE_BIN:-1} +PROFILE_DEFAULT_TERM=${PROFILE_DEFAULT_TERM:-1} +PROFILE_GO=${PROFILE_GO:-$(when_binary_available go)} +PROFILE_GPG_PINENTRY_FIX=${PROFILE_GPG_PINENTRY_FIX:-1} +PROFILE_IBUS=${PROFILE_IBUS:-$(when_binary_available ibus)} +PROFILE_KEYCHAIN=${PROFILE_KEYCHAIN:-$(when_binary_available keychain)} +PROFILE_NANO=${PROFILE_NANO:-$(when_binary_available nano)} +PROFILE_NANO_EXPLICIT_WIDE=${PROFILE_NANO_EXPLICIT_WIDE:-0} +PROFILE_NO_BEEPS=${PROFILE_NO_BEEPS:-$(when_binary_available xset)} +PROFILE_NODE=${PROFILE_NODE:-$(when_binary_available node)} +PROFILE_PRINT_REBOOT_REQUIRED=${PROFILE_PRINT_REBOOT_REQUIRED:-0} # hacky, see below +PROFILE_RUBY=${PROFILE_RUBY:-$(when_binary_available ruby)} +PROFILE_RUST=${PROFILE_RUST:-$(when_binary_available rust)} +PROFILE_SSH_AGENT=${PROFILE_SSH_AGENT:-$(when_binary_available ssh-agent)} +PROFILE_SYSTEMD=${PROFILE_SYSTEMD:-$(when_binary_available systemctl)} +PROFILE_THEFUCK=${PROFILE_THEFUCK:-$(when_binary_available thefuck)} +PROFILE_YARN=${PROFILE_YARN:-$(when_binary_available yarn)} + ############################################################################## # Actual profile code from here