105 lines · 1.7 KB
#!/usr/bin/env bash

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
}

pickCharmRepo() {
	getCharmRepos | gum filter --height=10 --header "$1"
}

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"
}

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"
		return 1
	fi
	go get "github.com/charmbracelet/$repo"
}