forked from arduino/arduino-builder
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontext.go
126 lines (106 loc) · 3.53 KB
/
context.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package types
import (
"strings"
"github.com/arduino/arduino-builder/i18n"
"github.com/arduino/go-properties-map"
)
// Context structure
type Context struct {
// Build options
HardwareFolders []string
ToolsFolders []string
LibrariesFolders []string
BuiltInLibrariesFolders []string
OtherLibrariesFolders []string
SketchLocation string
ArduinoAPIVersion string
FQBN string
// Build options are serialized here
BuildOptionsJson string
BuildOptionsJsonPrevious string
Hardware *Packages
Tools []*Tool
TargetBoard *Board
TargetPackage *Package
TargetPlatform *Platform
ActualPlatform *Platform
USBVidPid string
PlatformKeyRewrites PlatforKeysRewrite
HardwareRewriteResults map[*Platform][]PlatforKeyRewrite
BuildProperties properties.Map
BuildCore string
BuildPath string
BuildCachePath string
SketchBuildPath string
CoreBuildPath string
CoreBuildCachePath string
CoreArchiveFilePath string
CoreObjectsFiles []string
LibrariesBuildPath string
LibrariesObjectFiles []string
PreprocPath string
SketchObjectFiles []string
CollectedSourceFiles *UniqueSourceFileQueue
Sketch *Sketch
Source string
SourceGccMinusE string
WarningsLevel string
// Libraries handling
Libraries []*Library
HeaderToLibraries map[string][]*Library
ImportedLibraries []*Library
LibrariesResolutionResults map[string]LibraryResolutionResult
IncludeJustFound string
IncludeFolders []string
OutputGccMinusM string
// C++ Parsing
CTagsOutput string
CTagsTargetFile string
CTagsOfPreprocessedSource []*CTag
IncludeSection string
LineOffset int
PrototypesSection string
PrototypesLineWhereToInsert int
Prototypes []*Prototype
// Verbosity settings
Verbose bool
DebugPreprocessor bool
// Contents of a custom build properties file (line by line)
CustomBuildProperties []string
// Logging
logger i18n.Logger
DebugLevel int
// ReadFileAndStoreInContext command
FileToRead string
}
func (ctx *Context) ExtractBuildOptions() properties.Map {
opts := make(properties.Map)
opts["hardwareFolders"] = strings.Join(ctx.HardwareFolders, ",")
opts["toolsFolders"] = strings.Join(ctx.ToolsFolders, ",")
opts["builtInLibrariesFolders"] = strings.Join(ctx.BuiltInLibrariesFolders, ",")
opts["otherLibrariesFolders"] = strings.Join(ctx.OtherLibrariesFolders, ",")
opts["sketchLocation"] = ctx.SketchLocation
opts["fqbn"] = ctx.FQBN
opts["runtime.ide.version"] = ctx.ArduinoAPIVersion
opts["customBuildProperties"] = strings.Join(ctx.CustomBuildProperties, ",")
return opts
}
func (ctx *Context) InjectBuildOptions(opts properties.Map) {
ctx.HardwareFolders = strings.Split(opts["hardwareFolders"], ",")
ctx.ToolsFolders = strings.Split(opts["toolsFolders"], ",")
ctx.BuiltInLibrariesFolders = strings.Split(opts["builtInLibrariesFolders"], ",")
ctx.OtherLibrariesFolders = strings.Split(opts["otherLibrariesFolders"], ",")
ctx.SketchLocation = opts["sketchLocation"]
ctx.FQBN = opts["fqbn"]
ctx.ArduinoAPIVersion = opts["runtime.ide.version"]
ctx.CustomBuildProperties = strings.Split(opts["customBuildProperties"], ",")
}
func (ctx *Context) GetLogger() i18n.Logger {
if ctx.logger == nil {
return &i18n.HumanLogger{}
}
return ctx.logger
}
func (ctx *Context) SetLogger(l i18n.Logger) {
ctx.logger = l
}