Accept the "HOST/OWNER/REPO" syntax or passing a full URL for both the
`--repo` flag and the GH_REPO environment variable and allow setting
GH_HOST environment variable to override just the hostname for
operations that assume "github.com" by default.
Examples:
$ gh repo clone example.org/owner/repo
$ GH_HOST=example.org gh repo clone repo
$ GH_HOST=example.org gh api user
$ GH_HOST=example.org gh gist create myfile.txt
$ gh issue list -R example.org/owner/repo
$ gh issue list -R https://example.org/owner/repo.git
$ GH_REPO=example.org/owner/repo gh issue list
25 lines
681 B
Go
25 lines
681 B
Go
package cmdutil
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/cli/cli/internal/ghrepo"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
func EnableRepoOverride(cmd *cobra.Command, f *Factory) {
|
|
cmd.PersistentFlags().StringP("repo", "R", "", "Select another repository using the `[HOST/]OWNER/REPO` format")
|
|
|
|
cmd.PersistentPreRun = func(cmd *cobra.Command, args []string) {
|
|
repoOverride, _ := cmd.Flags().GetString("repo")
|
|
if repoFromEnv := os.Getenv("GH_REPO"); repoOverride == "" && repoFromEnv != "" {
|
|
repoOverride = repoFromEnv
|
|
}
|
|
if repoOverride != "" {
|
|
// NOTE: this mutates the factory
|
|
f.BaseRepo = func() (ghrepo.Interface, error) {
|
|
return ghrepo.FromFullName(repoOverride)
|
|
}
|
|
}
|
|
}
|
|
}
|