Skip to content

Removed dependency from bcmi-labs/arduino-modules #102

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Dec 17, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
121 changes: 2 additions & 119 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

69 changes: 55 additions & 14 deletions arduino/sketches/sketches.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@
package sketches

import (
"github.com/arduino/go-paths-helper"
"encoding/json"
"fmt"

"github.com/bcmi-labs/arduino-modules/sketches"
"github.com/arduino/go-paths-helper"
)

// SketchBook is a sketchbook
Expand All @@ -30,15 +31,20 @@ type SketchBook struct {

// Sketch is a sketch for Arduino
type Sketch struct {
Name string
Path string
BoardMetadata *BoardMetadata `json:"board"`
Name string
FullPath *paths.Path
Metadata *Metadata
}

// Metadata is the kind of data associated to a project such as the connected board
type Metadata struct {
CPU BoardMetadata `json:"cpu,omitempty" gorethink:"cpu"`
}

// BoardMetadata represents the board metadata for the sketch
type BoardMetadata struct {
Fqbn string `json:"fqbn,required"`
Name string `json:"name,required"`
Name string `json:"name,omitempty"`
}

// NewSketchBook returns a new SketchBook object
Expand All @@ -49,21 +55,56 @@ func NewSketchBook(path *paths.Path) *SketchBook {
}

// NewSketch loads a sketch from the sketchbook
func (sketchbook *SketchBook) NewSketch(name string) (*sketches.Sketch, error) {
sketch := sketches.Sketch{
FullPath: sketchbook.Path.Join(name).String(),
func (sketchbook *SketchBook) NewSketch(name string) (*Sketch, error) {
sketch := &Sketch{
FullPath: sketchbook.Path.Join(name),
Name: name,
}
sketch.ImportMetadata()
return &sketch, nil
return sketch, nil
}

// NewSketchFromPath loads a sketch from the specified path
func NewSketchFromPath(path *paths.Path) (*sketches.Sketch, error) {
sketch := sketches.Sketch{
FullPath: path.String(),
func NewSketchFromPath(path *paths.Path) (*Sketch, error) {
sketch := &Sketch{
FullPath: path,
Name: path.Base(),
}
sketch.ImportMetadata()
return &sketch, nil
return sketch, nil
}

// ImportMetadata imports metadata into the sketch from a sketch.json file in the root
// path of the sketch.
func (s *Sketch) ImportMetadata() error {
sketchJSON := s.FullPath.Join("sketch.json")
content, err := sketchJSON.ReadFile()
if err != nil {
return fmt.Errorf("reading sketch metadata %s: %s", sketchJSON, err)
}
var meta Metadata
err = json.Unmarshal(content, &meta)
if err != nil {
if s.Metadata == nil {
s.Metadata = new(Metadata)
}
return fmt.Errorf("encoding sketch metadata: %s", err)
}
s.Metadata = &meta
return nil
}

// ExportMetadata writes sketch metadata into a sketch.json file in the root path of
// the sketch
func (s *Sketch) ExportMetadata() error {
d, err := json.MarshalIndent(&s.Metadata, "", " ")
if err != nil {
return fmt.Errorf("decoding sketch metadata: %s", err)
}

sketchJSON := s.FullPath.Join("sketch.json")
if err := sketchJSON.WriteFile(d); err != nil {
return fmt.Errorf("writing sketch metadata %s: %s", sketchJSON, err)
}
return nil
}
10 changes: 3 additions & 7 deletions commands/board/attach.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ import (

"github.com/arduino/arduino-cli/arduino/cores"
"github.com/arduino/arduino-cli/arduino/cores/packagemanager"
"github.com/arduino/arduino-cli/arduino/sketches"
"github.com/arduino/arduino-cli/commands"
"github.com/arduino/arduino-cli/common/formatter"
discovery "github.com/arduino/board-discovery"
paths "github.com/arduino/go-paths-helper"
"github.com/bcmi-labs/arduino-modules/sketches"
"github.com/sirupsen/logrus"
"github.com/spf13/cobra"
)
Expand Down Expand Up @@ -79,7 +79,7 @@ func runAttachCommand(cmd *cobra.Command, args []string) {
pm := commands.InitPackageManager()

if fqbn != nil {
sketch.Metadata.CPU = sketches.MetadataCPU{
sketch.Metadata.CPU = sketches.BoardMetadata{
Fqbn: fqbn.String(),
}
} else {
Expand All @@ -90,14 +90,11 @@ func runAttachCommand(cmd *cobra.Command, args []string) {
}

var findBoardFunc func(*packagemanager.PackageManager, *discovery.Monitor, *url.URL) *cores.Board
var Type string
switch deviceURI.Scheme {
case "serial", "tty":
findBoardFunc = findSerialConnectedBoard
Type = "serial"
case "http", "https", "tcp", "udp":
findBoardFunc = findNetworkConnectedBoard
Type = "network"
default:
formatter.PrintErrorMessage("Invalid device port type provided. Accepted types are: serial://, tty://, http://, https://, tcp://, udp://.")
os.Exit(commands.ErrBadCall)
Expand All @@ -122,10 +119,9 @@ func runAttachCommand(cmd *cobra.Command, args []string) {
}
formatter.Print("Board found: " + board.Name())

sketch.Metadata.CPU = sketches.MetadataCPU{
sketch.Metadata.CPU = sketches.BoardMetadata{
Fqbn: board.FQBN(),
Name: board.Name(),
Type: Type,
}
}

Expand Down
3 changes: 1 addition & 2 deletions commands/commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import (
"github.com/arduino/arduino-cli/arduino/libraries/librariesmanager"
"github.com/arduino/arduino-cli/arduino/sketches"
"github.com/arduino/arduino-cli/configs"
sk "github.com/bcmi-labs/arduino-modules/sketches"

"github.com/arduino/arduino-cli/arduino/cores/packagemanager"
"github.com/arduino/arduino-cli/common/formatter"
Expand Down Expand Up @@ -168,7 +167,7 @@ func UpdateLibrariesIndex(lm *librariesmanager.LibrariesManager) {
}
}

func InitSketch(sketchPath *paths.Path) (*sk.Sketch, error) {
func InitSketch(sketchPath *paths.Path) (*sketches.Sketch, error) {
if sketchPath != nil {
return sketches.NewSketchFromPath(sketchPath)
}
Expand Down
4 changes: 2 additions & 2 deletions commands/compile/compile.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ func run(cmd *cobra.Command, args []string) {
ctx := &types.Context{}
ctx.PackageManager = pm
ctx.FQBN = fqbn
ctx.SketchLocation = paths.New(sketch.FullPath)
ctx.SketchLocation = sketch.FullPath

// FIXME: This will be redundant when arduino-builder will be part of the cli
if packagesDir, err := commands.Config.HardwareDirectories(); err == nil {
Expand Down Expand Up @@ -257,7 +257,7 @@ func run(cmd *cobra.Command, args []string) {
var exportPath *paths.Path
var exportFile string
if flags.exportFile == "" {
exportPath = paths.New(sketch.FullPath)
exportPath = sketch.FullPath
exportFile = sketch.Name + "." + fqbnSuffix
} else {
exportPath = paths.New(flags.exportFile).Parent()
Expand Down
Loading