mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2026-04-15 01:41:56 +00:00
Use id to access orgs (#1873)
closes #1743 fixes: setting secrets for own user namespace - create org in database - use orgID for org related APIs Co-authored-by: 6543 <6543@obermui.de>
This commit is contained in:
@@ -72,3 +72,9 @@ var RepoFlag = &cli.StringFlag{
|
||||
Aliases: []string{"repo"},
|
||||
Usage: "repository id or full-name (e.g. 134 or octocat/hello-world)",
|
||||
}
|
||||
|
||||
var OrgFlag = &cli.StringFlag{
|
||||
Name: "organization",
|
||||
Aliases: []string{"org"},
|
||||
Usage: "organization id or full-name (e.g. 123 or octocat)",
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package secret
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/urfave/cli/v2"
|
||||
@@ -24,9 +26,9 @@ var Command = &cli.Command{
|
||||
},
|
||||
}
|
||||
|
||||
func parseTargetArgs(client woodpecker.Client, c *cli.Context) (global bool, owner string, repoID int64, err error) {
|
||||
func parseTargetArgs(client woodpecker.Client, c *cli.Context) (global bool, orgID, repoID int64, err error) {
|
||||
if c.Bool("global") {
|
||||
return true, "", -1, nil
|
||||
return true, -1, -1, nil
|
||||
}
|
||||
|
||||
repoIDOrFullName := c.String("repository")
|
||||
@@ -34,19 +36,36 @@ func parseTargetArgs(client woodpecker.Client, c *cli.Context) (global bool, own
|
||||
repoIDOrFullName = c.Args().First()
|
||||
}
|
||||
|
||||
orgName := c.String("organization")
|
||||
if orgName != "" && repoIDOrFullName == "" {
|
||||
return false, orgName, -1, err
|
||||
orgIDOrName := c.String("organization")
|
||||
if orgIDOrName == "" && repoIDOrFullName == "" {
|
||||
if err := cli.ShowSubcommandHelp(c); err != nil {
|
||||
return false, -1, -1, err
|
||||
}
|
||||
|
||||
return false, -1, -1, fmt.Errorf("missing arguments")
|
||||
}
|
||||
|
||||
if orgName != "" && !strings.Contains(repoIDOrFullName, "/") {
|
||||
repoIDOrFullName = orgName + "/" + repoIDOrFullName
|
||||
if orgIDOrName != "" && repoIDOrFullName == "" {
|
||||
if orgID, err := strconv.ParseInt(orgIDOrName, 10, 64); err == nil {
|
||||
return false, orgID, -1, nil
|
||||
}
|
||||
|
||||
org, err := client.OrgLookup(orgIDOrName)
|
||||
if err != nil {
|
||||
return false, -1, -1, err
|
||||
}
|
||||
|
||||
return false, org.ID, -1, nil
|
||||
}
|
||||
|
||||
if orgIDOrName != "" && !strings.Contains(repoIDOrFullName, "/") {
|
||||
repoIDOrFullName = orgIDOrName + "/" + repoIDOrFullName
|
||||
}
|
||||
|
||||
repoID, err = internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return false, "", -1, err
|
||||
return false, -1, -1, err
|
||||
}
|
||||
|
||||
return false, "", repoID, nil
|
||||
return false, -1, repoID, nil
|
||||
}
|
||||
|
||||
@@ -21,10 +21,7 @@ var secretCreateCmd = &cli.Command{
|
||||
Name: "global",
|
||||
Usage: "global secret",
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "organization",
|
||||
Usage: "organization name (e.g. octocat)",
|
||||
},
|
||||
common.OrgFlag,
|
||||
common.RepoFlag,
|
||||
&cli.StringFlag{
|
||||
Name: "name",
|
||||
@@ -74,7 +71,7 @@ func secretCreate(c *cli.Context) error {
|
||||
secret.Value = string(out)
|
||||
}
|
||||
|
||||
global, owner, repoID, err := parseTargetArgs(client, c)
|
||||
global, orgID, repoID, err := parseTargetArgs(client, c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -83,10 +80,12 @@ func secretCreate(c *cli.Context) error {
|
||||
_, err = client.GlobalSecretCreate(secret)
|
||||
return err
|
||||
}
|
||||
if owner != "" {
|
||||
_, err = client.OrgSecretCreate(owner, secret)
|
||||
|
||||
if orgID != -1 {
|
||||
_, err = client.OrgSecretCreate(orgID, secret)
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = client.SecretCreate(repoID, secret)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -21,10 +21,7 @@ var secretInfoCmd = &cli.Command{
|
||||
Name: "global",
|
||||
Usage: "global secret",
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "organization",
|
||||
Usage: "organization name (e.g. octocat)",
|
||||
},
|
||||
common.OrgFlag,
|
||||
common.RepoFlag,
|
||||
&cli.StringFlag{
|
||||
Name: "name",
|
||||
@@ -44,7 +41,7 @@ func secretInfo(c *cli.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
global, owner, repoID, err := parseTargetArgs(client, c)
|
||||
global, orgID, repoID, err := parseTargetArgs(client, c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -55,8 +52,8 @@ func secretInfo(c *cli.Context) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else if owner != "" {
|
||||
secret, err = client.OrgSecret(owner, secretName)
|
||||
} else if orgID != -1 {
|
||||
secret, err = client.OrgSecret(orgID, secretName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -22,10 +22,7 @@ var secretListCmd = &cli.Command{
|
||||
Name: "global",
|
||||
Usage: "global secret",
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "organization",
|
||||
Usage: "organization name (e.g. octocat)",
|
||||
},
|
||||
common.OrgFlag,
|
||||
common.RepoFlag,
|
||||
common.FormatFlag(tmplSecretList, true),
|
||||
),
|
||||
@@ -39,7 +36,7 @@ func secretList(c *cli.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
global, owner, repoID, err := parseTargetArgs(client, c)
|
||||
global, orgID, repoID, err := parseTargetArgs(client, c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -50,8 +47,8 @@ func secretList(c *cli.Context) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else if owner != "" {
|
||||
list, err = client.OrgSecretList(owner)
|
||||
} else if orgID != -1 {
|
||||
list, err = client.OrgSecretList(orgID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -17,10 +17,7 @@ var secretDeleteCmd = &cli.Command{
|
||||
Name: "global",
|
||||
Usage: "global secret",
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "organization",
|
||||
Usage: "organization name (e.g. octocat)",
|
||||
},
|
||||
common.OrgFlag,
|
||||
common.RepoFlag,
|
||||
&cli.StringFlag{
|
||||
Name: "name",
|
||||
@@ -37,7 +34,7 @@ func secretDelete(c *cli.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
global, owner, repoID, err := parseTargetArgs(client, c)
|
||||
global, orgID, repoID, err := parseTargetArgs(client, c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -45,8 +42,8 @@ func secretDelete(c *cli.Context) error {
|
||||
if global {
|
||||
return client.GlobalSecretDelete(secretName)
|
||||
}
|
||||
if owner != "" {
|
||||
return client.OrgSecretDelete(owner, secretName)
|
||||
if orgID != -1 {
|
||||
return client.OrgSecretDelete(orgID, secretName)
|
||||
}
|
||||
return client.SecretDelete(repoID, secretName)
|
||||
}
|
||||
|
||||
@@ -21,10 +21,7 @@ var secretUpdateCmd = &cli.Command{
|
||||
Name: "global",
|
||||
Usage: "global secret",
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "organization",
|
||||
Usage: "organization name (e.g. octocat)",
|
||||
},
|
||||
common.OrgFlag,
|
||||
common.RepoFlag,
|
||||
&cli.StringFlag{
|
||||
Name: "name",
|
||||
@@ -71,7 +68,7 @@ func secretUpdate(c *cli.Context) error {
|
||||
secret.Value = string(out)
|
||||
}
|
||||
|
||||
global, owner, repoID, err := parseTargetArgs(client, c)
|
||||
global, orgID, repoID, err := parseTargetArgs(client, c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -80,8 +77,8 @@ func secretUpdate(c *cli.Context) error {
|
||||
_, err = client.GlobalSecretUpdate(secret)
|
||||
return err
|
||||
}
|
||||
if owner != "" {
|
||||
_, err = client.OrgSecretUpdate(owner, secret)
|
||||
if orgID != -1 {
|
||||
_, err = client.OrgSecretUpdate(orgID, secret)
|
||||
return err
|
||||
}
|
||||
_, err = client.SecretUpdate(repoID, secret)
|
||||
|
||||
Reference in New Issue
Block a user