install.sh (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
#!/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"
|