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:
Anbraten
2023-06-12 16:07:52 -07:00
committed by GitHub
parent e3593cd9a4
commit ff01a9ff1d
98 changed files with 1402 additions and 1676 deletions

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}