66"sync/atomic"
77"testing"
88
9+ "github.com/spf13/pflag"
910"github.com/stretchr/testify/require"
1011
1112"github.com/coder/coder/cli/clibase"
@@ -14,7 +15,7 @@ import (
1415
1516type format struct {
1617id string
17- attachFlagsFn func (cmd * clibase. Command )
18+ attachFlagsFn func (fs * pflag. FlagSet )
1819formatFn func (ctx context.Context ,data any ) (string ,error )
1920}
2021
@@ -24,9 +25,9 @@ func (f *format) ID() string {
2425return f .id
2526}
2627
27- func (f * format )AttachFlags (cmd * clibase. Command ) {
28+ func (f * format )AttachFlags (fs * pflag. FlagSet ) {
2829if f .attachFlagsFn != nil {
29- f .attachFlagsFn (cmd )
30+ f .attachFlagsFn (fs )
3031}
3132}
3233
@@ -82,8 +83,8 @@ func Test_OutputFormatter(t *testing.T) {
8283cliui .JSONFormat (),
8384& format {
8485id :"foo" ,
85- attachFlagsFn :func (cmd * clibase. Command ) {
86- cmd . Flags () .StringP ("foo" ,"f" ,"" ,"foo flag 1234" )
86+ attachFlagsFn :func (fs * pflag. FlagSet ) {
87+ fs .StringP ("foo" ,"f" ,"" ,"foo flag 1234" )
8788},
8889formatFn :func (_ context.Context ,_ any ) (string ,error ) {
8990atomic .AddInt64 (& called ,1 )
@@ -93,12 +94,12 @@ func Test_OutputFormatter(t *testing.T) {
9394)
9495
9596cmd := & clibase.Command {}
96- f .AttachFlags (cmd )
97+ fs := f .AttachFlags (cmd )
9798
98- selected ,err := cmd . Flags () .GetString ("output" )
99+ selected ,err := fs .GetString ("output" )
99100require .NoError (t ,err )
100101require .Equal (t ,"json" ,selected )
101- usage := cmd . Flags () .FlagUsages ()
102+ usage := fs .FlagUsages ()
102103require .Contains (t ,usage ,"Available formats: json, foo" )
103104require .Contains (t ,usage ,"foo flag 1234" )
104105
@@ -112,13 +113,13 @@ func Test_OutputFormatter(t *testing.T) {
112113require .Equal (t ,data ,got )
113114require .EqualValues (t ,0 ,atomic .LoadInt64 (& called ))
114115
115- require .NoError (t ,cmd . Flags () .Set ("output" ,"foo" ))
116+ require .NoError (t ,fs .Set ("output" ,"foo" ))
116117out ,err = f .Format (ctx ,data )
117118require .NoError (t ,err )
118119require .Equal (t ,"foo" ,out )
119120require .EqualValues (t ,1 ,atomic .LoadInt64 (& called ))
120121
121- require .NoError (t ,cmd . Flags () .Set ("output" ,"bar" ))
122+ require .NoError (t ,fs .Set ("output" ,"bar" ))
122123out ,err = f .Format (ctx ,data )
123124require .Error (t ,err )
124125require .ErrorContains (t ,err ,"bar" )