tmux-fingers/install-wizard.sh

132 lines
2.9 KiB
Bash
Executable File

#!/usr/bin/env bash
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PLATFORM=$(uname -s)
action=$1
# set up exit trap
function finish {
exit_code=$?
# only intercept exit code when there is an action defined (download, or
# build from source), otherwise we'll enter an infinte loop of sourcing
# tmux.conf
if [[ -z "$action" ]]; then
exit $exit_code
fi
if [[ $exit_code -eq 0 ]]; then
echo "Reloading tmux.conf"
tmux source ~/.tmux.conf
exit 0
else
echo "Something went wrong. Please any key to close this window"
read -n 1
exit 1
fi
}
trap finish EXIT
function install_from_source() {
echo "Installing from source..."
# check if shards is installed
if ! command -v shards >/dev/null 2>&1; then
echo "crystal is not installed. Please install it first."
exit 1
fi
pushd $CURRENT_DIR > /dev/null
shards build --production
popd > /dev/null
echo "Build complete!"
exit 0
}
function install_with_brew() {
echo "Installing with brew..."
brew tap morantron/tmux-fingers
brew install tmux-fingers
echo "Installation complete!"
exit 0
}
function download_binary() {
mkdir -p $CURRENT_DIR/bin
if [[ ! "$(uname -m)" == "x86_64" ]]; then
echo "tmux-fingers binaries are only provided for x86_64 architecture."
exit 1
fi
echo "Getting latest release..."
# TODO use "latest" tag
url=$(curl -s "https://api.github.com/repos/morantron/tmux-fingers/releases" | grep browser_download_url | head -1 | grep -o https://.*x86_64)
echo "Downloading binary from $url"
# download binary to bin/tmux-fingers
curl -L $url -o $CURRENT_DIR/bin/tmux-fingers
chmod a+x $CURRENT_DIR/bin/tmux-fingers
echo "Download complete!"
exit 0
}
if [[ "$1" == "download-binary" ]]; then
download_binary
fi
if [[ "$1" == "install-with-brew" ]]; then
echo "Installing with brew..."
install_with_brew
exit 1
fi
if [[ "$1" == "install-from-source" ]]; then
install_from_source
fi
function binary_or_brew_label() {
if [[ "$PLATFORM" == "Darwin" ]]; then
echo "Install with brew"
else
echo "Download binary"
fi
}
function binary_or_brew_action() {
if [[ "$PLATFORM" == "Darwin" ]]; then
echo "install-with-brew"
else
echo "download-binary"
fi
}
function get_message() {
if [[ "$FINGERS_UPDATE" == "1" ]]; then
echo "It looks like tmux-fingers has been updated. We need to rebuild the binary."
else
echo "It looks like it is the first time you are running the plugin. We first need to get tmux-fingers binary for things to work."
fi
}
tmux display-menu -T "tmux-fingers" \
"" \
"- " "" ""\
"- #[nodim,bold]Welcome to tmux-fingers! ✌️ " "" ""\
"- " "" ""\
"- $(get_message) " "" "" \
"- " "" ""\
"" \
"$(binary_or_brew_label)" b "new-window \"$CURRENT_DIR/install-wizard.sh $(binary_or_brew_action)\"" \
"Build from source" s "new-window \"$CURRENT_DIR/install-wizard.sh install-from-source\"" \
"" \
"Exit" q ""