Skip to content

Commit c219564

Browse files
authored
do not show generating hint in the command preview (#397)
1 parent 3c2fb72 commit c219564

File tree

3 files changed

+51
-32
lines changed

3 files changed

+51
-32
lines changed

pkg/cmd/preview/options.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,32 +62,34 @@ func (o *PreviewOptions) Validate() error {
6262

6363
func (o *PreviewOptions) Run() error {
6464
// Set no style
65-
if o.NoStyle {
65+
if o.NoStyle || o.Output == jsonOutput {
6666
pterm.DisableStyling()
6767
pterm.DisableColor()
6868
}
69-
if o.Output == jsonOutput {
70-
pterm.DisableStyling()
71-
pterm.DisableColor()
72-
}
73-
7469
// Parse project and stack of work directory
7570
project, stack, err := projectstack.DetectProjectAndStack(o.WorkDir)
7671
if err != nil {
7772
return err
7873
}
7974

8075
// Get compile result
81-
sp, err := spec.GenerateSpecWithSpinner(&generator.Options{
76+
options := &generator.Options{
8277
WorkDir: o.WorkDir,
8378
Filenames: o.Filenames,
8479
Settings: o.Settings,
8580
Arguments: o.Arguments,
8681
Overrides: o.Overrides,
8782
DisableNone: o.DisableNone,
8883
OverrideAST: o.OverrideAST,
89-
NoStyle: o.NoStyle || o.Output == jsonOutput,
90-
}, project, stack)
84+
NoStyle: o.NoStyle,
85+
}
86+
87+
var sp *models.Spec
88+
if o.Output == jsonOutput {
89+
sp, err = spec.GenerateSpec(options, project, stack)
90+
} else {
91+
sp, err = spec.GenerateSpecWithSpinner(options, project, stack)
92+
}
9193
if err != nil {
9294
return err
9395
}

pkg/cmd/preview/options_test.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func TestPreviewOptions_Run(t *testing.T) {
8181
t.Run("no changes", func(t *testing.T) {
8282
defer monkey.UnpatchAll()
8383
mockDetectProjectAndStack()
84-
mockGenerateSpec()
84+
mockGenerateSpecWithSpinner()
8585
mockNewKubernetesRuntime()
8686

8787
o := NewPreviewOptions()
@@ -93,7 +93,7 @@ func TestPreviewOptions_Run(t *testing.T) {
9393
t.Run("detail is true", func(t *testing.T) {
9494
defer monkey.UnpatchAll()
9595
mockDetectProjectAndStack()
96-
mockGenerateSpec()
96+
mockGenerateSpecWithSpinner()
9797
mockNewKubernetesRuntime()
9898
mockOperationPreview()
9999
mockPromptDetail("")
@@ -121,7 +121,7 @@ func TestPreviewOptions_Run(t *testing.T) {
121121
t.Run("no style is true", func(t *testing.T) {
122122
defer monkey.UnpatchAll()
123123
mockDetectProjectAndStack()
124-
mockGenerateSpec()
124+
mockGenerateSpecWithSpinner()
125125
mockNewKubernetesRuntime()
126126
mockOperationPreview()
127127
mockPromptDetail("")
@@ -219,7 +219,7 @@ func mockDetectProjectAndStack() {
219219
})
220220
}
221221

222-
func mockGenerateSpec() {
222+
func mockGenerateSpecWithSpinner() {
223223
monkey.Patch(spec.GenerateSpecWithSpinner, func(
224224
o *generator.Options,
225225
project *projectstack.Project,
@@ -229,6 +229,16 @@ func mockGenerateSpec() {
229229
})
230230
}
231231

232+
func mockGenerateSpec() {
233+
monkey.Patch(spec.GenerateSpec, func(
234+
o *generator.Options,
235+
project *projectstack.Project,
236+
stack *projectstack.Stack,
237+
) (*models.Spec, error) {
238+
return &models.Spec{Resources: []models.Resource{sa1, sa2, sa3}}, nil
239+
})
240+
}
241+
232242
func mockNewKubernetesRuntime() {
233243
monkey.Patch(kubernetes.NewKubernetesRuntime, func() (runtime.Runtime, error) {
234244
return &fooRuntime{}, nil

pkg/cmd/spec/generator.go

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,31 @@ func GenerateSpecWithSpinner(o *generator.Options, project *projectstack.Project
2323
sp, _ = sp.Start(fmt.Sprintf("Generating Spec in the Stack %s...", stack.Name))
2424
}
2525

26+
// style means color and prompt here. Currently, sp will be nil only when o.NoStyle is true
27+
style := !o.NoStyle && sp != nil
28+
29+
spec, err := GenerateSpec(o, project, stack)
30+
// failed
31+
if err != nil {
32+
if style {
33+
sp.Fail()
34+
return nil, err
35+
} else {
36+
// TODO: we will replace this implementation with KCL no-style flag when it is supported
37+
return nil, errors.New(stripansi.Strip(err.Error()))
38+
}
39+
}
40+
41+
// success
42+
if style {
43+
sp.Success()
44+
} else {
45+
fmt.Println()
46+
}
47+
return spec, nil
48+
}
49+
50+
func GenerateSpec(o *generator.Options, project *projectstack.Project, stack *projectstack.Stack) (*models.Spec, error) {
2651
// Choose the generator
2752
var g generator.Generator
2853
pg := project.Generator
@@ -43,25 +68,7 @@ func GenerateSpecWithSpinner(o *generator.Options, project *projectstack.Project
4368

4469
spec, err := g.GenerateSpec(o, stack)
4570
if err != nil {
46-
if !o.NoStyle && sp != nil {
47-
sp.Fail()
48-
}
49-
50-
// TODO: we will replace this implementation with KCL no-style flag
51-
// when it is supported
52-
if o.NoStyle {
53-
return nil, errors.New(stripansi.Strip(err.Error()))
54-
}
55-
56-
return nil, err
71+
return nil, errors.New(stripansi.Strip(err.Error()))
5772
}
58-
59-
if !o.NoStyle && sp != nil {
60-
sp.Success()
61-
}
62-
if !o.NoStyle {
63-
fmt.Println()
64-
}
65-
6673
return spec, nil
6774
}

0 commit comments

Comments
 (0)