mirror of
https://gitea.com/gitea/tea.git
synced 2026-10-26 11:01:25 +01:00
fix(release): refuse a stray true or false word after --draft and --prerelease on release edit
Signed-off-by: bircni <bircni@icloud.com>
This commit is contained in:
2 files changed
+22
No files matched your search
@@ -309,6 +309,22 @@ $ tea release create v1.1.0-rc1 --target release/1.1 --draft --prerelease --titl
|
|||||||
return command
|
return command
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// rejectSwitchValue refuses the old tea syntax "--draft false": a switch reads no value, so the
|
||||||
|
// word would be edited as one more release after the switch was applied as true.
|
||||||
|
func rejectSwitchValue(cmd *cobra.Command, args []string, switches ...string) error {
|
||||||
|
for _, name := range switches {
|
||||||
|
if !cmd.Flags().Changed(name) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
for _, arg := range args {
|
||||||
|
if strings.EqualFold(arg, "true") || strings.EqualFold(arg, "false") {
|
||||||
|
return clierr.Wrap(clierr.Usage, fmt.Errorf("--%s takes no value; use --%s or --%s=false", name, name, name))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (a *application) releaseEditCommand() *cobra.Command {
|
func (a *application) releaseEditCommand() *cobra.Command {
|
||||||
var fields releaseFields
|
var fields releaseFields
|
||||||
command := &cobra.Command{
|
command := &cobra.Command{
|
||||||
@@ -320,6 +336,9 @@ $ tea release edit v1.0.0-rc1 v1.0.0-rc2 --prerelease=false`,
|
|||||||
RunE: func(cmd *cobra.Command, args []string) (runErr error) {
|
RunE: func(cmd *cobra.Command, args []string) (runErr error) {
|
||||||
var editorDraft terminal.Draft
|
var editorDraft terminal.Draft
|
||||||
defer finishDraft(&editorDraft, &runErr)
|
defer finishDraft(&editorDraft, &runErr)
|
||||||
|
if err := rejectSwitchValue(cmd, args, "draft", "prerelease"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
if err := validateTextSources(cmd, "notes", "notes-file"); err != nil {
|
if err := validateTextSources(cmd, "notes", "notes-file"); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,6 +145,9 @@ func TestUsageErrorsPrecedeRequests(t *testing.T) {
|
|||||||
{[]string{"release", "create", "--body-file", "-"}, "--notes-file - requires a tag"},
|
{[]string{"release", "create", "--body-file", "-"}, "--notes-file - requires a tag"},
|
||||||
{[]string{"release", "edit", "v1"}, "supply release fields to edit"},
|
{[]string{"release", "edit", "v1"}, "supply release fields to edit"},
|
||||||
{[]string{"release", "edit", "v1", "v2", "--tag", "v3"}, "--tag requires one release and a nonempty new tag"},
|
{[]string{"release", "edit", "v1", "v2", "--tag", "v3"}, "--tag requires one release and a nonempty new tag"},
|
||||||
|
{[]string{"release", "edit", "v1", "--draft", "false"}, "--draft takes no value; use --draft or --draft=false"},
|
||||||
|
{[]string{"release", "edit", "v1", "-d", "false", "-p", "False"}, "--draft takes no value; use --draft or --draft=false"},
|
||||||
|
{[]string{"release", "edit", "v1", "v2", "--prerelease", "TRUE"}, "--prerelease takes no value; use --prerelease or --prerelease=false"},
|
||||||
{[]string{"repo", "create"}, "missing required input: supply --name"},
|
{[]string{"repo", "create"}, "missing required input: supply --name"},
|
||||||
{[]string{"repo", "create", "acme/bad/name"}, "repository name must be nonempty, at most 100 bytes, and contain no path separators or whitespace"},
|
{[]string{"repo", "create", "acme/bad/name"}, "repository name must be nonempty, at most 100 bytes, and contain no path separators or whitespace"},
|
||||||
{[]string{"repo", "create", "name", "--name", "other"}, "supply name as an argument or --name, not both"},
|
{[]string{"repo", "create", "name", "--name", "other"}, "supply name as an argument or --name, not both"},
|
||||||
|
|||||||
Reference in new issue
Block a user