#!/usr/bin/env fish # deploy.fish – Copilot-Setup auf Linux mit fish-Shell deployen # Usage: fish scripts/deploy.fish set REPO_DIR (dirname (status filename))/.. set REPO_DIR (realpath $REPO_DIR) echo "=== Copilot Setup Deploy (Linux/fish) ===" echo "Source: $REPO_DIR" # ── 1. VS Code User-Verzeichnis ermitteln ───────────────────────────────────── # Remote (VS Code Server) if test -d /home/(whoami)/.vscode-server/data/User set VSCODE_USER /home/(whoami)/.vscode-server/data/User # Flatpak else if test -d $HOME/.var/app/com.visualstudio.code/config/Code/User set VSCODE_USER $HOME/.var/app/com.visualstudio.code/config/Code/User # Standard Linux else set VSCODE_USER $HOME/.config/Code/User end echo "VS Code User dir: $VSCODE_USER" # ── 2. User settings.json mergen / anlegen ──────────────────────────────────── if test -f $VSCODE_USER/settings.json echo " ─ settings.json exists – skipping (merge manually if needed)" echo " Reference: $REPO_DIR/user-settings/settings.json" else mkdir -p $VSCODE_USER cp $REPO_DIR/user-settings/settings.json $VSCODE_USER/settings.json echo " ✓ settings.json deployed" end # ── 3. Prompt Files ─────────────────────────────────────────────────────────── mkdir -p $VSCODE_USER/prompts for f in $REPO_DIR/prompts/*.prompt.md set fname (basename $f) if test -f $VSCODE_USER/prompts/$fname echo " ─ prompts/$fname already exists, skipping" else cp $f $VSCODE_USER/prompts/$fname echo " ✓ prompts/$fname deployed" end end # ── 4. Git-Templates ────────────────────────────────────────────────────────── set GIT_TEMPLATE_DIR $HOME/.git-templates mkdir -p $GIT_TEMPLATE_DIR/.github $GIT_TEMPLATE_DIR/.vscode \ $GIT_TEMPLATE_DIR/hooks $GIT_TEMPLATE_DIR/docs \ $GIT_TEMPLATE_DIR/history/summary cp $REPO_DIR/git-templates/.github/copilot-instructions.md $GIT_TEMPLATE_DIR/.github/ cp $REPO_DIR/git-templates/.vscode/settings.json $GIT_TEMPLATE_DIR/.vscode/ cp $REPO_DIR/git-templates/.vscode/extensions.json $GIT_TEMPLATE_DIR/.vscode/ cp $REPO_DIR/git-templates/hooks/pre-commit $GIT_TEMPLATE_DIR/hooks/ chmod +x $GIT_TEMPLATE_DIR/hooks/pre-commit cp $REPO_DIR/git-templates/docs/USER.md $GIT_TEMPLATE_DIR/docs/ cp $REPO_DIR/git-templates/docs/ADMIN.md $GIT_TEMPLATE_DIR/docs/ cp $REPO_DIR/git-templates/docs/MAINTAINER.md $GIT_TEMPLATE_DIR/docs/ cp $REPO_DIR/git-templates/history/summary/PROJECT_CONTEXT.md $GIT_TEMPLATE_DIR/history/summary/ git config --global init.templateDir $GIT_TEMPLATE_DIR echo " ✓ git-templates deployed → $GIT_TEMPLATE_DIR" echo " ✓ git config init.templateDir set" # ── 5. Bootstrap-Skripte ────────────────────────────────────────────────────── mkdir -p $HOME/.local/bin cp $REPO_DIR/scripts/copilot-bootstrap.sh $HOME/.local/bin/copilot-bootstrap.sh chmod +x $HOME/.local/bin/copilot-bootstrap.sh echo " ✓ copilot-bootstrap.sh installed to ~/.local/bin/" cp $REPO_DIR/scripts/copilot-bootstrap.fish $HOME/.local/bin/copilot-bootstrap.fish chmod +x $HOME/.local/bin/copilot-bootstrap.fish echo " ✓ copilot-bootstrap.fish installed to ~/.local/bin/" # ── 6. Git-Alias: git init → auto-bootstrap ─────────────────────────────────── # Verwendet git --exec-path um Rekursion zu vermeiden (kein Alias-Loop). git config --global alias.init '!f() { dir=.; for a in "$@"; do case "$a" in -*) ;; *) dir="$a" ;; esac; done; "$(git --exec-path)/git-init" "$@" && "$HOME/.local/bin/copilot-bootstrap.sh" "$dir"; }; f' echo " ✓ git alias 'init' gesetzt (führt copilot-bootstrap.sh automatisch aus)" echo "" echo "=== Done ===" echo "Next: Activate Settings Sync in VS Code (Ctrl+Shift+P → 'Settings Sync: Turn On')"