The Meowgorithm Dotfiles, Collectors’ Edition
#!/usr/bin/env bash
# Print the names of all public and private Charm repos.
getCharmRepos() {
getRepos() {
gh repo list charmbracelet --visibility="$1" --json name
}
getAllRepos() {
printf '%s %s' "$(getRepos "public")" "$(getRepos "private")" | jq -s 'add'
}
getAllRepos |
jq .[].name |
tr -d '"' |
sort
}
# Choose a Charm repo name with Gum.
pickCharmRepo() {
getCharmRepos | gum filter --height=10 --header "$1"
}
# Interactively choose a Charm repo.
charm_clone() {
local repo
repo="$(pickCharmRepo "Clone which Charm™ repo?")"
if [[ -z "$repo" ]]; then
printf "Okay, never mind.\n"
return 1
fi
git clone "git@github.com:charmbracelet/$repo" "$HOME/src/$repo"
}
# Interactively use "go get" against a Charm repo.
go_get_charm() {
local repo
repo="$(pickCharmRepo "Which Charm™ repo do you want to ‘go get?’")"
if [[ -z "$repo" ]]; then
printf "Okay, never mind.\n"