#!/usr/bin/env bash # ZION TERMINAL - instalador # Copia o projeto para /opt, /usr/local/bin, /etc e liga os ganchos do shell. # Idempotente: pode rodar de novo sem quebrar nada. set -euo pipefail DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" USER_HOME="${HOME}" ME="$(id -un)" say() { printf '\033[38;5;51m»Z»\033[0m %s\n' "$*"; } [ "$(id -u)" -eq 0 ] && { echo "Rode como usuario normal (o script chama sudo quando precisa)."; exit 1; } say "Instalando o ZION TERMINAL a partir de $DIR" # --- /opt (nao apaga logs/backups existentes) ---------------------- sudo mkdir -p /opt/zion-terminal/{logs,backups} sudo cp -a "$DIR/opt/zion-terminal/." /opt/zion-terminal/ sudo chown "$ME:$ME" /opt/zion-terminal/logs /opt/zion-terminal/backups sudo chmod 755 /opt/zion-terminal/bin/* /opt/zion-terminal/lib/*.sh 2>/dev/null || true # --- comando principal --------------------------------------------- sudo install -m 755 "$DIR/bin/zion" /usr/local/bin/zion # --- ganchos de sistema -------------------------------------------- sudo install -m 644 "$DIR"/etc/profile.d/*.sh /etc/profile.d/ sudo install -m 644 "$DIR"/etc/systemd/system/zion-collect.* /etc/systemd/system/ # --- dados locais (nao versionados) -------------------------------- [ -f /opt/zion-terminal/config/ssh-favoritos.conf ] || { sudo touch /opt/zion-terminal/config/ssh-favoritos.conf; sudo chown "$ME:$ME" /opt/zion-terminal/config/ssh-favoritos.conf; } printf 'DATA_CONFIG=%s\n' "$(date '+%Y-%m-%d %H:%M %Z')" | sudo tee /opt/zion-terminal/config/build-info.conf >/dev/null # --- persistencia do tmux (resurrect) ------------------------------ if [ ! -d /opt/zion-terminal/assets/tmux-resurrect ]; then say "Clonando tmux-resurrect" sudo git clone --depth 1 https://github.com/tmux-plugins/tmux-resurrect \ /opt/zion-terminal/assets/tmux-resurrect >/dev/null 2>&1 || echo " (aviso: tmux-resurrect nao clonado)" fi # --- ganchos no home ----------------------------------------------- grep -q 'bashrc-zion.sh' "$USER_HOME/.bashrc" 2>/dev/null || \ printf '\n# ZION TERMINAL\n[ -r /opt/zion-terminal/config/bashrc-zion.sh ] && . /opt/zion-terminal/config/bashrc-zion.sh\n' >> "$USER_HOME/.bashrc" # .tmux.conf aponta para a config versionada (fonte unica) if [ ! -e "$USER_HOME/.tmux.conf" ] || ! grep -q 'zion-terminal' "$USER_HOME/.tmux.conf" 2>/dev/null; then echo 'source-file /opt/zion-terminal/config/tmux.conf' > "$USER_HOME/.tmux.conf" fi # auto-resume do tmux no console local (opcional, opt-out ~/.zion-sem-tmux) if ! grep -q 'auto-resume' "$USER_HOME/.bash_profile" 2>/dev/null; then cat >> "$USER_HOME/.bash_profile" <<'EOF' # ZION TERMINAL - auto-resume da sessao tmux (so console local; desative: touch ~/.zion-sem-tmux) if [ -z "$SSH_CONNECTION" ] && [ -z "$TMUX" ] && [ -t 1 ] && [ ! -e "$HOME/.zion-sem-tmux" ] && command -v tmux >/dev/null; then case "$(tty)" in /dev/tty[0-9]*) exec tmux new-session -A -s zion ;; esac fi [ -f "$HOME/.bashrc" ] && . "$HOME/.bashrc" EOF fi # --- servico de coleta --------------------------------------------- sudo systemctl daemon-reload sudo systemctl enable --now zion-collect.timer >/dev/null 2>&1 || true # --- tema do tmux --------------------------------------------------- [ -f "$USER_HOME/.zion-tema" ] || echo 'ZION_TEMA=ice' > "$USER_HOME/.zion-tema" /opt/zion-terminal/bin/zion-tmux-theme -q >/dev/null 2>&1 || true say "Pronto. Abra uma nova sessao ou rode: source ~/.bashrc" say "Comandos: zion · zion doctor · zion --help"