Skip to content

Commit cecbfdf

Browse files
committed
feat(multilist): add limit for the multilist
1 parent 3e55254 commit cecbfdf

File tree

8 files changed

+30
-20
lines changed

8 files changed

+30
-20
lines changed

internal/parameter/integer/int.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func (p Param) Render() huh.Field {
2626

2727
param.Value(&p.DefaultValue)
2828

29-
var group []validators.Validator
29+
var group []validators.Validator[string]
3030
if p.Required {
3131
group = append(group, validators.Required(p.Name, true))
3232
}

internal/parameter/list/list.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func (p Param) Render() huh.Field {
3434

3535
param.Value(&p.DefaultValue)
3636

37-
var group []validators.Validator
37+
var group []validators.Validator[string]
3838
if p.Required {
3939
group = append(group, validators.Required(p.Name, false))
4040
}

internal/parameter/multilist/list.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ type Param struct {
1414
Options []huh.Option[string] `yaml:"options" json:"options" mapstructure:"options"`
1515
DefaultValue []string `yaml:"default_value" json:"default_value" mapstructure:"default_value"`
1616
Required bool `yaml:"required" json:"required" mapstructure:"required"`
17+
Limit *int `yaml:"limit" json:"limit" mapstructure:"limit"`
1718
}
1819

1920
func (p Param) Validate() []error {
@@ -32,10 +33,18 @@ func (p Param) Render() huh.Field {
3233
param.Description(p.Description)
3334
}
3435

36+
if p.Limit != nil {
37+
param.Limit(*p.Limit)
38+
}
3539
param.Value(&p.DefaultValue)
3640

41+
var group []validators.Validator[[]string]
42+
if p.Required {
43+
group = append(group, validators.MultiRequired(p.Name))
44+
}
45+
3746
if p.Required {
38-
param.Validate(validators.MultiRequired(p.Name))
47+
param.Validate(validators.Group(group...))
3948
}
4049

4150
return param

internal/parameter/str/str.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func (p Param) RenderInput() *huh.Input {
3535

3636
param.Value(&p.DefaultValue)
3737

38-
var group []validators.Validator
38+
var group []validators.Validator[string]
3939
if p.Required {
4040
group = append(group, validators.Required(p.Name, p.Trim))
4141
}

internal/parameter/text/text.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func (p Param) Render() huh.Field {
3333

3434
param.Value(&p.DefaultValue)
3535

36-
var group []validators.Validator
36+
var group []validators.Validator[string]
3737
if p.Required {
3838
group = append(group, validators.Required(p.Name, false))
3939
}

internal/parameter/validators/required.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ package validators
33
import (
44
"fmt"
55
"strings"
6-
7-
"github.com/shipengqi/commitizen/internal/errors"
86
)
97

108
func Required(name string, trim bool) func(string) error {
@@ -18,12 +16,3 @@ func Required(name string, trim bool) func(string) error {
1816
return nil
1917
}
2018
}
21-
22-
func MultiRequired(name string) func([]string) error {
23-
return func(strs []string) error {
24-
if len(strs) == 0 {
25-
return errors.NewRequiredErr(name)
26-
}
27-
return nil
28-
}
29-
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package validators
2+
3+
import "github.com/shipengqi/commitizen/internal/errors"
4+
5+
func MultiRequired(name string) func([]string) error {
6+
return func(vals []string) error {
7+
if len(vals) == 0 {
8+
return errors.NewRequiredErr(name)
9+
}
10+
return nil
11+
}
12+
}

internal/parameter/validators/validators.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package validators
22

3-
type Validator func(string) error
3+
type Validator[T string | []string] func(T) error
44

5-
func Group(validators ...Validator) Validator {
6-
return func(str string) error {
5+
func Group[T string | []string](validators ...Validator[T]) Validator[T] {
6+
return func(t T) error {
77
for _, validator := range validators {
8-
if err := validator(str); err != nil {
8+
if err := validator(t); err != nil {
99
return err
1010
}
1111
}

0 commit comments

Comments
 (0)