Skip to content

Commit 482084b

Browse files
lucarin91Xaytondido18
authored
feat: compile and upload sketch
* feat: compile and upload sketch * imoplement code review suggestion * use grpc instead of exec * try update golangci-lint * fixup! Fixed linter check * fixup! Fixed linter check * add suggested comment * Update how to run examples in the README * add error if no board are detected * chore format * Update internal/orchestrator/orchestrator.go Co-authored-by: Davide <davideneri18@gmail.com> --------- Co-authored-by: Xayton <30591904+Xayton@users.noreply.github.com> Co-authored-by: Davide <davideneri18@gmail.com>
1 parent 3f2d07b commit 482084b

File tree

12 files changed

+446
-80
lines changed

12 files changed

+446
-80
lines changed

.env

Lines changed: 0 additions & 2 deletions
This file was deleted.

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,5 @@ go.work.sum
2929
build/
3030

3131
**/.cache
32+
33+
orchestrator

cmd/orchestrator/main.go

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"log/slog"
99
"net/http"
1010
"os"
11+
"path"
1112
"time"
1213

1314
dockerClient "github.com/docker/docker/client"
@@ -19,19 +20,25 @@ import (
1920
"github.com/arduino/arduino-app-cli/pkg/parser"
2021
)
2122

23+
const DockerRegistry = "ghcr.io/bcmi-labs/"
24+
const DockerPythonImage = "arduino/appslab-python-apps-base:0.0.2"
25+
2226
var pythonImage string
2327

2428
func init() {
2529
// Registry base: contains the registry and namespace, common to all Arduino docker images.
2630
registryBase := os.Getenv("DOCKER_REGISTRY_BASE")
31+
if registryBase == "" {
32+
registryBase = DockerRegistry
33+
}
2734

2835
// Python image: image name (repository) and optionally a tag.
2936
pythonImageAndTag := os.Getenv("DOCKER_PYTHON_BASE_IMAGE")
30-
31-
pythonImage = registryBase
32-
if pythonImageAndTag != "" {
33-
pythonImage += pythonImageAndTag
37+
if pythonImageAndTag == "" {
38+
pythonImageAndTag = DockerPythonImage
3439
}
40+
41+
pythonImage = path.Join(registryBase, pythonImageAndTag)
3542
fmt.Println("Using pythonImage:", pythonImage)
3643
}
3744

@@ -78,7 +85,10 @@ func main() {
7885
Use: "start",
7986
Short: "Start the Python app",
8087
Run: func(cmd *cobra.Command, args []string) {
81-
provisionHandler(cmd.Context(), docker, parsedApp)
88+
if parsedApp.MainPythonFile != nil {
89+
provisionHandler(cmd.Context(), docker, parsedApp)
90+
}
91+
8292
startHandler(cmd.Context(), parsedApp)
8393
},
8494
},

examples/justblink/app.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
display-name: Just blink
2+
description: Very simple blink example
3+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#include <Arduino.h>
2+
3+
void setup() {
4+
pinMode(LED_BUILTIN, OUTPUT);
5+
}
6+
7+
void loop() {
8+
digitalWrite(LED_BUILTIN, HIGH);
9+
delay(1000); // Wait for 1 second.
10+
11+
digitalWrite(LED_BUILTIN, LOW);
12+
delay(1000); // Wait for 1 second.
13+
}

go.mod

Lines changed: 67 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
module github.com/arduino/arduino-app-cli
22

3-
go 1.24
3+
go 1.24.1
44

55
require (
6-
github.com/arduino/go-paths-helper v1.12.1
7-
github.com/davecgh/go-spew v1.1.1
8-
github.com/djherbis/buffer v1.1.0
6+
github.com/arduino/arduino-cli v1.2.2
7+
github.com/arduino/go-paths-helper v1.13.0
8+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
9+
github.com/djherbis/buffer v1.2.0
910
github.com/djherbis/nio/v3 v3.0.1
1011
github.com/docker/docker v28.0.4+incompatible
12+
github.com/sirupsen/logrus v1.9.3
1113
github.com/spf13/cobra v1.9.1
1214
github.com/stretchr/testify v1.10.0
1315
github.com/vmihailenco/msgpack/v5 v5.4.1
@@ -18,36 +20,90 @@ require (
1820
)
1921

2022
require (
21-
github.com/creack/goselect v0.1.2 // indirect
22-
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
23-
)
24-
25-
require (
23+
dario.cat/mergo v1.0.0 // indirect
24+
fortio.org/safecast v1.0.0 // indirect
2625
github.com/Microsoft/go-winio v0.6.2 // indirect
26+
github.com/ProtonMail/go-crypto v1.2.0 // indirect
27+
github.com/arduino/go-properties-orderedmap v1.8.1 // indirect
28+
github.com/arduino/go-serial-utils v0.1.2 // indirect
29+
github.com/arduino/go-timeutils v0.0.0-20171220113728-d1dd9e313b1b // indirect
30+
github.com/arduino/go-win32-utils v1.0.0 // indirect
31+
github.com/arduino/pluggable-discovery-protocol-handler/v2 v2.2.1 // indirect
32+
github.com/cloudflare/circl v1.6.1 // indirect
33+
github.com/cmaglie/pb v1.0.27 // indirect
34+
github.com/codeclysm/extract/v4 v4.0.0 // indirect
2735
github.com/containerd/log v0.1.0 // indirect
36+
github.com/creack/goselect v0.1.2 // indirect
37+
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
2838
github.com/distribution/reference v0.6.0 // indirect
2939
github.com/docker/go-connections v0.5.0 // indirect
3040
github.com/docker/go-units v0.5.0 // indirect
41+
github.com/emirpasic/gods v1.18.1 // indirect
3142
github.com/felixge/httpsnoop v1.0.4 // indirect
43+
github.com/fsnotify/fsnotify v1.8.0 // indirect
44+
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
45+
github.com/go-git/go-billy/v5 v5.6.2 // indirect
46+
github.com/go-git/go-git/v5 v5.16.0 // indirect
3247
github.com/go-logr/logr v1.4.2 // indirect
3348
github.com/go-logr/stdr v1.2.2 // indirect
49+
github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
50+
github.com/gofrs/uuid/v5 v5.3.2 // indirect
3451
github.com/gogo/protobuf v1.3.2 // indirect
52+
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
53+
github.com/h2non/filetype v1.1.3 // indirect
3554
github.com/inconshreveable/mousetrap v1.1.0 // indirect
55+
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
56+
github.com/josharian/intern v1.0.0 // indirect
57+
github.com/juju/errors v1.0.0 // indirect
58+
github.com/kevinburke/ssh_config v1.2.0 // indirect
59+
github.com/klauspost/compress v1.17.2 // indirect
60+
github.com/leonelquinteros/gotext v1.7.1 // indirect
61+
github.com/mailru/easyjson v0.7.7 // indirect
62+
github.com/marcinbor85/gohex v0.0.0-20210308104911-55fb1c624d84 // indirect
63+
github.com/mattn/go-isatty v0.0.20 // indirect
64+
github.com/mattn/go-runewidth v0.0.15 // indirect
3665
github.com/moby/docker-image-spec v1.3.1 // indirect
3766
github.com/moby/term v0.5.2 // indirect
3867
github.com/morikuni/aec v1.0.0 // indirect
3968
github.com/opencontainers/go-digest v1.0.0 // indirect
4069
github.com/opencontainers/image-spec v1.1.1 // indirect
70+
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
71+
github.com/pjbgf/sha1cd v0.3.2 // indirect
4172
github.com/pkg/errors v0.9.1 // indirect
42-
github.com/pmezard/go-difflib v1.0.0 // indirect
73+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
74+
github.com/rivo/uniseg v0.4.4 // indirect
75+
github.com/sagikazarmark/locafero v0.7.0 // indirect
76+
github.com/schollz/closestmatch v2.1.0+incompatible // indirect
77+
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
78+
github.com/skeema/knownhosts v1.3.1 // indirect
79+
github.com/sourcegraph/conc v0.3.0 // indirect
80+
github.com/spf13/afero v1.12.0 // indirect
81+
github.com/spf13/cast v1.7.1 // indirect
4382
github.com/spf13/pflag v1.0.6 // indirect
83+
github.com/spf13/viper v1.20.1 // indirect
84+
github.com/subosito/gotenv v1.6.0 // indirect
85+
github.com/ulikunitz/xz v0.5.12 // indirect
86+
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
87+
github.com/xanzy/ssh-agent v0.3.3 // indirect
88+
go.bug.st/downloader/v2 v2.2.0 // indirect
89+
go.bug.st/relaxed-semver v0.15.0 // indirect
4490
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
4591
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect
4692
go.opentelemetry.io/otel v1.35.0 // indirect
4793
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 // indirect
4894
go.opentelemetry.io/otel/metric v1.35.0 // indirect
4995
go.opentelemetry.io/otel/trace v1.35.0 // indirect
50-
golang.org/x/sys v0.31.0 // indirect
96+
go.uber.org/atomic v1.9.0 // indirect
97+
go.uber.org/multierr v1.9.0 // indirect
98+
golang.org/x/crypto v0.37.0 // indirect
99+
golang.org/x/net v0.39.0 // indirect
100+
golang.org/x/sys v0.32.0 // indirect
101+
golang.org/x/term v0.31.0 // indirect
102+
golang.org/x/text v0.24.0 // indirect
51103
golang.org/x/time v0.11.0 // indirect
104+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect
105+
google.golang.org/grpc v1.72.0 // indirect
106+
google.golang.org/protobuf v1.36.6 // indirect
107+
gopkg.in/warnings.v0 v0.1.2 // indirect
52108
gotest.tools/v3 v3.5.2 // indirect
53109
)

0 commit comments

Comments
 (0)