mirror of
https://github.com/prdlk/dotfiles.git
synced 2026-11-02 19:32:43 +00:00
- 16 cross-shell utilities converted to sh/bash chezmoi executables: ai c2p cp-appid extract_agents fab gdc gh-sonr-org-migrate ghg-clone ghn gho git-summary launch_omp_livediff_overlay lc-elir mdcp mdp pj (ghg-clone not named ghg: unrelated cargo binary owns that name) - cwd/history helpers stay per-shell: yy c cd clip-last + ghg/ghn/gho cd-wrappers in bash/functions/ and zsh/functions/, loaded by rc files - fish keeps only shell-state functions; converted ones now hit PATH - cp-appid ignore gating moved to .local/bin path - dot_agents/skills: 82 skills materialized from dotstate storage so dot_claude skill symlinks resolve on fresh bootstrap; dotstate profile/symlinks.json released .agents/skills .bashrc .zshrc
35 lines
1.1 KiB
Bash
Executable File
35 lines
1.1 KiB
Bash
Executable File
#!/bin/sh
|
|
# ghq get + resolve the on-disk clone path; prints the repo directory.
|
|
# Shell wrappers (fish/bash/zsh `ghg` functions) cd into the printed path —
|
|
# a child process can't change the caller's cwd.
|
|
repo=$1
|
|
if [ -z "$repo" ]; then
|
|
echo "usage: ghg-clone <repo>" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# ghq natively understands https://, ssh://, git@host:…, and host/user/repo.
|
|
# Keep its output on stderr so stdout stays clean for the wrapper's cd.
|
|
ghq get "$repo" >&2 || exit
|
|
|
|
# Reduce the input to ghq's on-disk shape: <host>/<user>/<repo> —
|
|
# strip scheme (https://, ssh://, git://), user@ (git@github.com:…),
|
|
# turn scp host:path into host/path, drop trailing .git.
|
|
rel=$(printf '%s\n' "$repo" \
|
|
| sed -E 's#^[[:alnum:]]+://##; s#^[^@/]+@##; s#:#/#; s#\.git$##')
|
|
|
|
# bare "user/repo" with no host → default to github.com
|
|
case "$rel" in
|
|
*.*/*) ;;
|
|
*) rel=github.com/$rel ;;
|
|
esac
|
|
|
|
dir=$(ghq root)/$rel
|
|
if [ ! -d "$dir" ]; then
|
|
echo "ghg: expected clone at $dir but it does not exist" >&2
|
|
exit 1
|
|
fi
|
|
|
|
command -v zoxide >/dev/null 2>&1 && zoxide add "$dir"
|
|
printf '%s\n' "$dir"
|