mirror of
https://github.com/Matir/skel.git
synced 2026-07-24 21:26:57 -07:00
Compare commits
3 Commits
2814312d60
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e2ec4e1f9c | ||
|
|
ba97442895 | ||
|
|
a9b68bfe1f |
1
Brewfile
1
Brewfile
@@ -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
65
deploy_checkout.sh
Executable 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"'
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user