110 lines · 2.3 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"
}