Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 057c40e

Browse files
committedSep 8, 2023
refactor RecipeRunner in a function
1 parent b8024c3 commit 057c40e

File tree

4 files changed

+87
-82
lines changed

4 files changed

+87
-82
lines changed
 

‎commands/compile/compile.go

+14-4
Original file line numberDiff line numberDiff line change
@@ -366,8 +366,13 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream
366366
exportBinaries = false
367367
}
368368
if exportBinaries {
369-
presaveHex := builder.RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.savehex.presavehex", Suffix: ".pattern"}
370-
if err := presaveHex.Run(builderCtx); err != nil {
369+
err := builder.RecipeByPrefixSuffixRunner(
370+
"recipe.hooks.savehex.presavehex", ".pattern", false,
371+
builderCtx.OnlyUpdateCompilationDatabase, builderCtx.Verbose,
372+
builderCtx.BuildProperties, builderCtx.Stdout, builderCtx.Stderr,
373+
func(msg string) { builderCtx.Info(msg) },
374+
)
375+
if err != nil {
371376
return r, err
372377
}
373378

@@ -405,8 +410,13 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream
405410
}
406411
}
407412

408-
postsaveHex := builder.RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.savehex.postsavehex", Suffix: ".pattern"}
409-
if err := postsaveHex.Run(builderCtx); err != nil {
413+
err = builder.RecipeByPrefixSuffixRunner(
414+
"recipe.hooks.savehex.postsavehex", ".pattern", false,
415+
builderCtx.OnlyUpdateCompilationDatabase, builderCtx.Verbose,
416+
builderCtx.BuildProperties, builderCtx.Stdout, builderCtx.Stderr,
417+
func(msg string) { builderCtx.Info(msg) },
418+
)
419+
if err != nil {
410420
return r, err
411421
}
412422
}

‎legacy/builder/builder.go

+54-14
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ func (s *Builder) Run(ctx *types.Context) error {
4343
commands := []types.Command{
4444
&ContainerBuildOptions{},
4545

46-
&RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.prebuild", Suffix: ".pattern"},
46+
types.BareCommand(func(ctx *types.Context) error {
47+
return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.prebuild", ".pattern", false)
48+
}),
4749

4850
types.BareCommand(func(ctx *types.Context) error {
4951
ctx.LineOffset, _err = ctx.Builder.PrepareSketchBuildPath(ctx.SourceOverride, ctx.SketchBuildPath)
@@ -59,7 +61,11 @@ func (s *Builder) Run(ctx *types.Context) error {
5961
types.BareCommand(PreprocessSketch),
6062

6163
logIfVerbose(false, tr("Compiling sketch...")),
62-
&RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.sketch.prebuild", Suffix: ".pattern"},
64+
65+
types.BareCommand(func(ctx *types.Context) error {
66+
return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.sketch.prebuild", ".pattern", false)
67+
}),
68+
6369
types.BareCommand(func(ctx *types.Context) error {
6470
sketchObjectFiles, err := phases.SketchBuilder(
6571
ctx.SketchBuildPath,
@@ -82,10 +88,15 @@ func (s *Builder) Run(ctx *types.Context) error {
8288
ctx.SketchObjectFiles = sketchObjectFiles
8389
return nil
8490
}),
85-
&RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.sketch.postbuild", Suffix: ".pattern", SkipIfOnlyUpdatingCompilationDatabase: true},
91+
92+
types.BareCommand(func(ctx *types.Context) error {
93+
return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.sketch.postbuild", ".pattern", true)
94+
}),
8695

8796
logIfVerbose(false, tr("Compiling libraries...")),
88-
&RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.libraries.prebuild", Suffix: ".pattern"},
97+
types.BareCommand(func(ctx *types.Context) error {
98+
return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.libraries.prebuild", ".pattern", false)
99+
}),
89100
&UnusedCompiledLibrariesRemover{},
90101
types.BareCommand(func(ctx *types.Context) error {
91102
librariesObjectFiles, err := phases.LibrariesBuilder(
@@ -112,10 +123,14 @@ func (s *Builder) Run(ctx *types.Context) error {
112123

113124
return nil
114125
}),
115-
&RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.libraries.postbuild", Suffix: ".pattern", SkipIfOnlyUpdatingCompilationDatabase: true},
126+
types.BareCommand(func(ctx *types.Context) error {
127+
return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.libraries.postbuild", ".pattern", true)
128+
}),
116129

117130
logIfVerbose(false, tr("Compiling core...")),
118-
&RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.core.prebuild", Suffix: ".pattern"},
131+
types.BareCommand(func(ctx *types.Context) error {
132+
return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.core.prebuild", ".pattern", false)
133+
}),
119134

120135
types.BareCommand(func(ctx *types.Context) error {
121136
objectFiles, archiveFile, err := phases.CoreBuilder(
@@ -139,10 +154,14 @@ func (s *Builder) Run(ctx *types.Context) error {
139154
return err
140155
}),
141156

142-
&RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.core.postbuild", Suffix: ".pattern", SkipIfOnlyUpdatingCompilationDatabase: true},
157+
types.BareCommand(func(ctx *types.Context) error {
158+
return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.core.postbuild", ".pattern", true)
159+
}),
143160

144161
logIfVerbose(false, tr("Linking everything together...")),
145-
&RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.linking.prelink", Suffix: ".pattern"},
162+
types.BareCommand(func(ctx *types.Context) error {
163+
return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.linking.prelink", ".pattern", false)
164+
}),
146165

147166
types.BareCommand(func(ctx *types.Context) error {
148167
verboseInfoOut, err := phases.Linker(
@@ -164,15 +183,25 @@ func (s *Builder) Run(ctx *types.Context) error {
164183
return err
165184
}),
166185

167-
&RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.linking.postlink", Suffix: ".pattern", SkipIfOnlyUpdatingCompilationDatabase: true},
186+
types.BareCommand(func(ctx *types.Context) error {
187+
return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.linking.postlink", ".pattern", true)
188+
}),
168189

169-
&RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.objcopy.preobjcopy", Suffix: ".pattern"},
170-
&RecipeByPrefixSuffixRunner{Prefix: "recipe.objcopy.", Suffix: ".pattern", SkipIfOnlyUpdatingCompilationDatabase: true},
171-
&RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.objcopy.postobjcopy", Suffix: ".pattern", SkipIfOnlyUpdatingCompilationDatabase: true},
190+
types.BareCommand(func(ctx *types.Context) error {
191+
return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.objcopy.preobjcopy", ".pattern", false)
192+
}),
193+
types.BareCommand(func(ctx *types.Context) error {
194+
return recipeByPrefixSuffixRunner(ctx, "recipe.objcopy.", ".pattern", true)
195+
}),
196+
types.BareCommand(func(ctx *types.Context) error {
197+
return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.objcopy.postobjcopy", ".pattern", true)
198+
}),
172199

173200
&MergeSketchWithBootloader{},
174201

175-
&RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.postbuild", Suffix: ".pattern", SkipIfOnlyUpdatingCompilationDatabase: true},
202+
types.BareCommand(func(ctx *types.Context) error {
203+
return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.postbuild", ".pattern", true)
204+
}),
176205
}
177206

178207
ctx.Progress.AddSubSteps(len(commands) + 5)
@@ -259,7 +288,9 @@ func (s *Preprocess) Run(ctx *types.Context) error {
259288
commands := []types.Command{
260289
&ContainerBuildOptions{},
261290

262-
&RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.prebuild", Suffix: ".pattern"},
291+
types.BareCommand(func(ctx *types.Context) error {
292+
return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.prebuild", ".pattern", false)
293+
}),
263294

264295
types.BareCommand(func(ctx *types.Context) error {
265296
ctx.LineOffset, _err = ctx.Builder.PrepareSketchBuildPath(ctx.SourceOverride, ctx.SketchBuildPath)
@@ -343,3 +374,12 @@ func logIfVerbose(warn bool, msg string) types.BareCommand {
343374
return nil
344375
})
345376
}
377+
378+
func recipeByPrefixSuffixRunner(ctx *types.Context, prefix, suffix string, skipIfOnlyUpdatingCompilationDatabase bool) error {
379+
return RecipeByPrefixSuffixRunner(
380+
prefix, suffix, skipIfOnlyUpdatingCompilationDatabase,
381+
ctx.OnlyUpdateCompilationDatabase, ctx.Verbose,
382+
ctx.BuildProperties, ctx.Stdout, ctx.Stderr,
383+
func(msg string) { ctx.Info(msg) },
384+
)
385+
}

‎legacy/builder/recipe_runner.go

+19-18
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,30 @@ package builder
1717

1818
import (
1919
"fmt"
20+
"io"
2021
"sort"
2122
"strings"
2223

23-
"github.com/arduino/arduino-cli/legacy/builder/types"
2424
"github.com/arduino/arduino-cli/arduino/builder/utils"
2525
properties "github.com/arduino/go-properties-orderedmap"
2626
"github.com/pkg/errors"
2727
"github.com/sirupsen/logrus"
2828
)
2929

30-
type RecipeByPrefixSuffixRunner struct {
31-
Prefix string
32-
Suffix string
33-
SkipIfOnlyUpdatingCompilationDatabase bool
34-
}
35-
36-
func (s *RecipeByPrefixSuffixRunner) Run(ctx *types.Context) error {
37-
logrus.Debugf(fmt.Sprintf("Looking for recipes like %s", s.Prefix+"*"+s.Suffix))
30+
func RecipeByPrefixSuffixRunner(
31+
prefix, suffix string,
32+
skipIfOnlyUpdatingCompilationDatabase, onlyUpdateCompilationDatabase, verbose bool,
33+
buildProps *properties.Map,
34+
stdoutWriter, stderrWriter io.Writer,
35+
printInfoFn func(string),
36+
) error {
37+
logrus.Debugf(fmt.Sprintf("Looking for recipes like %s", prefix+"*"+suffix))
3838

39-
buildProperties := ctx.BuildProperties.Clone()
40-
recipes := findRecipes(buildProperties, s.Prefix, s.Suffix)
39+
// TODO is it necessary to use Clone?
40+
buildProperties := buildProps.Clone()
41+
recipes := findRecipes(buildProperties, prefix, suffix)
4142

43+
// TODO is it necessary to use Clone?
4244
properties := buildProperties.Clone()
4345
for _, recipe := range recipes {
4446
logrus.Debugf(fmt.Sprintf("Running recipe: %s", recipe))
@@ -48,24 +50,23 @@ func (s *RecipeByPrefixSuffixRunner) Run(ctx *types.Context) error {
4850
return errors.WithStack(err)
4951
}
5052

51-
if ctx.OnlyUpdateCompilationDatabase && s.SkipIfOnlyUpdatingCompilationDatabase {
52-
if ctx.Verbose {
53-
ctx.Info(tr("Skipping: %[1]s", strings.Join(command.GetArgs(), " ")))
53+
if onlyUpdateCompilationDatabase && skipIfOnlyUpdatingCompilationDatabase {
54+
if verbose {
55+
printInfoFn(tr("Skipping: %[1]s", strings.Join(command.GetArgs(), " ")))
5456
}
5557
return nil
5658
}
5759

58-
verboseInfo, _, _, err := utils.ExecCommand(ctx.Verbose, ctx.Stdout, ctx.Stderr, command, utils.ShowIfVerbose /* stdout */, utils.Show /* stderr */)
59-
if ctx.Verbose {
60-
ctx.Info(string(verboseInfo))
60+
verboseInfo, _, _, err := utils.ExecCommand(verbose, stdoutWriter, stderrWriter, command, utils.ShowIfVerbose /* stdout */, utils.Show /* stderr */)
61+
if verbose {
62+
printInfoFn(string(verboseInfo))
6163
}
6264
if err != nil {
6365
return errors.WithStack(err)
6466
}
6567
}
6668

6769
return nil
68-
6970
}
7071

7172
func findRecipes(buildProperties *properties.Map, patternPrefix string, patternSuffix string) []string {

‎legacy/builder/test/recipe_runner_test.go

-46
This file was deleted.

0 commit comments

Comments
 (0)
Please sign in to comment.