You've already forked woodpecker
mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2026-05-22 08:55:42 +02:00
Access repos by their ids (#1691)
closes #1295 closes #648 # TODO - [x] add new routes with `:repoID` - [x] load repo in middleware using `:repoID` if present - [x] update UI routes `:owner/:name` to `:repoID` - [x] load repos using id in UI - [x] add lookup endpoint `:owner/:name` to `:repoID` - [x] redirect `:owner/:name` to `:repoID` in UI - [x] use badge with `:repoID` route in UI - [x] update `woodpecker-go` - [x] check cli - [x] add migrations / deprecation notes - [x] check if #648 got solved directly - [x] Test - [x] create repo - [x] repo pages - [x] ui redirects - [x] forge status links
This commit is contained in:
+1
-1
@@ -70,5 +70,5 @@ func FormatFlag(tmpl string, hidden ...bool) *cli.StringFlag {
|
||||
var RepoFlag = &cli.StringFlag{
|
||||
Name: "repository",
|
||||
Aliases: []string{"repo"},
|
||||
Usage: "repository name (e.g. octocat/hello-world)",
|
||||
Usage: "repository id or full-name (e.g. 134 or octocat/hello-world)",
|
||||
}
|
||||
|
||||
+16
-13
@@ -14,7 +14,7 @@ import (
|
||||
var cronCreateCmd = &cli.Command{
|
||||
Name: "add",
|
||||
Usage: "add a cron job",
|
||||
ArgsUsage: "[repo/name]",
|
||||
ArgsUsage: "[repo-id|repo-full-name]",
|
||||
Action: cronCreate,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.RepoFlag,
|
||||
@@ -38,29 +38,32 @@ var cronCreateCmd = &cli.Command{
|
||||
|
||||
func cronCreate(c *cli.Context) error {
|
||||
var (
|
||||
jobName = c.String("name")
|
||||
branch = c.String("branch")
|
||||
schedule = c.String("schedule")
|
||||
reponame = c.String("repository")
|
||||
format = c.String("format") + "\n"
|
||||
jobName = c.String("name")
|
||||
branch = c.String("branch")
|
||||
schedule = c.String("schedule")
|
||||
repoIDOrFullName = c.String("repository")
|
||||
format = c.String("format") + "\n"
|
||||
)
|
||||
if reponame == "" {
|
||||
reponame = c.Args().First()
|
||||
}
|
||||
owner, name, err := internal.ParseRepo(reponame)
|
||||
if err != nil {
|
||||
return err
|
||||
if repoIDOrFullName == "" {
|
||||
repoIDOrFullName = c.Args().First()
|
||||
}
|
||||
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
cron := &woodpecker.Cron{
|
||||
Name: jobName,
|
||||
Branch: branch,
|
||||
Schedule: schedule,
|
||||
}
|
||||
cron, err = client.CronCreate(owner, name, cron)
|
||||
cron, err = client.CronCreate(repoID, cron)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
+12
-11
@@ -13,7 +13,7 @@ import (
|
||||
var cronInfoCmd = &cli.Command{
|
||||
Name: "info",
|
||||
Usage: "display info about a cron job",
|
||||
ArgsUsage: "[repo/name]",
|
||||
ArgsUsage: "[repo-id|repo-full-name]",
|
||||
Action: cronInfo,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.RepoFlag,
|
||||
@@ -28,22 +28,23 @@ var cronInfoCmd = &cli.Command{
|
||||
|
||||
func cronInfo(c *cli.Context) error {
|
||||
var (
|
||||
jobID = c.Int64("id")
|
||||
reponame = c.String("repository")
|
||||
format = c.String("format") + "\n"
|
||||
jobID = c.Int64("id")
|
||||
repoIDOrFullName = c.String("repository")
|
||||
format = c.String("format") + "\n"
|
||||
)
|
||||
if reponame == "" {
|
||||
reponame = c.Args().First()
|
||||
}
|
||||
owner, name, err := internal.ParseRepo(reponame)
|
||||
if err != nil {
|
||||
return err
|
||||
if repoIDOrFullName == "" {
|
||||
repoIDOrFullName = c.Args().First()
|
||||
}
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cron, err := client.CronGet(owner, name, jobID)
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
cron, err := client.CronGet(repoID, jobID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
+10
-10
@@ -27,7 +27,7 @@ import (
|
||||
var cronListCmd = &cli.Command{
|
||||
Name: "ls",
|
||||
Usage: "list cron jobs",
|
||||
ArgsUsage: "[repo/name]",
|
||||
ArgsUsage: "[repo-id|repo-full-name]",
|
||||
Action: cronList,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.RepoFlag,
|
||||
@@ -37,21 +37,21 @@ var cronListCmd = &cli.Command{
|
||||
|
||||
func cronList(c *cli.Context) error {
|
||||
var (
|
||||
format = c.String("format") + "\n"
|
||||
reponame = c.String("repository")
|
||||
format = c.String("format") + "\n"
|
||||
repoIDOrFullName = c.String("repository")
|
||||
)
|
||||
if reponame == "" {
|
||||
reponame = c.Args().First()
|
||||
}
|
||||
owner, name, err := internal.ParseRepo(reponame)
|
||||
if err != nil {
|
||||
return err
|
||||
if repoIDOrFullName == "" {
|
||||
repoIDOrFullName = c.Args().First()
|
||||
}
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
list, err := client.CronList(owner, name)
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
list, err := client.CronList(repoID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
+10
-10
@@ -12,7 +12,7 @@ import (
|
||||
var cronDeleteCmd = &cli.Command{
|
||||
Name: "rm",
|
||||
Usage: "remove a cron job",
|
||||
ArgsUsage: "[repo/name]",
|
||||
ArgsUsage: "[repo-id|repo-full-name]",
|
||||
Action: cronDelete,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.RepoFlag,
|
||||
@@ -26,21 +26,21 @@ var cronDeleteCmd = &cli.Command{
|
||||
|
||||
func cronDelete(c *cli.Context) error {
|
||||
var (
|
||||
jobID = c.Int64("id")
|
||||
reponame = c.String("repository")
|
||||
jobID = c.Int64("id")
|
||||
repoIDOrFullName = c.String("repository")
|
||||
)
|
||||
if reponame == "" {
|
||||
reponame = c.Args().First()
|
||||
}
|
||||
owner, name, err := internal.ParseRepo(reponame)
|
||||
if err != nil {
|
||||
return err
|
||||
if repoIDOrFullName == "" {
|
||||
repoIDOrFullName = c.Args().First()
|
||||
}
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = client.CronDelete(owner, name, jobID)
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = client.CronDelete(repoID, jobID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
+12
-12
@@ -14,7 +14,7 @@ import (
|
||||
var cronUpdateCmd = &cli.Command{
|
||||
Name: "update",
|
||||
Usage: "update a cron job",
|
||||
ArgsUsage: "[repo/name]",
|
||||
ArgsUsage: "[repo-id|repo-full-name]",
|
||||
Action: cronUpdate,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.RepoFlag,
|
||||
@@ -41,21 +41,21 @@ var cronUpdateCmd = &cli.Command{
|
||||
|
||||
func cronUpdate(c *cli.Context) error {
|
||||
var (
|
||||
reponame = c.String("repository")
|
||||
jobID = c.Int64("id")
|
||||
jobName = c.String("name")
|
||||
branch = c.String("branch")
|
||||
schedule = c.String("schedule")
|
||||
format = c.String("format") + "\n"
|
||||
repoIDOrFullName = c.String("repository")
|
||||
jobID = c.Int64("id")
|
||||
jobName = c.String("name")
|
||||
branch = c.String("branch")
|
||||
schedule = c.String("schedule")
|
||||
format = c.String("format") + "\n"
|
||||
)
|
||||
if reponame == "" {
|
||||
reponame = c.Args().First()
|
||||
if repoIDOrFullName == "" {
|
||||
repoIDOrFullName = c.Args().First()
|
||||
}
|
||||
owner, name, err := internal.ParseRepo(reponame)
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
client, err := internal.NewClient(c)
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -65,7 +65,7 @@ func cronUpdate(c *cli.Context) error {
|
||||
Branch: branch,
|
||||
Schedule: schedule,
|
||||
}
|
||||
cron, err = client.CronUpdate(owner, name, cron)
|
||||
cron, err = client.CronUpdate(repoID, cron)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ import (
|
||||
var Command = &cli.Command{
|
||||
Name: "deploy",
|
||||
Usage: "deploy code",
|
||||
ArgsUsage: "<repo/name> <pipeline> <environment>",
|
||||
ArgsUsage: "<repo-id|repo-full-name> <pipeline> <environment>",
|
||||
Action: deploy,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.FormatFlag(tmplDeployInfo),
|
||||
@@ -59,13 +59,13 @@ var Command = &cli.Command{
|
||||
}
|
||||
|
||||
func deploy(c *cli.Context) error {
|
||||
repo := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
client, err := internal.NewClient(c)
|
||||
repo := c.Args().First()
|
||||
repoID, err := internal.ParseRepo(client, repo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -78,7 +78,7 @@ func deploy(c *cli.Context) error {
|
||||
var number int
|
||||
if pipelineArg == "last" {
|
||||
// Fetch the pipeline number from the last pipeline
|
||||
pipelines, berr := client.PipelineList(owner, name)
|
||||
pipelines, berr := client.PipelineList(repoID)
|
||||
if berr != nil {
|
||||
return berr
|
||||
}
|
||||
@@ -113,7 +113,7 @@ func deploy(c *cli.Context) error {
|
||||
|
||||
params := internal.ParseKeyPair(c.StringSlice("param"))
|
||||
|
||||
deploy, err := client.Deploy(owner, name, number, env, params)
|
||||
deploy, err := client.Deploy(repoID, number, env, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
+10
-8
@@ -5,6 +5,7 @@ import (
|
||||
"crypto/x509"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
@@ -76,15 +77,16 @@ func NewClient(c *cli.Context) (woodpecker.Client, error) {
|
||||
}
|
||||
|
||||
// ParseRepo parses the repository owner and name from a string.
|
||||
func ParseRepo(str string) (user, repo string, err error) {
|
||||
parts := strings.Split(str, "/")
|
||||
if len(parts) != 2 {
|
||||
err = fmt.Errorf("Error: Invalid or missing repository. eg octocat/hello-world")
|
||||
return
|
||||
func ParseRepo(client woodpecker.Client, str string) (repoID int64, err error) {
|
||||
if strings.Contains(str, "/") {
|
||||
repo, err := client.RepoLookup(str)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return repo.ID, nil
|
||||
}
|
||||
user = parts[0]
|
||||
repo = parts[1]
|
||||
return
|
||||
|
||||
return strconv.ParseInt(str, 10, 64)
|
||||
}
|
||||
|
||||
// ParseKeyPair parses a key=value pair.
|
||||
|
||||
+9
-10
@@ -27,14 +27,18 @@ import (
|
||||
var logPurgeCmd = &cli.Command{
|
||||
Name: "purge",
|
||||
Usage: "purge a log",
|
||||
ArgsUsage: "<repo/name> <pipeline>",
|
||||
ArgsUsage: "<repo-id|repo-full-name> <pipeline>",
|
||||
Action: logPurge,
|
||||
Flags: common.GlobalFlags,
|
||||
}
|
||||
|
||||
func logPurge(c *cli.Context) (err error) {
|
||||
repo := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
repoIDOrFullName := c.Args().First()
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -43,16 +47,11 @@ func logPurge(c *cli.Context) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
client, err := internal.NewClient(c)
|
||||
err = client.LogsPurge(repoID, number)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = client.LogsPurge(owner, name, number)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Printf("Purging logs for pipeline %s/%s#%d\n", owner, name, number)
|
||||
fmt.Printf("Purging logs for pipeline %s#%d\n", repoIDOrFullName, number)
|
||||
return nil
|
||||
}
|
||||
|
||||
+9
-10
@@ -27,14 +27,18 @@ import (
|
||||
var pipelineApproveCmd = &cli.Command{
|
||||
Name: "approve",
|
||||
Usage: "approve a pipeline",
|
||||
ArgsUsage: "<repo/name> <pipeline>",
|
||||
ArgsUsage: "<repo-id|repo-full-name> <pipeline>",
|
||||
Action: pipelineApprove,
|
||||
Flags: common.GlobalFlags,
|
||||
}
|
||||
|
||||
func pipelineApprove(c *cli.Context) (err error) {
|
||||
repo := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
repoIDOrFullName := c.Args().First()
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -43,16 +47,11 @@ func pipelineApprove(c *cli.Context) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
client, err := internal.NewClient(c)
|
||||
_, err = client.PipelineApprove(repoID, number)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = client.PipelineApprove(owner, name, number)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Printf("Approving pipeline %s/%s#%d\n", owner, name, number)
|
||||
fmt.Printf("Approving pipeline %s#%d\n", repoIDOrFullName, number)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ import (
|
||||
var pipelineCreateCmd = &cli.Command{
|
||||
Name: "create",
|
||||
Usage: "create new pipeline",
|
||||
ArgsUsage: "<repo/name>",
|
||||
ArgsUsage: "<repo-id|repo-full-name>",
|
||||
Action: pipelineCreate,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.FormatFlag(tmplPipelineList),
|
||||
@@ -47,14 +47,12 @@ var pipelineCreateCmd = &cli.Command{
|
||||
}
|
||||
|
||||
func pipelineCreate(c *cli.Context) error {
|
||||
repo := c.Args().First()
|
||||
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
repoIDOrFullName := c.Args().First()
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
client, err := internal.NewClient(c)
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -74,7 +72,7 @@ func pipelineCreate(c *cli.Context) error {
|
||||
Variables: variables,
|
||||
}
|
||||
|
||||
pipeline, err := client.PipelineCreate(owner, name, options)
|
||||
pipeline, err := client.PipelineCreate(repoID, options)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
+10
-10
@@ -27,32 +27,32 @@ import (
|
||||
var pipelineDeclineCmd = &cli.Command{
|
||||
Name: "decline",
|
||||
Usage: "decline a pipeline",
|
||||
ArgsUsage: "<repo/name> <pipeline>",
|
||||
ArgsUsage: "<repo-id|repo-full-name> <pipeline>",
|
||||
Action: pipelineDecline,
|
||||
Flags: common.GlobalFlags,
|
||||
}
|
||||
|
||||
func pipelineDecline(c *cli.Context) (err error) {
|
||||
repo := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
repoIDOrFullName := c.Args().First()
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
number, err := strconv.Atoi(c.Args().Get(1))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
client, err := internal.NewClient(c)
|
||||
_, err = client.PipelineDecline(repoID, number)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = client.PipelineDecline(owner, name, number)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Printf("Declining pipeline %s/%s#%d\n", owner, name, number)
|
||||
fmt.Printf("Declining pipeline %s#%d\n", repoIDOrFullName, number)
|
||||
return nil
|
||||
}
|
||||
|
||||
+9
-10
@@ -28,7 +28,7 @@ import (
|
||||
var pipelineInfoCmd = &cli.Command{
|
||||
Name: "info",
|
||||
Usage: "show pipeline details",
|
||||
ArgsUsage: "<repo/name> [pipeline]",
|
||||
ArgsUsage: "<repo-id|repo-full-name> [pipeline]",
|
||||
Action: pipelineInfo,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.FormatFlag(tmplPipelineInfo),
|
||||
@@ -36,22 +36,21 @@ var pipelineInfoCmd = &cli.Command{
|
||||
}
|
||||
|
||||
func pipelineInfo(c *cli.Context) error {
|
||||
repo := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
repoIDOrFullName := c.Args().First()
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
pipelineArg := c.Args().Get(1)
|
||||
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var number int
|
||||
if pipelineArg == "last" || len(pipelineArg) == 0 {
|
||||
// Fetch the pipeline number from the last pipeline
|
||||
pipeline, err := client.PipelineLast(owner, name, "")
|
||||
pipeline, err := client.PipelineLast(repoID, "")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -63,7 +62,7 @@ func pipelineInfo(c *cli.Context) error {
|
||||
}
|
||||
}
|
||||
|
||||
pipeline, err := client.Pipeline(owner, name, number)
|
||||
pipeline, err := client.Pipeline(repoID, number)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -27,33 +27,33 @@ import (
|
||||
var pipelineKillCmd = &cli.Command{
|
||||
Name: "kill",
|
||||
Usage: "force kill a pipeline",
|
||||
ArgsUsage: "<repo/name> <pipeline>",
|
||||
ArgsUsage: "<repo-id|repo-full-name> <pipeline>",
|
||||
Action: pipelineKill,
|
||||
Hidden: true,
|
||||
Flags: common.GlobalFlags,
|
||||
}
|
||||
|
||||
func pipelineKill(c *cli.Context) (err error) {
|
||||
repo := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
number, err := strconv.Atoi(c.Args().Get(1))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
repoIDOrFullName := c.Args().First()
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = client.PipelineKill(owner, name, number)
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Printf("Force killing pipeline %s/%s#%d\n", owner, name, number)
|
||||
err = client.PipelineKill(repoID, number)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Printf("Force killing pipeline %s#%d\n", repoIDOrFullName, number)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ import (
|
||||
var pipelineLastCmd = &cli.Command{
|
||||
Name: "last",
|
||||
Usage: "show latest pipeline details",
|
||||
ArgsUsage: "<repo/name>",
|
||||
ArgsUsage: "<repo-id|repo-full-name>",
|
||||
Action: pipelineLast,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.FormatFlag(tmplPipelineInfo),
|
||||
@@ -40,18 +40,17 @@ var pipelineLastCmd = &cli.Command{
|
||||
}
|
||||
|
||||
func pipelineLast(c *cli.Context) error {
|
||||
repo := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
repoIDOrFullName := c.Args().First()
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
pipeline, err := client.PipelineLast(owner, name, c.String("branch"))
|
||||
pipeline, err := client.PipelineLast(repoID, c.String("branch"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ import (
|
||||
var pipelineListCmd = &cli.Command{
|
||||
Name: "ls",
|
||||
Usage: "show pipeline history",
|
||||
ArgsUsage: "<repo/name>",
|
||||
ArgsUsage: "<repo-id|repo-full-name>",
|
||||
Action: pipelineList,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.FormatFlag(tmplPipelineList),
|
||||
@@ -52,18 +52,17 @@ var pipelineListCmd = &cli.Command{
|
||||
}
|
||||
|
||||
func pipelineList(c *cli.Context) error {
|
||||
repo := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
repoIDOrFullName := c.Args().First()
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
pipelines, err := client.PipelineList(owner, name)
|
||||
pipelines, err := client.PipelineList(repoID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -101,7 +100,7 @@ func pipelineList(c *cli.Context) error {
|
||||
}
|
||||
|
||||
// template for pipeline list information
|
||||
var tmplPipelineList = "\x1b[33mBuild #{{ .Number }} \x1b[0m" + `
|
||||
var tmplPipelineList = "\x1b[33mPipeline #{{ .Number }} \x1b[0m" + `
|
||||
Status: {{ .Status }}
|
||||
Event: {{ .Event }}
|
||||
Commit: {{ .Commit }}
|
||||
|
||||
@@ -27,14 +27,18 @@ import (
|
||||
var pipelineLogsCmd = &cli.Command{
|
||||
Name: "logs",
|
||||
Usage: "show pipeline logs",
|
||||
ArgsUsage: "<repo/name> [pipeline] [stepID]",
|
||||
ArgsUsage: "<repo-id|repo-full-name> [pipeline] [stepID]",
|
||||
Action: pipelineLogs,
|
||||
Flags: common.GlobalFlags,
|
||||
}
|
||||
|
||||
func pipelineLogs(c *cli.Context) error {
|
||||
repo := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
repoIDOrFullName := c.Args().First()
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -49,12 +53,7 @@ func pipelineLogs(c *cli.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
logs, err := client.StepLogEntries(owner, name, number, step)
|
||||
logs, err := client.StepLogEntries(repoID, number, step)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
+6
-8
@@ -28,7 +28,7 @@ import (
|
||||
var pipelinePsCmd = &cli.Command{
|
||||
Name: "ps",
|
||||
Usage: "show pipeline steps",
|
||||
ArgsUsage: "<repo/name> [pipeline]",
|
||||
ArgsUsage: "<repo-id|repo-full-name> [pipeline]",
|
||||
Action: pipelinePs,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.FormatFlag(tmplPipelinePs),
|
||||
@@ -36,14 +36,12 @@ var pipelinePsCmd = &cli.Command{
|
||||
}
|
||||
|
||||
func pipelinePs(c *cli.Context) error {
|
||||
repo := c.Args().First()
|
||||
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
repoIDOrFullName := c.Args().First()
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
client, err := internal.NewClient(c)
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -53,7 +51,7 @@ func pipelinePs(c *cli.Context) error {
|
||||
|
||||
if pipelineArg == "last" || len(pipelineArg) == 0 {
|
||||
// Fetch the pipeline number from the last pipeline
|
||||
pipeline, err := client.PipelineLast(owner, name, "")
|
||||
pipeline, err := client.PipelineLast(repoID, "")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -66,7 +64,7 @@ func pipelinePs(c *cli.Context) error {
|
||||
}
|
||||
}
|
||||
|
||||
pipeline, err := client.Pipeline(owner, name, number)
|
||||
pipeline, err := client.Pipeline(repoID, number)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ import (
|
||||
var pipelineStartCmd = &cli.Command{
|
||||
Name: "start",
|
||||
Usage: "start a pipeline",
|
||||
ArgsUsage: "<repo/name> [pipeline]",
|
||||
ArgsUsage: "<repo-id|repo-full-name> [pipeline]",
|
||||
Action: pipelineStart,
|
||||
Flags: append(common.GlobalFlags,
|
||||
&cli.StringSliceFlag{
|
||||
@@ -40,13 +40,12 @@ var pipelineStartCmd = &cli.Command{
|
||||
}
|
||||
|
||||
func pipelineStart(c *cli.Context) (err error) {
|
||||
repo := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
repoIDOrFullName := c.Args().First()
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
client, err := internal.NewClient(c)
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -55,7 +54,7 @@ func pipelineStart(c *cli.Context) (err error) {
|
||||
var number int
|
||||
if pipelineArg == "last" {
|
||||
// Fetch the pipeline number from the last pipeline
|
||||
pipeline, err := client.PipelineLast(owner, name, "")
|
||||
pipeline, err := client.PipelineLast(repoID, "")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -72,11 +71,11 @@ func pipelineStart(c *cli.Context) (err error) {
|
||||
|
||||
params := internal.ParseKeyPair(c.StringSlice("param"))
|
||||
|
||||
pipeline, err := client.PipelineStart(owner, name, number, params)
|
||||
pipeline, err := client.PipelineStart(repoID, number, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Printf("Starting pipeline %s/%s#%d\n", owner, name, pipeline.Number)
|
||||
fmt.Printf("Starting pipeline %s#%d\n", repoIDOrFullName, pipeline.Number)
|
||||
return nil
|
||||
}
|
||||
|
||||
+9
-10
@@ -27,14 +27,18 @@ import (
|
||||
var pipelineStopCmd = &cli.Command{
|
||||
Name: "stop",
|
||||
Usage: "stop a pipeline",
|
||||
ArgsUsage: "<repo/name> [pipeline]",
|
||||
ArgsUsage: "<repo-id|repo-full-name> [pipeline]",
|
||||
Flags: common.GlobalFlags,
|
||||
Action: pipelineStop,
|
||||
}
|
||||
|
||||
func pipelineStop(c *cli.Context) (err error) {
|
||||
repo := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
repoIDOrFullName := c.Args().First()
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -43,16 +47,11 @@ func pipelineStop(c *cli.Context) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
client, err := internal.NewClient(c)
|
||||
err = client.PipelineStop(repoID, number)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = client.PipelineStop(owner, name, number)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Printf("Stopping pipeline %s/%s#%d\n", owner, name, number)
|
||||
fmt.Printf("Stopping pipeline %s#%d\n", repoIDOrFullName, number)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
var registryCreateCmd = &cli.Command{
|
||||
Name: "add",
|
||||
Usage: "adds a registry",
|
||||
ArgsUsage: "[repo/name]",
|
||||
ArgsUsage: "[repo-id|repo-full-name]",
|
||||
Action: registryCreate,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.RepoFlag,
|
||||
@@ -36,19 +36,19 @@ var registryCreateCmd = &cli.Command{
|
||||
|
||||
func registryCreate(c *cli.Context) error {
|
||||
var (
|
||||
hostname = c.String("hostname")
|
||||
username = c.String("username")
|
||||
password = c.String("password")
|
||||
reponame = c.String("repository")
|
||||
hostname = c.String("hostname")
|
||||
username = c.String("username")
|
||||
password = c.String("password")
|
||||
repoIDOrFullName = c.String("repository")
|
||||
)
|
||||
if reponame == "" {
|
||||
reponame = c.Args().First()
|
||||
if repoIDOrFullName == "" {
|
||||
repoIDOrFullName = c.Args().First()
|
||||
}
|
||||
owner, name, err := internal.ParseRepo(reponame)
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
client, err := internal.NewClient(c)
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -65,7 +65,7 @@ func registryCreate(c *cli.Context) error {
|
||||
}
|
||||
registry.Password = string(out)
|
||||
}
|
||||
_, err = client.RegistryCreate(owner, name, registry)
|
||||
_, err = client.RegistryCreate(repoID, registry)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ import (
|
||||
var registryInfoCmd = &cli.Command{
|
||||
Name: "info",
|
||||
Usage: "display registry info",
|
||||
ArgsUsage: "[repo/name]",
|
||||
ArgsUsage: "[repo-id|repo-full-name]",
|
||||
Action: registryInfo,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.RepoFlag,
|
||||
@@ -28,22 +28,22 @@ var registryInfoCmd = &cli.Command{
|
||||
|
||||
func registryInfo(c *cli.Context) error {
|
||||
var (
|
||||
hostname = c.String("hostname")
|
||||
reponame = c.String("repository")
|
||||
format = c.String("format") + "\n"
|
||||
hostname = c.String("hostname")
|
||||
repoIDOrFullName = c.String("repository")
|
||||
format = c.String("format") + "\n"
|
||||
)
|
||||
if reponame == "" {
|
||||
reponame = c.Args().First()
|
||||
}
|
||||
owner, name, err := internal.ParseRepo(reponame)
|
||||
if err != nil {
|
||||
return err
|
||||
if repoIDOrFullName == "" {
|
||||
repoIDOrFullName = c.Args().First()
|
||||
}
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
registry, err := client.Registry(owner, name, hostname)
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
registry, err := client.Registry(repoID, hostname)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ import (
|
||||
var registryListCmd = &cli.Command{
|
||||
Name: "ls",
|
||||
Usage: "list registries",
|
||||
ArgsUsage: "[repo/name]",
|
||||
ArgsUsage: "[repo-id|repo-full-name]",
|
||||
Action: registryList,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.RepoFlag,
|
||||
@@ -37,21 +37,21 @@ var registryListCmd = &cli.Command{
|
||||
|
||||
func registryList(c *cli.Context) error {
|
||||
var (
|
||||
format = c.String("format") + "\n"
|
||||
reponame = c.String("repository")
|
||||
format = c.String("format") + "\n"
|
||||
repoIDOrFullName = c.String("repository")
|
||||
)
|
||||
if reponame == "" {
|
||||
reponame = c.Args().First()
|
||||
}
|
||||
owner, name, err := internal.ParseRepo(reponame)
|
||||
if err != nil {
|
||||
return err
|
||||
if repoIDOrFullName == "" {
|
||||
repoIDOrFullName = c.Args().First()
|
||||
}
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
list, err := client.RegistryList(owner, name)
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
list, err := client.RegistryList(repoID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
+10
-10
@@ -10,7 +10,7 @@ import (
|
||||
var registryDeleteCmd = &cli.Command{
|
||||
Name: "rm",
|
||||
Usage: "remove a registry",
|
||||
ArgsUsage: "[repo/name]",
|
||||
ArgsUsage: "[repo-id|repo-full-name]",
|
||||
Action: registryDelete,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.RepoFlag,
|
||||
@@ -24,19 +24,19 @@ var registryDeleteCmd = &cli.Command{
|
||||
|
||||
func registryDelete(c *cli.Context) error {
|
||||
var (
|
||||
hostname = c.String("hostname")
|
||||
reponame = c.String("repository")
|
||||
hostname = c.String("hostname")
|
||||
repoIDOrFullName = c.String("repository")
|
||||
)
|
||||
if reponame == "" {
|
||||
reponame = c.Args().First()
|
||||
}
|
||||
owner, name, err := internal.ParseRepo(reponame)
|
||||
if err != nil {
|
||||
return err
|
||||
if repoIDOrFullName == "" {
|
||||
repoIDOrFullName = c.Args().First()
|
||||
}
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return client.RegistryDelete(owner, name, hostname)
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return client.RegistryDelete(repoID, hostname)
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
var registryUpdateCmd = &cli.Command{
|
||||
Name: "update",
|
||||
Usage: "update a registry",
|
||||
ArgsUsage: "[repo/name]",
|
||||
ArgsUsage: "[repo-id|repo-full-name]",
|
||||
Action: registryUpdate,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.RepoFlag,
|
||||
@@ -36,19 +36,19 @@ var registryUpdateCmd = &cli.Command{
|
||||
|
||||
func registryUpdate(c *cli.Context) error {
|
||||
var (
|
||||
hostname = c.String("hostname")
|
||||
username = c.String("username")
|
||||
password = c.String("password")
|
||||
reponame = c.String("repository")
|
||||
hostname = c.String("hostname")
|
||||
username = c.String("username")
|
||||
password = c.String("password")
|
||||
repoIDOrFullName = c.String("repository")
|
||||
)
|
||||
if reponame == "" {
|
||||
reponame = c.Args().First()
|
||||
if repoIDOrFullName == "" {
|
||||
repoIDOrFullName = c.Args().First()
|
||||
}
|
||||
owner, name, err := internal.ParseRepo(reponame)
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
client, err := internal.NewClient(c)
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -65,9 +65,6 @@ func registryUpdate(c *cli.Context) error {
|
||||
}
|
||||
registry.Password = string(out)
|
||||
}
|
||||
_, err = client.RegistryUpdate(owner, name, registry)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
_, err = client.RegistryUpdate(repoID, registry)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package repo
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
"github.com/urfave/cli/v2"
|
||||
|
||||
@@ -12,16 +13,16 @@ import (
|
||||
var repoAddCmd = &cli.Command{
|
||||
Name: "add",
|
||||
Usage: "add a repository",
|
||||
ArgsUsage: "<repo/name>",
|
||||
ArgsUsage: "<forge-remote-id>",
|
||||
Action: repoAdd,
|
||||
Flags: common.GlobalFlags,
|
||||
}
|
||||
|
||||
func repoAdd(c *cli.Context) error {
|
||||
repo := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
_forgeRemoteID := c.Args().First()
|
||||
forgeRemoteID, err := strconv.Atoi(_forgeRemoteID)
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("invalid forge remote id: %s", _forgeRemoteID)
|
||||
}
|
||||
|
||||
client, err := internal.NewClient(c)
|
||||
@@ -29,9 +30,11 @@ func repoAdd(c *cli.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err := client.RepoPost(owner, name); err != nil {
|
||||
repo, err := client.RepoPost(int64(forgeRemoteID))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Printf("Successfully activated repository %s/%s\n", owner, name)
|
||||
|
||||
fmt.Printf("Successfully activated repository with forge remote %s\n", repo.FullName)
|
||||
return nil
|
||||
}
|
||||
|
||||
+11
-10
@@ -12,26 +12,27 @@ import (
|
||||
var repoChownCmd = &cli.Command{
|
||||
Name: "chown",
|
||||
Usage: "assume ownership of a repository",
|
||||
ArgsUsage: "<repo/name>",
|
||||
ArgsUsage: "<repo-id|repo-full-name>",
|
||||
Action: repoChown,
|
||||
Flags: common.GlobalFlags,
|
||||
}
|
||||
|
||||
func repoChown(c *cli.Context) error {
|
||||
repo := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
repoIDOrFullName := c.Args().First()
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err := client.RepoChown(owner, name); err != nil {
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Printf("Successfully assumed ownership of repository %s/%s\n", owner, name)
|
||||
|
||||
repo, err := client.RepoChown(repoID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Printf("Successfully assumed ownership of repository %s\n", repo.FullName)
|
||||
return nil
|
||||
}
|
||||
|
||||
+11
-11
@@ -13,7 +13,7 @@ import (
|
||||
var repoInfoCmd = &cli.Command{
|
||||
Name: "info",
|
||||
Usage: "show repository details",
|
||||
ArgsUsage: "<repo/name>",
|
||||
ArgsUsage: "<repo-id|repo-full-name>",
|
||||
Action: repoInfo,
|
||||
Flags: append(common.GlobalFlags,
|
||||
common.FormatFlag(tmplRepoInfo),
|
||||
@@ -21,18 +21,17 @@ var repoInfoCmd = &cli.Command{
|
||||
}
|
||||
|
||||
func repoInfo(c *cli.Context) error {
|
||||
arg := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(arg)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
repoIDOrFullName := c.Args().First()
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
repo, err := client.Repo(owner, name)
|
||||
repo, err := client.Repo(repoID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -47,11 +46,12 @@ func repoInfo(c *cli.Context) error {
|
||||
// template for repo information
|
||||
var tmplRepoInfo = `Owner: {{ .Owner }}
|
||||
Repo: {{ .Name }}
|
||||
Type: {{ .Kind }}
|
||||
Config: {{ .Config }}
|
||||
Link: {{ .Link }}
|
||||
Config path: {{ .Config }}
|
||||
Visibility: {{ .Visibility }}
|
||||
Private: {{ .IsSCMPrivate }}
|
||||
Trusted: {{ .IsTrusted }}
|
||||
Gated: {{ .IsGated }}
|
||||
Forge: {{ .Clone }}
|
||||
Clone url: {{ .Clone }}
|
||||
Allow pull-requests: {{ .AllowPullRequests }}
|
||||
`
|
||||
|
||||
@@ -53,4 +53,4 @@ func repoList(c *cli.Context) error {
|
||||
}
|
||||
|
||||
// template for repository list items
|
||||
var tmplRepoList = `{{ .FullName }}`
|
||||
var tmplRepoList = "\x1b[33m{{ .FullName }}\x1b[0m (id: {{ .ID }})"
|
||||
|
||||
+15
-7
@@ -1,6 +1,8 @@
|
||||
package repo
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/urfave/cli/v2"
|
||||
|
||||
"github.com/woodpecker-ci/woodpecker/cli/common"
|
||||
@@ -10,20 +12,26 @@ import (
|
||||
var repoRepairCmd = &cli.Command{
|
||||
Name: "repair",
|
||||
Usage: "repair repository webhooks",
|
||||
ArgsUsage: "<repo/name>",
|
||||
ArgsUsage: "<repo-id|repo-full-name>",
|
||||
Action: repoRepair,
|
||||
Flags: common.GlobalFlags,
|
||||
}
|
||||
|
||||
func repoRepair(c *cli.Context) error {
|
||||
repo := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
repoIDOrFullName := c.Args().First()
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return client.RepoRepair(owner, name)
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := client.RepoRepair(repoID); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Printf("Successfully removed repository %s\n", repoIDOrFullName)
|
||||
return nil
|
||||
}
|
||||
|
||||
+9
-10
@@ -12,26 +12,25 @@ import (
|
||||
var repoRemoveCmd = &cli.Command{
|
||||
Name: "rm",
|
||||
Usage: "remove a repository",
|
||||
ArgsUsage: "<repo/name>",
|
||||
ArgsUsage: "<repo-id|repo-full-name>",
|
||||
Action: repoRemove,
|
||||
Flags: common.GlobalFlags,
|
||||
}
|
||||
|
||||
func repoRemove(c *cli.Context) error {
|
||||
repo := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
repoIDOrFullName := c.Args().First()
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := client.RepoDel(owner, name); err != nil {
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Printf("Successfully removed repository %s/%s\n", owner, name)
|
||||
|
||||
if err := client.RepoDel(repoID); err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Printf("Successfully removed repository %s\n", repoIDOrFullName)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ var repoSyncCmd = &cli.Command{
|
||||
),
|
||||
}
|
||||
|
||||
// TODO: remove this and add an option to the list cmd as we do not store the remote repo list anymore
|
||||
func repoSync(c *cli.Context) error {
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
|
||||
@@ -28,7 +28,7 @@ import (
|
||||
var repoUpdateCmd = &cli.Command{
|
||||
Name: "update",
|
||||
Usage: "update a repository",
|
||||
ArgsUsage: "<repo/name>",
|
||||
ArgsUsage: "<repo-id|repo-full-name>",
|
||||
Action: repoUpdate,
|
||||
Flags: append(common.GlobalFlags,
|
||||
&cli.BoolFlag{
|
||||
@@ -63,13 +63,12 @@ var repoUpdateCmd = &cli.Command{
|
||||
}
|
||||
|
||||
func repoUpdate(c *cli.Context) error {
|
||||
repo := c.Args().First()
|
||||
owner, name, err := internal.ParseRepo(repo)
|
||||
repoIDOrFullName := c.Args().First()
|
||||
client, err := internal.NewClient(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
client, err := internal.NewClient(c)
|
||||
repoID, err := internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -111,9 +110,11 @@ func repoUpdate(c *cli.Context) error {
|
||||
patch.PipelineCounter = &pipelineCounter
|
||||
}
|
||||
|
||||
if _, err := client.RepoPatch(owner, name, patch); err != nil {
|
||||
repo, err := client.RepoPatch(repoID, patch)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Printf("Successfully updated repository %s/%s\n", owner, name)
|
||||
|
||||
fmt.Printf("Successfully updated repository %s\n", repo.FullName)
|
||||
return nil
|
||||
}
|
||||
|
||||
+19
-13
@@ -7,6 +7,7 @@ import (
|
||||
|
||||
"github.com/woodpecker-ci/woodpecker/cli/common"
|
||||
"github.com/woodpecker-ci/woodpecker/cli/internal"
|
||||
"github.com/woodpecker-ci/woodpecker/woodpecker-go/woodpecker"
|
||||
)
|
||||
|
||||
// Command exports the secret command.
|
||||
@@ -23,24 +24,29 @@ var Command = &cli.Command{
|
||||
},
|
||||
}
|
||||
|
||||
func parseTargetArgs(c *cli.Context) (global bool, owner, name string, err error) {
|
||||
func parseTargetArgs(client woodpecker.Client, c *cli.Context) (global bool, owner string, repoID int64, err error) {
|
||||
if c.Bool("global") {
|
||||
return true, "", "", nil
|
||||
return true, "", -1, nil
|
||||
}
|
||||
|
||||
repoIDOrFullName := c.String("repository")
|
||||
if repoIDOrFullName == "" {
|
||||
repoIDOrFullName = c.Args().First()
|
||||
}
|
||||
|
||||
orgName := c.String("organization")
|
||||
repoName := c.String("repository")
|
||||
if orgName == "" && repoName == "" {
|
||||
repoName = c.Args().First()
|
||||
if orgName != "" && repoIDOrFullName == "" {
|
||||
return false, orgName, -1, err
|
||||
}
|
||||
if orgName == "" && !strings.Contains(repoName, "/") {
|
||||
orgName = repoName
|
||||
|
||||
if orgName != "" && !strings.Contains(repoIDOrFullName, "/") {
|
||||
repoIDOrFullName = orgName + "/" + repoIDOrFullName
|
||||
}
|
||||
if orgName != "" {
|
||||
return false, orgName, "", err
|
||||
}
|
||||
owner, name, err = internal.ParseRepo(repoName)
|
||||
|
||||
repoID, err = internal.ParseRepo(client, repoIDOrFullName)
|
||||
if err != nil {
|
||||
return false, "", "", err
|
||||
return false, "", -1, err
|
||||
}
|
||||
return false, owner, name, nil
|
||||
|
||||
return false, "", repoID, nil
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
var secretCreateCmd = &cli.Command{
|
||||
Name: "add",
|
||||
Usage: "adds a secret",
|
||||
ArgsUsage: "[org/repo|org]",
|
||||
ArgsUsage: "[repo-id|repo-full-name]",
|
||||
Action: secretCreate,
|
||||
Flags: append(common.GlobalFlags,
|
||||
&cli.BoolFlag{
|
||||
@@ -74,7 +74,7 @@ func secretCreate(c *cli.Context) error {
|
||||
secret.Value = string(out)
|
||||
}
|
||||
|
||||
global, owner, repo, err := parseTargetArgs(c)
|
||||
global, owner, repoID, err := parseTargetArgs(client, c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -83,11 +83,11 @@ func secretCreate(c *cli.Context) error {
|
||||
_, err = client.GlobalSecretCreate(secret)
|
||||
return err
|
||||
}
|
||||
if repo == "" {
|
||||
if owner != "" {
|
||||
_, err = client.OrgSecretCreate(owner, secret)
|
||||
return err
|
||||
}
|
||||
_, err = client.SecretCreate(owner, repo, secret)
|
||||
_, err = client.SecretCreate(repoID, secret)
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
var secretInfoCmd = &cli.Command{
|
||||
Name: "info",
|
||||
Usage: "display secret info",
|
||||
ArgsUsage: "[org/repo|org]",
|
||||
ArgsUsage: "[repo-id|repo-full-name]",
|
||||
Action: secretInfo,
|
||||
Flags: append(common.GlobalFlags,
|
||||
&cli.BoolFlag{
|
||||
@@ -44,7 +44,7 @@ func secretInfo(c *cli.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
global, owner, repo, err := parseTargetArgs(c)
|
||||
global, owner, repoID, err := parseTargetArgs(client, c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -55,13 +55,13 @@ func secretInfo(c *cli.Context) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else if repo == "" {
|
||||
} else if owner != "" {
|
||||
secret, err = client.OrgSecret(owner, secretName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
secret, err = client.Secret(owner, repo, secretName)
|
||||
secret, err = client.Secret(repoID, secretName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ import (
|
||||
var secretListCmd = &cli.Command{
|
||||
Name: "ls",
|
||||
Usage: "list secrets",
|
||||
ArgsUsage: "[org/name|org]",
|
||||
ArgsUsage: "[repo-id|repo-full-name]",
|
||||
Action: secretList,
|
||||
Flags: append(common.GlobalFlags,
|
||||
&cli.BoolFlag{
|
||||
@@ -39,7 +39,7 @@ func secretList(c *cli.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
global, owner, repo, err := parseTargetArgs(c)
|
||||
global, owner, repoID, err := parseTargetArgs(client, c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -50,13 +50,13 @@ func secretList(c *cli.Context) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else if repo == "" {
|
||||
} else if owner != "" {
|
||||
list, err = client.OrgSecretList(owner)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
list, err = client.SecretList(owner, repo)
|
||||
list, err = client.SecretList(repoID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import (
|
||||
var secretDeleteCmd = &cli.Command{
|
||||
Name: "rm",
|
||||
Usage: "remove a secret",
|
||||
ArgsUsage: "[org/repo|org]",
|
||||
ArgsUsage: "[repo-id|repo-full-name]",
|
||||
Action: secretDelete,
|
||||
Flags: append(common.GlobalFlags,
|
||||
&cli.BoolFlag{
|
||||
@@ -37,7 +37,7 @@ func secretDelete(c *cli.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
global, owner, repo, err := parseTargetArgs(c)
|
||||
global, owner, repoID, err := parseTargetArgs(client, c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -45,8 +45,8 @@ func secretDelete(c *cli.Context) error {
|
||||
if global {
|
||||
return client.GlobalSecretDelete(secretName)
|
||||
}
|
||||
if repo == "" {
|
||||
if owner != "" {
|
||||
return client.OrgSecretDelete(owner, secretName)
|
||||
}
|
||||
return client.SecretDelete(owner, repo, secretName)
|
||||
return client.SecretDelete(repoID, secretName)
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
var secretUpdateCmd = &cli.Command{
|
||||
Name: "update",
|
||||
Usage: "update a secret",
|
||||
ArgsUsage: "[org/repo|org]",
|
||||
ArgsUsage: "[repo-id|repo-full-name]",
|
||||
Action: secretUpdate,
|
||||
Flags: append(common.GlobalFlags,
|
||||
&cli.BoolFlag{
|
||||
@@ -71,7 +71,7 @@ func secretUpdate(c *cli.Context) error {
|
||||
secret.Value = string(out)
|
||||
}
|
||||
|
||||
global, owner, repo, err := parseTargetArgs(c)
|
||||
global, owner, repoID, err := parseTargetArgs(client, c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -80,10 +80,10 @@ func secretUpdate(c *cli.Context) error {
|
||||
_, err = client.GlobalSecretUpdate(secret)
|
||||
return err
|
||||
}
|
||||
if repo == "" {
|
||||
if owner != "" {
|
||||
_, err = client.OrgSecretUpdate(owner, secret)
|
||||
return err
|
||||
}
|
||||
_, err = client.SecretUpdate(owner, repo, secret)
|
||||
_, err = client.SecretUpdate(repoID, secret)
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user