Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit84fc413

Browse files
authored
Expose golangfqbn package for public use (#2768)
* Made FQBN parsing package publicBecause it may turn out useful for other projects.* 100% test coverage* Precompile validation regexp* Remove logrus dependency from i18n* Isolate locale-handling functions from i18n interfaceThis changes allows to make a clean i18n package (without dependency ona specific implementation of the translation package) that, in turn,allows to export packages that internally use i18n with the minimaldependency load.* updated doc
1 parentca446af commit84fc413

File tree

72 files changed

+296
-215
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+296
-215
lines changed

‎Taskfile.yml‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -309,24 +309,24 @@ tasks:
309309
i18n:update:
310310
desc:Updates i18n files
311311
cmds:
312-
-go run ./internal/i18n/cmd/main.go catalog generate . > ./internal/i18n/data/en.po
312+
-go run ./internal/locales/cmd/main.go catalog generate . > ./internal/locales/data/en.po
313313

314314
i18n:pull:
315315
desc:Pull i18n files from transifex
316316
cmds:
317-
-go run ./internal/i18n/cmd/main.go transifex pull ./internal/i18n/data
317+
-go run ./internal/locales/cmd/main.go transifex pull ./internal/locales/data
318318

319319
i18n:push:
320320
desc:Push i18n files to transifex
321321
cmds:
322-
-go run ./internal/i18n/cmd/main.go transifex push ./internal/i18n/data
322+
-go run ./internal/locales/cmd/main.go transifex push ./internal/locales/data
323323

324324
i18n:check:
325325
desc:Check if the i18n message catalog was updated
326326
cmds:
327327
-task:i18n:pull
328-
-git add -N ./internal/i18n/data
329-
-git diff --exit-code ./internal/i18n/data
328+
-git add -N ./internal/locales/data
329+
-git diff --exit-code ./internal/locales/data
330330

331331
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-mkdocs-task/Taskfile.yml
332332
website:check:

‎commands/instances.go‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import (
3838
"github.com/arduino/arduino-cli/internal/arduino/sketch"
3939
"github.com/arduino/arduino-cli/internal/arduino/utils"
4040
"github.com/arduino/arduino-cli/internal/i18n"
41+
"github.com/arduino/arduino-cli/internal/locales"
4142
rpc"github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
4243
paths"github.com/arduino/go-paths-helper"
4344
"github.com/sirupsen/logrus"
@@ -420,7 +421,7 @@ func (s *arduinoCoreServerImpl) Init(req *rpc.InitRequest, stream rpc.ArduinoCor
420421
// language of the CLI if the locale is different
421422
// after started.
422423
iflocale,ok,_:=s.settings.GetStringOk("locale");ok {
423-
i18n.Init(locale)
424+
locales.Init(locale)
424425
}
425426

426427
returnnil

‎commands/service_board_details.go‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ import (
2020

2121
"github.com/arduino/arduino-cli/commands/cmderrors"
2222
"github.com/arduino/arduino-cli/commands/internal/instances"
23-
"github.com/arduino/arduino-cli/internal/arduino/cores"
2423
"github.com/arduino/arduino-cli/internal/arduino/utils"
24+
"github.com/arduino/arduino-cli/pkg/fqbn"
2525
rpc"github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2626
)
2727

@@ -34,7 +34,7 @@ func (s *arduinoCoreServerImpl) BoardDetails(ctx context.Context, req *rpc.Board
3434
}
3535
deferrelease()
3636

37-
fqbn,err:=cores.ParseFQBN(req.GetFqbn())
37+
fqbn,err:=fqbn.Parse(req.GetFqbn())
3838
iferr!=nil {
3939
returnnil,&cmderrors.InvalidFQBNError{Cause:err}
4040
}
@@ -48,7 +48,7 @@ func (s *arduinoCoreServerImpl) BoardDetails(ctx context.Context, req *rpc.Board
4848
details.Name=board.Name()
4949
details.Fqbn=board.FQBN()
5050
details.PropertiesId=board.BoardID
51-
details.Official=fqbn.Package=="arduino"
51+
details.Official=fqbn.Packager=="arduino"
5252
details.Version=board.PlatformRelease.Version.String()
5353
details.IdentificationProperties= []*rpc.BoardIdentificationProperties{}
5454
for_,p:=rangeboard.GetIdentificationProperties() {

‎commands/service_board_list.go‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ import (
3030
"github.com/arduino/arduino-cli/commands/cmderrors"
3131
"github.com/arduino/arduino-cli/commands/internal/instances"
3232
f"github.com/arduino/arduino-cli/internal/algorithms"
33-
"github.com/arduino/arduino-cli/internal/arduino/cores"
3433
"github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager"
3534
"github.com/arduino/arduino-cli/internal/cli/configuration"
3635
"github.com/arduino/arduino-cli/internal/i18n"
3736
"github.com/arduino/arduino-cli/internal/inventory"
37+
"github.com/arduino/arduino-cli/pkg/fqbn"
3838
rpc"github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
3939
"github.com/arduino/go-properties-orderedmap"
4040
discovery"github.com/arduino/pluggable-discovery-protocol-handler/v2"
@@ -148,7 +148,7 @@ func identify(pme *packagemanager.Explorer, port *discovery.Port, settings *conf
148148
// first query installed cores through the Package Manager
149149
logrus.Debug("Querying installed cores for board identification...")
150150
for_,board:=rangepme.IdentifyBoard(port.Properties) {
151-
fqbn,err:=cores.ParseFQBN(board.FQBN())
151+
fqbn,err:=fqbn.Parse(board.FQBN())
152152
iferr!=nil {
153153
returnnil,&cmderrors.InvalidFQBNError{Cause:err}
154154
}
@@ -210,10 +210,10 @@ func (s *arduinoCoreServerImpl) BoardList(ctx context.Context, req *rpc.BoardLis
210210
}
211211
deferrelease()
212212

213-
varfqbnFilter*cores.FQBN
213+
varfqbnFilter*fqbn.FQBN
214214
iff:=req.GetFqbn();f!="" {
215215
varerrerror
216-
fqbnFilter,err=cores.ParseFQBN(f)
216+
fqbnFilter,err=fqbn.Parse(f)
217217
iferr!=nil {
218218
returnnil,&cmderrors.InvalidFQBNError{Cause:err}
219219
}
@@ -247,9 +247,9 @@ func (s *arduinoCoreServerImpl) BoardList(ctx context.Context, req *rpc.BoardLis
247247
},nil
248248
}
249249

250-
funchasMatchingBoard(b*rpc.DetectedPort,fqbnFilter*cores.FQBN)bool {
250+
funchasMatchingBoard(b*rpc.DetectedPort,fqbnFilter*fqbn.FQBN)bool {
251251
for_,detectedBoard:=rangeb.GetMatchingBoards() {
252-
detectedFqbn,err:=cores.ParseFQBN(detectedBoard.GetFqbn())
252+
detectedFqbn,err:=fqbn.Parse(detectedBoard.GetFqbn())
253253
iferr!=nil {
254254
continue
255255
}

‎commands/service_compile.go‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ import (
2828
"github.com/arduino/arduino-cli/commands/cmderrors"
2929
"github.com/arduino/arduino-cli/commands/internal/instances"
3030
"github.com/arduino/arduino-cli/internal/arduino/builder"
31-
"github.com/arduino/arduino-cli/internal/arduino/cores"
3231
"github.com/arduino/arduino-cli/internal/arduino/libraries/librariesmanager"
3332
"github.com/arduino/arduino-cli/internal/arduino/sketch"
3433
"github.com/arduino/arduino-cli/internal/arduino/utils"
3534
"github.com/arduino/arduino-cli/internal/buildcache"
3635
"github.com/arduino/arduino-cli/internal/i18n"
3736
"github.com/arduino/arduino-cli/internal/inventory"
37+
"github.com/arduino/arduino-cli/pkg/fqbn"
3838
rpc"github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
3939
paths"github.com/arduino/go-paths-helper"
4040
"github.com/sirupsen/logrus"
@@ -116,15 +116,15 @@ func (s *arduinoCoreServerImpl) Compile(req *rpc.CompileRequest, stream rpc.Ardu
116116
return&cmderrors.MissingFQBNError{}
117117
}
118118

119-
fqbn,err:=cores.ParseFQBN(fqbnIn)
119+
fqbn,err:=fqbn.Parse(fqbnIn)
120120
iferr!=nil {
121121
return&cmderrors.InvalidFQBNError{Cause:err}
122122
}
123123
_,targetPlatform,targetBoard,boardBuildProperties,buildPlatform,err:=pme.ResolveFQBN(fqbn)
124124
iferr!=nil {
125125
iftargetPlatform==nil {
126126
return&cmderrors.PlatformNotFoundError{
127-
Platform:fmt.Sprintf("%s:%s",fqbn.Package,fqbn.PlatformArch),
127+
Platform:fmt.Sprintf("%s:%s",fqbn.Packager,fqbn.Architecture),
128128
Cause:errors.New(i18n.Tr("platform not installed")),
129129
}
130130
}

‎commands/service_debug_config.go‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ import (
2727

2828
"github.com/arduino/arduino-cli/commands/cmderrors"
2929
"github.com/arduino/arduino-cli/commands/internal/instances"
30-
"github.com/arduino/arduino-cli/internal/arduino/cores"
3130
"github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager"
3231
"github.com/arduino/arduino-cli/internal/arduino/sketch"
3332
"github.com/arduino/arduino-cli/internal/i18n"
33+
"github.com/arduino/arduino-cli/pkg/fqbn"
3434
rpc"github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
3535
"github.com/arduino/go-paths-helper"
3636
"github.com/arduino/go-properties-orderedmap"
@@ -76,7 +76,7 @@ func (s *arduinoCoreServerImpl) IsDebugSupported(ctx context.Context, req *rpc.I
7676

7777
// Compute the minimum FQBN required to get the same debug configuration.
7878
// (i.e. the FQBN cleaned up of the options that do not affect the debugger configuration)
79-
minimumFQBN:=cores.MustParseFQBN(req.GetFqbn())
79+
minimumFQBN:=fqbn.MustParse(req.GetFqbn())
8080
for_,config:=rangeminimumFQBN.Configs.Keys() {
8181
checkFQBN:=minimumFQBN.Clone()
8282
checkFQBN.Configs.Remove(config)
@@ -127,7 +127,7 @@ func (s *arduinoCoreServerImpl) getDebugProperties(req *rpc.GetDebugConfigReques
127127
iffqbnIn=="" {
128128
returnnil,&cmderrors.MissingFQBNError{}
129129
}
130-
fqbn,err:=cores.ParseFQBN(fqbnIn)
130+
fqbn,err:=fqbn.Parse(fqbnIn)
131131
iferr!=nil {
132132
returnnil,&cmderrors.InvalidFQBNError{Cause:err}
133133
}

‎commands/service_library_list.go‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ import (
2121

2222
"github.com/arduino/arduino-cli/commands/cmderrors"
2323
"github.com/arduino/arduino-cli/commands/internal/instances"
24-
"github.com/arduino/arduino-cli/internal/arduino/cores"
2524
"github.com/arduino/arduino-cli/internal/arduino/libraries"
2625
"github.com/arduino/arduino-cli/internal/arduino/libraries/librariesindex"
2726
"github.com/arduino/arduino-cli/internal/arduino/libraries/librariesmanager"
2827
"github.com/arduino/arduino-cli/internal/arduino/libraries/librariesresolver"
2928
"github.com/arduino/arduino-cli/internal/i18n"
29+
"github.com/arduino/arduino-cli/pkg/fqbn"
3030
rpc"github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
3131
)
3232

@@ -59,7 +59,7 @@ func (s *arduinoCoreServerImpl) LibraryList(ctx context.Context, req *rpc.Librar
5959
varallLibs []*installedLib
6060
iffqbnString:=req.GetFqbn();fqbnString!="" {
6161
allLibs=listLibraries(lme,li,req.GetUpdatable(),true)
62-
fqbn,err:=cores.ParseFQBN(req.GetFqbn())
62+
fqbn,err:=fqbn.Parse(req.GetFqbn())
6363
iferr!=nil {
6464
returnnil,&cmderrors.InvalidFQBNError{Cause:err}
6565
}
@@ -77,8 +77,8 @@ func (s *arduinoCoreServerImpl) LibraryList(ctx context.Context, req *rpc.Librar
7777
}
7878
}
7979
iflatest,has:=filteredRes[lib.Library.Name];has {
80-
latestPriority:=librariesresolver.ComputePriority(latest.Library,"",fqbn.PlatformArch)
81-
libPriority:=librariesresolver.ComputePriority(lib.Library,"",fqbn.PlatformArch)
80+
latestPriority:=librariesresolver.ComputePriority(latest.Library,"",fqbn.Architecture)
81+
libPriority:=librariesresolver.ComputePriority(lib.Library,"",fqbn.Architecture)
8282
iflatestPriority>=libPriority {
8383
// Pick library with the best priority
8484
continue
@@ -87,7 +87,7 @@ func (s *arduinoCoreServerImpl) LibraryList(ctx context.Context, req *rpc.Librar
8787

8888
// Check if library is compatible with board specified by FBQN
8989
lib.Library.CompatibleWith=map[string]bool{
90-
fqbnString:lib.Library.IsCompatibleWith(fqbn.PlatformArch),
90+
fqbnString:lib.Library.IsCompatibleWith(fqbn.Architecture),
9191
}
9292

9393
filteredRes[lib.Library.Name]=lib

‎commands/service_monitor.go‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
"github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager"
2929
pluggableMonitor"github.com/arduino/arduino-cli/internal/arduino/monitor"
3030
"github.com/arduino/arduino-cli/internal/i18n"
31+
"github.com/arduino/arduino-cli/pkg/fqbn"
3132
rpc"github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
3233
"github.com/arduino/go-properties-orderedmap"
3334
"github.com/djherbis/buffer"
@@ -237,7 +238,7 @@ func (s *arduinoCoreServerImpl) Monitor(stream rpc.ArduinoCoreService_MonitorSer
237238
returnnil
238239
}
239240

240-
funcfindMonitorAndSettingsForProtocolAndBoard(pme*packagemanager.Explorer,protocol,fqbnstring) (*pluggableMonitor.PluggableMonitor,*properties.Map,error) {
241+
funcfindMonitorAndSettingsForProtocolAndBoard(pme*packagemanager.Explorer,protocol,fqbnInstring) (*pluggableMonitor.PluggableMonitor,*properties.Map,error) {
241242
ifprotocol=="" {
242243
returnnil,nil,&cmderrors.MissingPortProtocolError{}
243244
}
@@ -246,8 +247,8 @@ func findMonitorAndSettingsForProtocolAndBoard(pme *packagemanager.Explorer, pro
246247
boardSettings:=properties.NewMap()
247248

248249
// If a board is specified search the monitor in the board package first
249-
iffqbn!="" {
250-
fqbn,err:=cores.ParseFQBN(fqbn)
250+
iffqbnIn!="" {
251+
fqbn,err:=fqbn.Parse(fqbnIn)
251252
iferr!=nil {
252253
returnnil,nil,&cmderrors.InvalidFQBNError{Cause:err}
253254
}

‎commands/service_upload.go‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
"github.com/arduino/arduino-cli/internal/arduino/globals"
3333
"github.com/arduino/arduino-cli/internal/arduino/sketch"
3434
"github.com/arduino/arduino-cli/internal/i18n"
35+
"github.com/arduino/arduino-cli/pkg/fqbn"
3536
rpc"github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
3637
paths"github.com/arduino/go-paths-helper"
3738
properties"github.com/arduino/go-properties-orderedmap"
@@ -53,15 +54,15 @@ func (s *arduinoCoreServerImpl) SupportedUserFields(ctx context.Context, req *rp
5354
}
5455
deferrelease()
5556

56-
fqbn,err:=cores.ParseFQBN(req.GetFqbn())
57+
fqbn,err:=fqbn.Parse(req.GetFqbn())
5758
iferr!=nil {
5859
returnnil,&cmderrors.InvalidFQBNError{Cause:err}
5960
}
6061

6162
_,platformRelease,_,boardProperties,_,err:=pme.ResolveFQBN(fqbn)
6263
ifplatformRelease==nil {
6364
returnnil,&cmderrors.PlatformNotFoundError{
64-
Platform:fmt.Sprintf("%s:%s",fqbn.Package,fqbn.PlatformArch),
65+
Platform:fmt.Sprintf("%s:%s",fqbn.Packager,fqbn.Architecture),
6566
Cause:err,
6667
}
6768
}elseiferr!=nil {
@@ -282,7 +283,7 @@ func (s *arduinoCoreServerImpl) runProgramAction(ctx context.Context, pme *packa
282283
returnnil,&cmderrors.MissingProgrammerError{}
283284
}
284285

285-
fqbn,err:=cores.ParseFQBN(fqbnIn)
286+
fqbn,err:=fqbn.Parse(fqbnIn)
286287
iferr!=nil {
287288
returnnil,&cmderrors.InvalidFQBNError{Cause:err}
288289
}
@@ -292,7 +293,7 @@ func (s *arduinoCoreServerImpl) runProgramAction(ctx context.Context, pme *packa
292293
_,boardPlatform,board,boardProperties,buildPlatform,err:=pme.ResolveFQBN(fqbn)
293294
ifboardPlatform==nil {
294295
returnnil,&cmderrors.PlatformNotFoundError{
295-
Platform:fmt.Sprintf("%s:%s",fqbn.Package,fqbn.PlatformArch),
296+
Platform:fmt.Sprintf("%s:%s",fqbn.Packager,fqbn.Architecture),
296297
Cause:err,
297298
}
298299
}elseiferr!=nil {

‎commands/service_upload_list_programmers.go‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"github.com/arduino/arduino-cli/commands/cmderrors"
2222
"github.com/arduino/arduino-cli/commands/internal/instances"
2323
"github.com/arduino/arduino-cli/internal/arduino/cores"
24+
"github.com/arduino/arduino-cli/pkg/fqbn"
2425
rpc"github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2526
)
2627

@@ -36,7 +37,7 @@ func (s *arduinoCoreServerImpl) ListProgrammersAvailableForUpload(ctx context.Co
3637
iffqbnIn=="" {
3738
returnnil,&cmderrors.MissingFQBNError{}
3839
}
39-
fqbn,err:=cores.ParseFQBN(fqbnIn)
40+
fqbn,err:=fqbn.Parse(fqbnIn)
4041
iferr!=nil {
4142
returnnil,&cmderrors.InvalidFQBNError{Cause:err}
4243
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp