From 3831e9cb442ec6ac7098271d447e7475219d688e Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Mon, 21 Sep 2020 04:50:38 +0200 Subject: [PATCH 1/7] Release List: add Status --- cmd/releases.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cmd/releases.go b/cmd/releases.go index daafd3b..5f19316 100644 --- a/cmd/releases.go +++ b/cmd/releases.go @@ -38,6 +38,7 @@ func runReleases(ctx *cli.Context) error { "Tag-Name", "Title", "Published At", + "Status", "Tar URL", } @@ -49,12 +50,19 @@ func runReleases(ctx *cli.Context) error { } for _, release := range releases { + status := "released" + if release.IsDraft { + status = "draft" + } else if release.IsPrerelease { + status = "prerelease" + } values = append( values, []string{ release.TagName, release.Title, release.PublishedAt.Format("2006-01-02 15:04:05"), + status, release.TarURL, }, ) -- 2.40.1 From fee2e819645f84e389b5b8c64554216acd7f2586 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Mon, 21 Sep 2020 04:51:01 +0200 Subject: [PATCH 2/7] Add: "Delete a release" --- cmd/releases.go | 54 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/cmd/releases.go b/cmd/releases.go index 5f19316..315473b 100644 --- a/cmd/releases.go +++ b/cmd/releases.go @@ -5,6 +5,7 @@ package cmd import ( + "fmt" "log" "os" "path/filepath" @@ -22,6 +23,7 @@ var CmdReleases = cli.Command{ Action: runReleases, Subcommands: []*cli.Command{ &CmdReleaseCreate, + &CmdReleaseDelete, }, Flags: AllDefaultFlags, } @@ -72,7 +74,7 @@ func runReleases(ctx *cli.Context) error { return nil } -// CmdReleaseCreate represents a sub command of Release to create release. +// CmdReleaseCreate represents a sub command of Release to create release var CmdReleaseCreate = cli.Command{ Name: "create", Usage: "Create a release", @@ -154,3 +156,53 @@ func runReleaseCreate(ctx *cli.Context) error { return nil } + +// CmdReleaseDelete represents a sub command of Release to delete a release +var CmdReleaseDelete = cli.Command{ + Name: "delete", + Usage: "Delete a release", + Description: `Delete a release`, + ArgsUsage: "[]", + Action: runReleaseDelete, + Flags: LoginRepoFlags, +} + +func runReleaseDelete(ctx *cli.Context) error { + login, owner, repo := initCommand() + client := login.Client() + + tag := ctx.Args().First() + if len(tag) == 0 { + fmt.Println("Release tag needed to delete") + return nil + } + + release, err := getReleaseByTag(owner, repo, tag, client) + if err != nil { + return err + } + if release == nil { + return nil + } + + _, err = client.DeleteRelease(owner, repo, release.ID) + return err +} + +func getReleaseByTag(owner, repo, tag string, client *gitea.Client) (*gitea.Release, error) { + rl, _, err := client.ListReleases(owner, repo, gitea.ListReleasesOptions{}) + if err != nil { + return nil, err + } + if len(rl) == 0 { + fmt.Println("Repo does not have any release") + return nil, nil + } + for _, r := range rl { + if r.TagName == tag { + return r, nil + } + } + fmt.Println("Release tag does not exist") + return nil, nil +} -- 2.40.1 From 791aedddc4f2d04a4ee9ad53b11ee35b9c831b13 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Mon, 21 Sep 2020 04:54:39 +0200 Subject: [PATCH 3/7] Release Create: better error handling --- cmd/releases.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/cmd/releases.go b/cmd/releases.go index 315473b..c036036 100644 --- a/cmd/releases.go +++ b/cmd/releases.go @@ -7,6 +7,7 @@ package cmd import ( "fmt" "log" + "net/http" "os" "path/filepath" @@ -120,7 +121,7 @@ var CmdReleaseCreate = cli.Command{ func runReleaseCreate(ctx *cli.Context) error { login, owner, repo := initCommand() - release, _, err := login.Client().CreateRelease(owner, repo, gitea.CreateReleaseOption{ + release, resp, err := login.Client().CreateRelease(owner, repo, gitea.CreateReleaseOption{ TagName: ctx.String("tag"), Target: ctx.String("target"), Title: ctx.String("title"), @@ -130,10 +131,10 @@ func runReleaseCreate(ctx *cli.Context) error { }) if err != nil { - if err.Error() == "409 Conflict" { - log.Fatal("error: There already is a release for this tag") + if resp != nil && resp.StatusCode == http.StatusConflict { + fmt.Println("error: There already is a release for this tag") + return nil } - log.Fatal(err) } -- 2.40.1 From 44107ede75393f61fcfd17abda14057c73960658 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Mon, 21 Sep 2020 05:10:01 +0200 Subject: [PATCH 4/7] Add Edit a release --- cmd/releases.go | 86 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/cmd/releases.go b/cmd/releases.go index c036036..4126a0c 100644 --- a/cmd/releases.go +++ b/cmd/releases.go @@ -25,6 +25,7 @@ var CmdReleases = cli.Command{ Subcommands: []*cli.Command{ &CmdReleaseCreate, &CmdReleaseDelete, + &CmdReleaseEdit, }, Flags: AllDefaultFlags, } @@ -207,3 +208,88 @@ func getReleaseByTag(owner, repo, tag string, client *gitea.Client) (*gitea.Rele fmt.Println("Release tag does not exist") return nil, nil } + +// CmdReleaseEdit represents a sub command of Release to edit releases +var CmdReleaseEdit = cli.Command{ + Name: "edit", + Usage: "Edit a release", + Description: `Edit a release`, + Action: runReleaseEdit, + Flags: append([]cli.Flag{ + &cli.StringFlag{ + Name: "tag", + Usage: "Change Tag", + }, + &cli.StringFlag{ + Name: "target", + Usage: "Change Target", + }, + &cli.StringFlag{ + Name: "title", + Aliases: []string{"t"}, + Usage: "Change Title", + }, + &cli.StringFlag{ + Name: "note", + Aliases: []string{"n"}, + Usage: "Change Notes", + }, + &cli.BoolFlag{ + Name: "draft", + Aliases: []string{"d"}, + Usage: "Mark as Draft", + }, + &cli.BoolFlag{ + Name: "prerelease", + Aliases: []string{"p"}, + Usage: "Mark as Pre-Release", + }, + &cli.BoolFlag{ + Name: "release", + Usage: "Release Draft/Pre-Release", + }, + }, LoginRepoFlags...), +} + +func runReleaseEdit(ctx *cli.Context) error { + login, owner, repo := initCommand() + client := login.Client() + + tag := ctx.Args().First() + if len(tag) == 0 { + fmt.Println("Release tag needed to delete") + return nil + } + + release, err := getReleaseByTag(owner, repo, tag, client) + if err != nil { + return err + } + if release == nil { + return nil + } + + var isDraft, isPre *bool + bTrue := true + bFalse := false + if ctx.IsSet("draft") { + isDraft = &bTrue + } + if ctx.IsSet("prerelease") { + isPre = &bTrue + } + if ctx.IsSet("release") { + isDraft = &bFalse + isPre = &bFalse + } + + _, _, err = client.EditRelease(owner, repo, release.ID, gitea.EditReleaseOption{ + TagName: ctx.String("tag"), + Target: ctx.String("target"), + Title: ctx.String("title"), + Note: ctx.String("note"), + IsDraft: isDraft, + IsPrerelease: isPre, + }) + return err +} -- 2.40.1 From 97b753164d46b0030f98340732d015fabe2ecd11 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Mon, 21 Sep 2020 05:16:50 +0200 Subject: [PATCH 5/7] Releases: add "ls" and more --- cmd/releases.go | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/cmd/releases.go b/cmd/releases.go index 4126a0c..61364da 100644 --- a/cmd/releases.go +++ b/cmd/releases.go @@ -18,11 +18,13 @@ import ( // CmdReleases represents to login a gitea server. var CmdReleases = cli.Command{ - Name: "releases", - Usage: "Create releases", - Description: `Create releases`, + Name: "release", + Aliases: []string{"releases"}, + Usage: "Manage releases", + Description: "Manage releases", Action: runReleases, Subcommands: []*cli.Command{ + &CmdReleaseList, &CmdReleaseCreate, &CmdReleaseDelete, &CmdReleaseEdit, @@ -30,6 +32,15 @@ var CmdReleases = cli.Command{ Flags: AllDefaultFlags, } +// CmdReleaseList represents a sub command of Release to list releases +var CmdReleaseList = cli.Command{ + Name: "ls", + Usage: "List Releases", + Description: "List Releases", + Action: runReleases, + Flags: AllDefaultFlags, +} + func runReleases(ctx *cli.Context) error { login, owner, repo := initCommand() @@ -116,7 +127,7 @@ var CmdReleaseCreate = cli.Command{ Aliases: []string{"a"}, Usage: "List of files to attach", }, - }, LoginRepoFlags...), + }, AllDefaultFlags...), } func runReleaseCreate(ctx *cli.Context) error { @@ -166,7 +177,7 @@ var CmdReleaseDelete = cli.Command{ Description: `Delete a release`, ArgsUsage: "[]", Action: runReleaseDelete, - Flags: LoginRepoFlags, + Flags: AllDefaultFlags, } func runReleaseDelete(ctx *cli.Context) error { @@ -245,10 +256,10 @@ var CmdReleaseEdit = cli.Command{ Usage: "Mark as Pre-Release", }, &cli.BoolFlag{ - Name: "release", - Usage: "Release Draft/Pre-Release", + Name: "release", + Usage: "Release Draft/Pre-Release", }, - }, LoginRepoFlags...), + }, AllDefaultFlags...), } func runReleaseEdit(ctx *cli.Context) error { -- 2.40.1 From e821a7f42da626699c9e07df8f30ff5a5356be0f Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Wed, 23 Sep 2020 21:08:20 +0200 Subject: [PATCH 6/7] fix msg's --- cmd/releases.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmd/releases.go b/cmd/releases.go index 61364da..66867a7 100644 --- a/cmd/releases.go +++ b/cmd/releases.go @@ -175,7 +175,7 @@ var CmdReleaseDelete = cli.Command{ Name: "delete", Usage: "Delete a release", Description: `Delete a release`, - ArgsUsage: "[]", + ArgsUsage: "", Action: runReleaseDelete, Flags: AllDefaultFlags, } @@ -225,6 +225,7 @@ var CmdReleaseEdit = cli.Command{ Name: "edit", Usage: "Edit a release", Description: `Edit a release`, + ArgsUsage: "", Action: runReleaseEdit, Flags: append([]cli.Flag{ &cli.StringFlag{ @@ -268,7 +269,7 @@ func runReleaseEdit(ctx *cli.Context) error { tag := ctx.Args().First() if len(tag) == 0 { - fmt.Println("Release tag needed to delete") + fmt.Println("Release tag needed to edit") return nil } -- 2.40.1 From 54bc0436fd83ff78e22400b42be40ce14869fb3c Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Wed, 23 Sep 2020 21:47:51 +0200 Subject: [PATCH 7/7] rm release flag --- cmd/releases.go | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/cmd/releases.go b/cmd/releases.go index 66867a7..6d55df3 100644 --- a/cmd/releases.go +++ b/cmd/releases.go @@ -10,6 +10,7 @@ import ( "net/http" "os" "path/filepath" + "strings" "code.gitea.io/sdk/gitea" @@ -246,19 +247,17 @@ var CmdReleaseEdit = cli.Command{ Aliases: []string{"n"}, Usage: "Change Notes", }, - &cli.BoolFlag{ - Name: "draft", - Aliases: []string{"d"}, - Usage: "Mark as Draft", + &cli.StringFlag{ + Name: "draft", + Aliases: []string{"d"}, + Usage: "Mark as Draft [True/false]", + DefaultText: "true", }, - &cli.BoolFlag{ - Name: "prerelease", - Aliases: []string{"p"}, - Usage: "Mark as Pre-Release", - }, - &cli.BoolFlag{ - Name: "release", - Usage: "Release Draft/Pre-Release", + &cli.StringFlag{ + Name: "prerelease", + Aliases: []string{"p"}, + Usage: "Mark as Pre-Release [True/false]", + DefaultText: "true", }, }, AllDefaultFlags...), } @@ -285,14 +284,16 @@ func runReleaseEdit(ctx *cli.Context) error { bTrue := true bFalse := false if ctx.IsSet("draft") { - isDraft = &bTrue + isDraft = &bFalse + if strings.ToLower(ctx.String("draft"))[:1] == "t" { + isDraft = &bTrue + } } if ctx.IsSet("prerelease") { - isPre = &bTrue - } - if ctx.IsSet("release") { - isDraft = &bFalse isPre = &bFalse + if strings.ToLower(ctx.String("prerelease"))[:1] == "t" { + isPre = &bTrue + } } _, _, err = client.EditRelease(owner, repo, release.ID, gitea.EditReleaseOption{ -- 2.40.1