@@ -25,10 +25,12 @@ import (
2525type inputModel struct {
2626 * globalflags.GlobalFlagModel
2727 LabelSelector * string
28+ Limit * int64
2829}
2930
3031const (
3132 labelSelectorFlag = "label-selector"
33+ limitFlag = "limit"
3234)
3335
3436func NewCmd (params * types.CmdParams ) * cobra.Command {
@@ -38,8 +40,16 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
3840 Long : "Lists security groups by its internal ID." ,
3941 Args : args .NoArgs ,
4042 Example : examples .Build (
41- examples .NewExample (`List all groups` , `$ stackit security-group list` ),
42- examples .NewExample (`List groups with labels` , `$ stackit security-group list --label-selector label1=value1,label2=value2` ),
43+ examples .NewExample (`Lists all security groups` , `$ stackit security-group list` ),
44+ examples .NewExample (`Lists security groups with labels` , `$ stackit security-group list --label-selector label1=value1,label2=value2` ),
45+ examples .NewExample (
46+ `Lists all security groups in JSON format` ,
47+ "$ stackit security-group list --output-format json" ,
48+ ),
49+ examples .NewExample (
50+ `Lists up to 10 security groups` ,
51+ "$ stackit security-group list --limit 10" ,
52+ ),
4353 ),
4454 RunE : func (cmd * cobra.Command , args []string ) error {
4555 ctx := context .Background ()
@@ -70,6 +80,11 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
7080 projectLabel = model .ProjectId
7181 }
7282
83+ // Truncate output
84+ if model .Limit != nil && len (items ) > int (* model .Limit ) {
85+ items = items [:* model .Limit ]
86+ }
87+
7388 return outputResult (params .Printer , model .OutputFormat , projectLabel , items )
7489
7590 },
@@ -81,6 +96,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
8196
8297func configureFlags (cmd * cobra.Command ) {
8398 cmd .Flags ().String (labelSelectorFlag , "" , "Filter by label" )
99+ cmd .Flags ().Int64 (limitFlag , 0 , "Maximum number of entries to list" )
84100}
85101
86102func parseInput (p * print.Printer , cmd * cobra.Command , _ []string ) (* inputModel , error ) {
@@ -89,9 +105,18 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel,
89105 return nil , & errors.ProjectIdError {}
90106 }
91107
108+ limit := flags .FlagToInt64Pointer (p , cmd , limitFlag )
109+ if limit != nil && * limit < 1 {
110+ return nil , & errors.FlagValidationError {
111+ Flag : limitFlag ,
112+ Details : "must be greater than 0" ,
113+ }
114+ }
115+
92116 model := inputModel {
93117 GlobalFlagModel : globalFlags ,
94118 LabelSelector : flags .FlagToStringPointer (p , cmd , labelSelectorFlag ),
119+ Limit : limit ,
95120 }
96121
97122 p .DebugInputModel (model )
0 commit comments