#!/bin/sh -e
#
#    byobu-launcher-install
#    Copyright (C) 2008 Canonical Ltd.
#
#    Authors: Nick Barcet <nick.barcet@ubuntu.com>
#             Dustin Kirkland <kirkland@byobu.org>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, version 3 of the License.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

PKG="byobu"
[ -r "$HOME/.byoburc" ] && . "$HOME/.byoburc"
[ -z "${BYOBU_PREFIX}" ] && export BYOBU_PREFIX="@prefix@" || export BYOBU_PREFIX
. "${BYOBU_PREFIX}/lib/${PKG}/include/common"

FLAG="$BYOBU_CONFIG_DIR/no-logout-on-detach"

LOGOUT_ON_DETACH=1
for i in $@; do
	case "$i" in
		-n|--no-logout)
			LOGOUT_ON_DETACH=0
		;;
	esac
done

update_flag() {
	if [ "$LOGOUT_ON_DETACH" = "1" ]; then
		rm -f "$FLAG"
	else
		touch "$FLAG"
	fi
}

install_launcher() {
	$PKG-launcher-uninstall "$1" || true
	printf "_byobu_sourced=1 . ${BYOBU_PREFIX}/bin/byobu-launch 2>/dev/null || true\n" >> "$1"
}

install_launcher_fish() {
	$PKG-launcher-uninstall "$1" || true
	printf "if not set -q VSCODE_CWD; " >> "$1"
	printf "  status --is-login; and status --is-interactive; and exec byobu-launcher;" >> "$1"
	printf "end" >> "$1"
}

# Sanitize the environment
$PKG-launcher-uninstall || true

# Handle bourne shells, if not set globally in /etc/profile.d
if [ ! -h "/etc/profile.d/Z97-$PKG.sh" ]; then
	# Install in $HOME/.profile unconditionally
	install_launcher "$HOME/.profile"
	# Now, install in any shell-specific profiles, if they exist
	# This list may grow to support other shells
	for i in ".bash_profile" ".bash_login"; do
		if [ -w "$HOME/$i" ]; then
			install_launcher "$HOME/$i"
		fi
	done
fi

# Install in zprofile if default shell is zsh
case "$SHELL" in
	*zsh)
		install_launcher "$HOME/.zprofile"
	;;
esac

# Also install in .bashrc / .zshrc so byobu auto-starts in non-login
# interactive shells used by Alacritty, kitty, st, terminology, etc.
# byobu-launch already guards against nested launches and non-interactive
# shells, so this is safe.  LP: #1840728
case "$SHELL" in
	*bash)
		[ -w "$HOME/.bashrc" ] && install_launcher "$HOME/.bashrc"
	;;
	*zsh)
		[ -w "$HOME/.zshrc" ] && install_launcher "$HOME/.zshrc"
	;;
esac

# Handle fish shell
if [ -d "$HOME/.config/fish" ]; then
	install_launcher_fish "$HOME/.config/fish/config.fish"
fi

# Hush login, since we will handle motd printing
touch "$HOME"/.hushlogin
rm -f "$BYOBU_CONFIG_DIR/disable-autolaunch"

# Update the logout/nologout flag
update_flag

# vi: syntax=sh ts=4 noexpandtab
