Skip to content

Commit

Permalink
[breaking] refactor: made some golang modules private (part 2) (#2455)
Browse files Browse the repository at this point in the history
* Made 'configuration' package internal

* Made 'arduino' package internal

* Moved errors in their own package

* Moved directories init out of commands/internal/instances

* Updated docs

* Removed dep on pkg/errors library

* Update easyjson task and generated files

* Move the terminal detection subroutines in feedback package

This also fix the linter errors:

internal/cli/configuration/term.go:25:39: use of `os.Stdin` forbidden because "in cli package use `feedback.*` instead" (forbidigo)
var IsInteractive = isatty.IsTerminal(os.Stdin.Fd()) || isatty.IsCygwinTerminal(os.Stdin.Fd())
                                      ^
internal/cli/configuration/term.go:28:36: use of `os.Stdout` forbidden because "in cli package use `feedback.*` instead" (forbidigo)
var HasConsole = isatty.IsTerminal(os.Stdout.Fd()) || isatty.IsCygwinTerminal(os.Stdout.Fd())

* Fix linter warning

* Fixed docs:include-configuration-json-schema task

* Fixed build test for discovery_client
  • Loading branch information
cmaglie authored Dec 13, 2023
1 parent 76ea8c1 commit 0fc6575
Show file tree
Hide file tree
Showing 496 changed files with 789 additions and 866 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/check-go-task.yml
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ jobs:

matrix:
module:
- path: arduino/discovery/discovery_client
- path: internal/arduino/discovery/discovery_client
- path: client_example
- path: commands/daemon/term_example

Expand Down
2 changes: 1 addition & 1 deletion .licenses/go/github.com/arduino/go-paths-helper.dep.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: github.com/arduino/go-paths-helper
version: v1.10.0
version: v1.10.1
type: go
summary:
homepage: https://pkg.go.dev/github.com/arduino/go-paths-helper
Expand Down
36 changes: 0 additions & 36 deletions .licenses/go/github.com/pkg/errors.dep.yml

This file was deleted.

2 changes: 1 addition & 1 deletion DistTasks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -258,4 +258,4 @@ tasks:
desc: Copy the JSON schema to dist folder
cmds:
- mkdir --parents {{.DIST_DIR}}
- cp ./configuration/configuration.schema.json {{.DIST_DIR}}/{{.PROJECT_NAME}}_{{.VERSION}}_configuration.schema.json
- cp ./internal/cli/configuration/configuration.schema.json {{.DIST_DIR}}/{{.PROJECT_NAME}}_{{.VERSION}}_configuration.schema.json
6 changes: 3 additions & 3 deletions Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,8 @@ tasks:
desc: Run easyjson code generation
cmds:
- go install github.com/mailru/easyjson/[email protected]
- easyjson arduino/cores/packageindex/index.go
- easyjson arduino/libraries/librariesindex/json.go
- easyjson internal/arduino/cores/packageindex/index.go
- easyjson internal/arduino/libraries/librariesindex/json.go

go:add-license-headers:
desc: Add missing go license headers
Expand Down Expand Up @@ -246,7 +246,7 @@ tasks:
docs:include-configuration-json-schema:
desc: Copy configuration JSON schema to make it available in documentation
cmds:
- cp ./configuration/configuration.schema.json ./docs/configuration.schema.json
- cp ./internal/cli/configuration/configuration.schema.json ./docs/configuration.schema.json

protoc:check:
desc: Perform linting of the protobuf definitions
Expand Down
12 changes: 6 additions & 6 deletions commands/board/details.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ package board
import (
"context"

"github.com/arduino/arduino-cli/arduino"
"github.com/arduino/arduino-cli/arduino/cores"
"github.com/arduino/arduino-cli/arduino/utils"
"github.com/arduino/arduino-cli/commands/cmderrors"
"github.com/arduino/arduino-cli/commands/internal/instances"
"github.com/arduino/arduino-cli/internal/arduino/cores"
"github.com/arduino/arduino-cli/internal/arduino/utils"
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
)

Expand All @@ -30,18 +30,18 @@ import (
func Details(ctx context.Context, req *rpc.BoardDetailsRequest) (*rpc.BoardDetailsResponse, error) {
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
if pme == nil {
return nil, &arduino.InvalidInstanceError{}
return nil, &cmderrors.InvalidInstanceError{}
}
defer release()

fqbn, err := cores.ParseFQBN(req.GetFqbn())
if err != nil {
return nil, &arduino.InvalidFQBNError{Cause: err}
return nil, &cmderrors.InvalidFQBNError{Cause: err}
}

boardPackage, boardPlatformRelease, board, boardProperties, _, err := pme.ResolveFQBN(fqbn)
if err != nil {
return nil, &arduino.UnknownFQBNError{Cause: err}
return nil, &cmderrors.UnknownFQBNError{Cause: err}
}

details := &rpc.BoardDetailsResponse{}
Expand Down
32 changes: 16 additions & 16 deletions commands/board/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package board
import (
"context"
"encoding/json"
"errors"
"fmt"
"io"
"net/http"
Expand All @@ -26,16 +27,15 @@ import (
"strings"
"time"

"github.com/arduino/arduino-cli/arduino"
"github.com/arduino/arduino-cli/arduino/cores"
"github.com/arduino/arduino-cli/arduino/cores/packagemanager"
"github.com/arduino/arduino-cli/arduino/discovery"
"github.com/arduino/arduino-cli/arduino/httpclient"
"github.com/arduino/arduino-cli/commands/cmderrors"
"github.com/arduino/arduino-cli/commands/internal/instances"
"github.com/arduino/arduino-cli/internal/arduino/cores"
"github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager"
"github.com/arduino/arduino-cli/internal/arduino/discovery"
"github.com/arduino/arduino-cli/internal/arduino/httpclient"
"github.com/arduino/arduino-cli/internal/inventory"
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
"github.com/arduino/go-properties-orderedmap"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
)

Expand Down Expand Up @@ -73,10 +73,10 @@ func cachedAPIByVidPid(vid, pid string) ([]*rpc.BoardListItem, error) {
func apiByVidPid(vid, pid string) ([]*rpc.BoardListItem, error) {
// ensure vid and pid are valid before hitting the API
if !validVidPid.MatchString(vid) {
return nil, errors.Errorf(tr("Invalid vid value: '%s'"), vid)
return nil, errors.New(tr("Invalid vid value: '%s'", vid))
}
if !validVidPid.MatchString(pid) {
return nil, errors.Errorf(tr("Invalid pid value: '%s'"), pid)
return nil, errors.New(tr("Invalid pid value: '%s'", pid))
}

url := fmt.Sprintf("%s/%s/%s", vidPidURL, vid, pid)
Expand All @@ -88,19 +88,19 @@ func apiByVidPid(vid, pid string) ([]*rpc.BoardListItem, error) {
httpClient, err := httpclient.New()

if err != nil {
return nil, errors.Wrap(err, tr("failed to initialize http client"))
return nil, fmt.Errorf("%s: %w", tr("failed to initialize http client"), err)
}

res, err := httpClient.Do(req)
if err != nil {
return nil, errors.Wrap(err, tr("error querying Arduino Cloud Api"))
return nil, fmt.Errorf("%s: %w", tr("error querying Arduino Cloud Api"), err)
}
if res.StatusCode == 404 {
// This is not an error, it just means that the board is not recognized
return nil, nil
}
if res.StatusCode >= 400 {
return nil, errors.Errorf(tr("the server responded with status %s"), res.Status)
return nil, errors.New(tr("the server responded with status %s", res.Status))
}

resp, err := io.ReadAll(res.Body)
Expand All @@ -113,7 +113,7 @@ func apiByVidPid(vid, pid string) ([]*rpc.BoardListItem, error) {

var dat map[string]interface{}
if err := json.Unmarshal(resp, &dat); err != nil {
return nil, errors.Wrap(err, tr("error processing response from server"))
return nil, fmt.Errorf("%s: %w", tr("error processing response from server"), err)
}
name, nameFound := dat["name"].(string)
fqbn, fbqnFound := dat["fqbn"].(string)
Expand Down Expand Up @@ -151,7 +151,7 @@ func identify(pme *packagemanager.Explorer, port *discovery.Port) ([]*rpc.BoardL
for _, board := range pme.IdentifyBoard(port.Properties) {
fqbn, err := cores.ParseFQBN(board.FQBN())
if err != nil {
return nil, &arduino.InvalidFQBNError{Cause: err}
return nil, &cmderrors.InvalidFQBNError{Cause: err}
}
fqbn.Configs = board.IdentifyBoardConfiguration(port.Properties)

Expand Down Expand Up @@ -207,7 +207,7 @@ func identify(pme *packagemanager.Explorer, port *discovery.Port) ([]*rpc.BoardL
func List(req *rpc.BoardListRequest) (r []*rpc.DetectedPort, discoveryStartErrors []error, e error) {
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
if pme == nil {
return nil, nil, &arduino.InvalidInstanceError{}
return nil, nil, &cmderrors.InvalidInstanceError{}
}
defer release()

Expand All @@ -216,7 +216,7 @@ func List(req *rpc.BoardListRequest) (r []*rpc.DetectedPort, discoveryStartError
var err error
fqbnFilter, err = cores.ParseFQBN(f)
if err != nil {
return nil, nil, &arduino.InvalidFQBNError{Cause: err}
return nil, nil, &cmderrors.InvalidFQBNError{Cause: err}
}
}

Expand Down Expand Up @@ -262,7 +262,7 @@ func hasMatchingBoard(b *rpc.DetectedPort, fqbnFilter *cores.FQBN) bool {
func Watch(ctx context.Context, req *rpc.BoardListWatchRequest) (<-chan *rpc.BoardListWatchResponse, error) {
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
if pme == nil {
return nil, &arduino.InvalidInstanceError{}
return nil, &cmderrors.InvalidInstanceError{}
}
defer release()
dm := pme.DiscoveryManager()
Expand Down
6 changes: 3 additions & 3 deletions commands/board/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ import (
"net/http/httptest"
"testing"

"github.com/arduino/arduino-cli/arduino/cores/packagemanager"
"github.com/arduino/arduino-cli/arduino/discovery"
"github.com/arduino/arduino-cli/configuration"
"github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager"
"github.com/arduino/arduino-cli/internal/arduino/discovery"
"github.com/arduino/arduino-cli/internal/cli/configuration"
"github.com/arduino/go-paths-helper"
"github.com/arduino/go-properties-orderedmap"
"github.com/stretchr/testify/require"
Expand Down
8 changes: 4 additions & 4 deletions commands/board/listall.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,19 @@ import (
"sort"
"strings"

"github.com/arduino/arduino-cli/arduino"
"github.com/arduino/arduino-cli/arduino/cores"
"github.com/arduino/arduino-cli/arduino/utils"
"github.com/arduino/arduino-cli/commands"
"github.com/arduino/arduino-cli/commands/cmderrors"
"github.com/arduino/arduino-cli/commands/internal/instances"
"github.com/arduino/arduino-cli/internal/arduino/cores"
"github.com/arduino/arduino-cli/internal/arduino/utils"
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
)

// ListAll FIXMEDOC
func ListAll(ctx context.Context, req *rpc.BoardListAllRequest) (*rpc.BoardListAllResponse, error) {
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
if pme == nil {
return nil, &arduino.InvalidInstanceError{}
return nil, &cmderrors.InvalidInstanceError{}
}
defer release()

Expand Down
6 changes: 3 additions & 3 deletions commands/board/search.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ import (
"sort"
"strings"

"github.com/arduino/arduino-cli/arduino"
"github.com/arduino/arduino-cli/arduino/utils"
"github.com/arduino/arduino-cli/commands"
"github.com/arduino/arduino-cli/commands/cmderrors"
"github.com/arduino/arduino-cli/commands/internal/instances"
"github.com/arduino/arduino-cli/internal/arduino/utils"
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
)

Expand All @@ -34,7 +34,7 @@ import (
func Search(ctx context.Context, req *rpc.BoardSearchRequest) (*rpc.BoardSearchResponse, error) {
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
if pme == nil {
return nil, &arduino.InvalidInstanceError{}
return nil, &cmderrors.InvalidInstanceError{}
}
defer release()

Expand Down
2 changes: 1 addition & 1 deletion arduino/errors.go → commands/cmderrors/cmderrors.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
// Arduino software without disclosing the source code of your own applications.
// To purchase a commercial license, send an email to [email protected].

package arduino
package cmderrors

import (
"fmt"
Expand Down
Loading

0 comments on commit 0fc6575

Please sign in to comment.