#!/bin/sh
# install.sh — symlink session-tools/bin/* into ~/bin (idempotent).
#
# Run this on every host that should have remote-run / tssh available.
set -eu
repo_dir=$(cd "$(dirname "$0")" && pwd)
# Pick the first install target that's already on $PATH so the symlinks are
# immediately usable. Override with TARGET=
./install.sh.
pick_target() {
if [ -n "${TARGET:-}" ]; then
printf %s "$TARGET"
return
fi
for candidate in "$HOME/bin" "$HOME/.local/bin"; do
case ":$PATH:" in
*":$candidate:"*) printf %s "$candidate"; return ;;
esac
done
# Nothing on PATH — fall back to ~/bin and warn later.
printf %s "$HOME/bin"
}
target=$(pick_target)
mkdir -p "$target"
for src in "$repo_dir"/bin/*; do
name=$(basename "$src")
link="$target/$name"
if [ -L "$link" ] && [ "$(readlink "$link")" = "$src" ]; then
echo "ok: $link -> $src"
continue
fi
if [ -e "$link" ] && [ ! -L "$link" ]; then
echo "skip: $link exists and is not a symlink — leaving alone" >&2
continue
fi
ln -sfn "$src" "$link"
echo "link: $link -> $src"
done
# Dependency: `rclaude` drives the `claude` CLI, so claude is a hard dep —
# install it via the official installer if it's missing. Idempotent: skipped
# when claude is already on PATH. (Auth is provisioned separately — login or
# a copied ~/.claude/.credentials.json.)
if command -v claude >/dev/null 2>&1; then
echo "ok: claude present ($(claude --version 2>/dev/null | head -1))"
elif command -v curl >/dev/null 2>&1; then
echo "dep: claude CLI missing — installing via official installer…"
if curl -fsSL https://claude.ai/install.sh | bash; then
echo "ok: claude installed ($("$HOME/.local/bin/claude" --version 2>/dev/null | head -1))"
else
echo "warn: claude auto-install failed — install it manually" >&2
fi
else
echo "warn: claude missing and curl unavailable — install claude manually" >&2
fi
# Install tmux.conf if tmux is present and the user has no existing config.
if command -v tmux >/dev/null 2>&1; then
tmux_conf="$HOME/.tmux.conf"
if [ ! -f "$tmux_conf" ]; then
cp "$repo_dir/tmux.conf" "$tmux_conf"
echo "link: $tmux_conf (installed from repo)"
tmux source "$tmux_conf" 2>/dev/null && echo "ok: tmux config reloaded" || true
else
echo "ok: $tmux_conf already exists — not overwriting"
fi
fi
case ":$PATH:" in
*":$target:"*) ;;
*) echo "note: add $target to PATH if it isn't already" ;;
esac