3 Commits

Author SHA1 Message Date
David Tomaschik
e2ec4e1f9c Update Brewfile 2026-07-23 12:41:19 -07:00
David Tomaschik
ba97442895 Fix iterm integration for zsh prompt 2026-07-13 15:55:34 -07:00
David Tomaschik
a9b68bfe1f New script to deploy a checkout 2026-07-09 20:31:01 -07:00
3 changed files with 71 additions and 2 deletions

View File

@@ -24,7 +24,6 @@ brew "direnv"
brew "dua-cli" brew "dua-cli"
brew "duck" brew "duck"
brew "dust" brew "dust"
brew "earthly"
brew "espressif/eim/eim", trusted: true brew "espressif/eim/eim", trusted: true
brew "esptool" brew "esptool"
brew "fish" brew "fish"

65
deploy_checkout.sh Executable file
View File

@@ -0,0 +1,65 @@
#!/usr/bin/env bash
set -euo pipefail
usage() {
echo "Usage: $(basename "$0") [--dry-run] user@host" >&2
exit 1
}
DRY_RUN=0
REMOTE=
while [[ $# -gt 0 ]]; do
case "$1" in
--dry-run)
DRY_RUN=1
shift
;;
-h|--help)
usage
;;
--)
shift
break
;;
-*)
usage
;;
*)
if [[ -n "${REMOTE}" ]]; then
usage
fi
REMOTE="$1"
shift
;;
esac
done
if [[ $# -gt 0 || -z "${REMOTE}" ]]; then
usage
fi
SCRIPT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
if ! git -C "$SCRIPT_DIR" rev-parse --is-inside-work-tree >/dev/null 2>&1; then
echo "Error: $SCRIPT_DIR is not inside a git repository." >&2
exit 1
fi
if [[ "$DRY_RUN" -eq 1 ]]; then
archive_list="$(git -C "$SCRIPT_DIR" archive --format=tar HEAD | tar -tf - | sed 's#^\./##' | sed '/^$/d;/^\.$/d' | sort)"
remote_list="$(ssh "$REMOTE" 'if [ -d "$HOME/.skel" ]; then cd "$HOME/.skel" && find . | sed "s#^\./##" | sed "/^$/d;/^\.$/d" | sort; fi' || true)"
printf 'Would deploy HEAD from %s to %s:%s\n' "$SCRIPT_DIR" "$REMOTE" '$HOME/.skel'
printf 'Would replace remote ~/.skel with %s tracked paths\n' "$(printf '%s' "$archive_list" | awk 'NF { n++ } END { print n + 0 }')"
if [[ -n "$remote_list" ]]; then
printf 'Would remove %s existing remote paths not present in HEAD\n' "$(comm -13 <(printf '%s\n' "$archive_list") <(printf '%s\n' "$remote_list") | awk 'NF { n++ } END { print n + 0 }')"
else
printf 'Remote ~/.skel does not exist or is empty\n'
fi
exit 0
fi
git -C "$SCRIPT_DIR" archive --format=tar HEAD | \
ssh "$REMOTE" 'rm -rf "$HOME/.skel" && mkdir -p "$HOME/.skel" && tar -xf - -C "$HOME/.skel"'

View File

@@ -132,7 +132,12 @@ case $TERM in
else else
# this will also work in tmux but is not what we want # this will also work in tmux but is not what we want
# Set the terminal title to include the command being run # Set the terminal title to include the command being run
print -Pn "\e]0;%n@%m: %~ ($cmd)\a" # Skip adding (cmd) in iTerm2 — shell integration already injects the job name
if [[ -z "$ITERM_SESSION_ID" ]]; then
print -Pn "\e]0;%n@%m: %~ ($cmd)\a"
else
print -Pn "\e]0;%n@%m: %~\a"
fi
fi fi
} }
# Add the hooks to zsh # Add the hooks to zsh