Skip to content

Commit de0e25e

Browse files
refactor CreateBuildOptionsMap in a function
1 parent 057c40e commit de0e25e

6 files changed

+59
-98
lines changed

Diff for: legacy/builder/container_build_options.go

+10-1
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,17 @@ import (
2323
type ContainerBuildOptions struct{}
2424

2525
func (s *ContainerBuildOptions) Run(ctx *types.Context) error {
26+
buildPropertiesJSON, err := CreateBuildOptionsMap(
27+
ctx.HardwareDirs, ctx.BuiltInToolsDirs, ctx.OtherLibrariesDirs,
28+
ctx.BuiltInLibrariesDirs, ctx.Sketch, ctx.CustomBuildProperties,
29+
ctx.FQBN.String(), ctx.BuildProperties.Get("compiler.optimization_flags"),
30+
)
31+
if err != nil {
32+
return errors.WithStack(err)
33+
}
34+
ctx.BuildOptionsJson = buildPropertiesJSON
35+
2636
commands := []types.Command{
27-
&CreateBuildOptionsMap{},
2837
&LoadPreviousBuildOptionsMap{},
2938
&WipeoutBuildPathIfBuildOptionsChanged{},
3039
&StoreBuildOptionsMap{},

Diff for: legacy/builder/create_build_options_map.go

+35-8
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,47 @@ package builder
1717

1818
import (
1919
"encoding/json"
20+
"strings"
2021

21-
"github.com/arduino/arduino-cli/legacy/builder/types"
22+
"github.com/arduino/arduino-cli/arduino/sketch"
23+
"github.com/arduino/go-paths-helper"
24+
properties "github.com/arduino/go-properties-orderedmap"
2225
"github.com/pkg/errors"
2326
)
2427

25-
type CreateBuildOptionsMap struct{}
28+
func CreateBuildOptionsMap(
29+
hardwareDirs, builtInToolsDirs, otherLibrariesDirs paths.PathList,
30+
builtInLibrariesDirs *paths.Path,
31+
sketch *sketch.Sketch,
32+
customBuildProperties []string,
33+
fqbn, compilerOptimizationFlags string,
34+
) (string, error) {
35+
opts := properties.NewMap()
36+
opts.Set("hardwareFolders", strings.Join(hardwareDirs.AsStrings(), ","))
37+
opts.Set("builtInToolsFolders", strings.Join(builtInToolsDirs.AsStrings(), ","))
38+
if builtInLibrariesDirs != nil {
39+
opts.Set("builtInLibrariesFolders", builtInLibrariesDirs.String())
40+
}
41+
opts.Set("otherLibrariesFolders", strings.Join(otherLibrariesDirs.AsStrings(), ","))
42+
opts.SetPath("sketchLocation", sketch.FullPath)
43+
var additionalFilesRelative []string
44+
absPath := sketch.FullPath.Parent()
45+
for _, f := range sketch.AdditionalFiles {
46+
relPath, err := f.RelTo(absPath)
47+
if err != nil {
48+
continue // ignore
49+
}
50+
additionalFilesRelative = append(additionalFilesRelative, relPath.String())
51+
}
52+
opts.Set("fqbn", fqbn)
53+
opts.Set("customBuildProperties", strings.Join(customBuildProperties, ","))
54+
opts.Set("additionalFiles", strings.Join(additionalFilesRelative, ","))
55+
opts.Set("compiler.optimization_flags", compilerOptimizationFlags)
2656

27-
func (s *CreateBuildOptionsMap) Run(ctx *types.Context) error {
28-
buildOptions := ctx.ExtractBuildOptions()
29-
bytes, err := json.MarshalIndent(buildOptions, "", " ")
57+
buildOptionsJSON, err := json.MarshalIndent(opts, "", " ")
3058
if err != nil {
31-
return errors.WithStack(err)
59+
return "", errors.WithStack(err)
3260
}
33-
ctx.BuildOptionsJson = string(bytes)
3461

35-
return nil
62+
return string(buildOptionsJSON), nil
3663
}

Diff for: legacy/builder/test/create_build_options_map_test.go

+6-3
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,11 @@ func TestCreateBuildOptionsMap(t *testing.T) {
3838
BuildProperties: properties.NewFromHashmap(map[string]string{"compiler.optimization_flags": "-Os"}),
3939
}
4040

41-
create := builder.CreateBuildOptionsMap{}
42-
err := create.Run(ctx)
41+
buildPropertiesJSON, err := builder.CreateBuildOptionsMap(
42+
ctx.HardwareDirs, ctx.BuiltInToolsDirs, ctx.OtherLibrariesDirs,
43+
ctx.BuiltInLibrariesDirs, ctx.Sketch, ctx.CustomBuildProperties,
44+
ctx.FQBN.String(), ctx.BuildProperties.Get("compiler.optimization_flags"),
45+
)
4346
require.NoError(t, err)
4447

4548
require.Equal(t, `{
@@ -51,5 +54,5 @@ func TestCreateBuildOptionsMap(t *testing.T) {
5154
"hardwareFolders": "hardware,hardware2",
5255
"otherLibrariesFolders": "libraries",
5356
"sketchLocation": "sketchLocation"
54-
}`, ctx.BuildOptionsJson)
57+
}`, buildPropertiesJSON)
5558
}

Diff for: legacy/builder/test/store_build_options_map_test.go

+8-4
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,15 @@ func TestStoreBuildOptionsMap(t *testing.T) {
4343
buildPath := SetupBuildPath(t, ctx)
4444
defer buildPath.RemoveAll()
4545

46-
commands := []types.Command{
47-
&builder.CreateBuildOptionsMap{},
48-
&builder.StoreBuildOptionsMap{},
49-
}
46+
buildPropertiesJSON, err := builder.CreateBuildOptionsMap(
47+
ctx.HardwareDirs, ctx.BuiltInToolsDirs, ctx.OtherLibrariesDirs,
48+
ctx.BuiltInLibrariesDirs, ctx.Sketch, ctx.CustomBuildProperties,
49+
ctx.FQBN.String(), ctx.BuildProperties.Get("compiler.optimization_flags"),
50+
)
51+
require.NoError(t, err)
52+
ctx.BuildOptionsJson = buildPropertiesJSON
5053

54+
commands := []types.Command{&builder.StoreBuildOptionsMap{}}
5155
for _, command := range commands {
5256
err := command.Run(ctx)
5357
require.NoError(t, err)

Diff for: legacy/builder/types/context.go

-26
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919
"fmt"
2020
"io"
2121
"os"
22-
"strings"
2322
"sync"
2423

2524
"github.com/arduino/arduino-cli/arduino/builder"
@@ -106,31 +105,6 @@ type Context struct {
106105
SourceOverride map[string]string
107106
}
108107

109-
func (ctx *Context) ExtractBuildOptions() *properties.Map {
110-
opts := properties.NewMap()
111-
opts.Set("hardwareFolders", strings.Join(ctx.HardwareDirs.AsStrings(), ","))
112-
opts.Set("builtInToolsFolders", strings.Join(ctx.BuiltInToolsDirs.AsStrings(), ","))
113-
if ctx.BuiltInLibrariesDirs != nil {
114-
opts.Set("builtInLibrariesFolders", ctx.BuiltInLibrariesDirs.String())
115-
}
116-
opts.Set("otherLibrariesFolders", strings.Join(ctx.OtherLibrariesDirs.AsStrings(), ","))
117-
opts.SetPath("sketchLocation", ctx.Sketch.FullPath)
118-
var additionalFilesRelative []string
119-
absPath := ctx.Sketch.FullPath.Parent()
120-
for _, f := range ctx.Sketch.AdditionalFiles {
121-
relPath, err := f.RelTo(absPath)
122-
if err != nil {
123-
continue // ignore
124-
}
125-
additionalFilesRelative = append(additionalFilesRelative, relPath.String())
126-
}
127-
opts.Set("fqbn", ctx.FQBN.String())
128-
opts.Set("customBuildProperties", strings.Join(ctx.CustomBuildProperties, ","))
129-
opts.Set("additionalFiles", strings.Join(additionalFilesRelative, ","))
130-
opts.Set("compiler.optimization_flags", ctx.BuildProperties.Get("compiler.optimization_flags"))
131-
return opts
132-
}
133-
134108
func (ctx *Context) PushProgress() {
135109
if ctx.ProgressCB != nil {
136110
ctx.ProgressCB(&rpc.TaskProgress{

Diff for: legacy/builder/types/context_test.go

-56
This file was deleted.

0 commit comments

Comments
 (0)