diff --git a/pkg/cmd/secret/set/http.go b/pkg/cmd/secret/set/http.go index bd7759fa5..303ace1b9 100644 --- a/pkg/cmd/secret/set/http.go +++ b/pkg/cmd/secret/set/http.go @@ -8,6 +8,7 @@ import ( "strings" "github.com/cli/cli/api" + "github.com/cli/cli/internal/ghinstance" "github.com/cli/cli/internal/ghrepo" "github.com/cli/cli/pkg/cmd/secret/shared" ) @@ -45,7 +46,8 @@ func getPubKey(client *api.Client, host, path string) (*PubKey, error) { return &pk, nil } -func getOrgPublicKey(client *api.Client, host, orgName string) (*PubKey, error) { +func getOrgPublicKey(client *api.Client, orgName string) (*PubKey, error) { + host := ghinstance.OverridableDefault() return getPubKey(client, host, fmt.Sprintf("orgs/%s/actions/secrets/public-key", orgName)) } @@ -64,10 +66,11 @@ func putSecret(client *api.Client, host, path string, payload SecretPayload) err return client.REST(host, "PUT", path, requestBody, nil) } -func putOrgSecret(client *api.Client, pk *PubKey, host string, opts SetOptions, eValue string) error { +func putOrgSecret(client *api.Client, pk *PubKey, opts SetOptions, eValue string) error { secretName := opts.SecretName orgName := opts.OrgName visibility := opts.Visibility + host := ghinstance.OverridableDefault() var repositoryIDs []int var err error diff --git a/pkg/cmd/secret/set/set.go b/pkg/cmd/secret/set/set.go index 610e85319..f15e216e2 100644 --- a/pkg/cmd/secret/set/set.go +++ b/pkg/cmd/secret/set/set.go @@ -12,7 +12,6 @@ import ( "github.com/MakeNowJust/heredoc" "github.com/cli/cli/api" - "github.com/cli/cli/internal/ghinstance" "github.com/cli/cli/internal/ghrepo" "github.com/cli/cli/pkg/cmd/secret/shared" "github.com/cli/cli/pkg/cmdutil" @@ -102,8 +101,7 @@ func NewCmdSet(f *cmdutil.Factory, runF func(*SetOptions) error) *cobra.Command return setRun(opts) }, } - cmd.Flags().StringVar(&opts.OrgName, "org", "", "List secrets for an organization") - cmd.Flags().Lookup("org").NoOptDefVal = "@owner" + cmd.Flags().StringVarP(&opts.OrgName, "org", "o", "", "List secrets for an organization") cmd.Flags().StringVarP(&opts.Visibility, "visibility", "v", "private", "Set visibility for an organization secret: `all`, `private`, or `selected`") cmd.Flags().StringSliceVarP(&opts.RepositoryNames, "repos", "r", []string{}, "List of repository names for `selected` visibility") cmd.Flags().StringVarP(&opts.Body, "body", "b", "-", "Provide either a literal string or a file path; prepend file paths with an @. Reads from STDIN if not provided.") @@ -123,23 +121,19 @@ func setRun(opts *SetOptions) error { } client := api.NewClientFromHTTP(c) + orgName := opts.OrgName + var baseRepo ghrepo.Interface - if opts.OrgName == "" || opts.OrgName == "@owner" { + if orgName == "" { baseRepo, err = opts.BaseRepo() if err != nil { return fmt.Errorf("could not determine base repo: %w", err) } } - host := ghinstance.OverridableDefault() - if opts.OrgName == "@owner" { - opts.OrgName = baseRepo.RepoOwner() - host = baseRepo.RepoHost() - } - var pk *PubKey if opts.OrgName != "" { - pk, err = getOrgPublicKey(client, host, opts.OrgName) + pk, err = getOrgPublicKey(client, opts.OrgName) } else { pk, err = getRepoPubKey(client, baseRepo) } @@ -155,7 +149,7 @@ func setRun(opts *SetOptions) error { encoded := base64.StdEncoding.EncodeToString(eBody) if opts.OrgName != "" { - err = putOrgSecret(client, pk, host, *opts, encoded) + err = putOrgSecret(client, pk, *opts, encoded) } else { err = putRepoSecret(client, pk, baseRepo, opts.SecretName, encoded) } diff --git a/pkg/cmd/secret/set/set_test.go b/pkg/cmd/secret/set/set_test.go index 32d0d50da..49621c5d2 100644 --- a/pkg/cmd/secret/set/set_test.go +++ b/pkg/cmd/secret/set/set_test.go @@ -28,12 +28,12 @@ func TestNewCmdSet(t *testing.T) { }{ { name: "invalid visibility", - cli: "cool_secret --org -v'mistyVeil'", + cli: "cool_secret --org coolOrg -v'mistyVeil'", wantsErr: true, }, { name: "invalid visibility", - cli: "cool_secret --org -v'selected'", + cli: "cool_secret --org coolOrg -v'selected'", wantsErr: true, }, { @@ -58,8 +58,8 @@ func TestNewCmdSet(t *testing.T) { wantsErr: true, }, { - name: "explicit org with selected repo", - cli: "--org=coolOrg -vselected -rcoolRepo cool_secret", + name: "org with selected repo", + cli: "-ocoolOrg -vselected -rcoolRepo cool_secret", wants: SetOptions{ SecretName: "cool_secret", Visibility: shared.VisSelected, @@ -69,7 +69,7 @@ func TestNewCmdSet(t *testing.T) { }, }, { - name: "explicit org with selected repos", + name: "org with selected repos", cli: `--org=coolOrg -vselected -r="coolRepo,radRepo,goodRepo" cool_secret`, wants: SetOptions{ SecretName: "cool_secret", @@ -89,24 +89,14 @@ func TestNewCmdSet(t *testing.T) { OrgName: "", }, }, - { - name: "implicit org", - cli: `cool_secret --org -b"@cool.json"`, - wants: SetOptions{ - SecretName: "cool_secret", - Visibility: shared.VisPrivate, - Body: "@cool.json", - OrgName: "@owner", - }, - }, { name: "vis all", - cli: `cool_secret --org -b"@cool.json" -vall`, + cli: `cool_secret --org coolOrg -b"@cool.json" -vall`, wants: SetOptions{ SecretName: "cool_secret", Visibility: shared.VisAll, Body: "@cool.json", - OrgName: "@owner", + OrgName: "coolOrg", }, }, { @@ -210,19 +200,12 @@ func Test_setRun_org(t *testing.T) { wantRepositories []int }{ { - name: "explicit org name", + name: "all vis", opts: &SetOptions{ OrgName: "UmbrellaCorporation", Visibility: shared.VisAll, }, }, - { - name: "implicit org name", - opts: &SetOptions{ - OrgName: "@owner", - Visibility: shared.VisPrivate, - }, - }, { name: "selected visibility", opts: &SetOptions{ @@ -238,11 +221,7 @@ func Test_setRun_org(t *testing.T) { t.Run(tt.name, func(t *testing.T) { reg := &httpmock.Registry{} - impliedOrgName := "NeoUmbrella" orgName := tt.opts.OrgName - if orgName == "@owner" { - orgName = impliedOrgName - } reg.Register(httpmock.REST("GET", fmt.Sprintf("orgs/%s/actions/secrets/public-key", orgName)), @@ -260,7 +239,7 @@ func Test_setRun_org(t *testing.T) { io, _, _, _ := iostreams.Test() tt.opts.BaseRepo = func() (ghrepo.Interface, error) { - return ghrepo.FromFullName(fmt.Sprintf("%s/repo", impliedOrgName)) + return ghrepo.FromFullName("owner/repo") } tt.opts.HttpClient = func() (*http.Client, error) { return &http.Client{Transport: reg}, nil