diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 000000000..f9996403a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,56 @@ +# Source: https://github.com/arduino/tooling-project-assets/blob/main/issue-templates/forms/platform-dependent/bug-report.yml +# See: https://docs.github.com/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms + +name: Bug report +description: Report a problem with the code or documentation in this repository. +labels: + - "type: imperfection" +body: + - type: textarea + id: description + attributes: + label: Describe the problem + validations: + required: true + - type: textarea + id: reproduce + attributes: + label: To reproduce + description: Provide the specific set of steps we can follow to reproduce the problem. + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected behavior + description: What would you expect to happen after following those instructions? + validations: + required: true + - type: input + id: project-version + attributes: + label: Arduino App CLI version + description: | + Which version of Arduino App CLI are you using? (output of `arduino-app-cli version` executed inside the board) + _This should be the most recent version available._ + validations: + required: true + - type: textarea + id: additional + attributes: + label: Additional context + description: Add any additional information here. + validations: + required: false + - type: checkboxes + id: checklist + attributes: + label: Issue checklist + description: Please double-check that you have done each of the following things before submitting the issue. + options: + - label: I searched for previous reports in [the issue tracker](https://github.com/arduino/arduino-app-cli/issues?q=) + required: true + - label: I verified the problem still occurs when using the latest version + required: true + - label: My report contains all necessary details + required: true diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml new file mode 100644 index 000000000..548107586 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -0,0 +1,51 @@ +# Source: https://github.com/arduino/tooling-project-assets/blob/main/issue-templates/forms/platform-dependent/bug-report.yml +# See: https://docs.github.com/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms + +name: Feature request +description: Suggest an enhancement to this project. +labels: + - "type: enhancement" +body: + - type: textarea + id: description + attributes: + label: Describe the request + validations: + required: true + - type: textarea + id: current + attributes: + label: Describe the current behavior + description: | + What is the current behavior of Arduino App CLI in relation to your request? + How can we reproduce that behavior? + validations: + required: true + - type: input + id: project-version + attributes: + label: Arduino App CLI version + description: | + Which version of Arduino App CLI are you using? (output of `arduino-app-cli version` executed inside the board) + _This should be the most recent version available._ + validations: + required: true + - type: textarea + id: additional + attributes: + label: Additional context + description: Add any additional information here. + validations: + required: false + - type: checkboxes + id: checklist + attributes: + label: Issue checklist + description: Please double-check that you have done each of the following things before submitting the issue. + options: + - label: I searched for previous requests in [the issue tracker](https://github.com/arduino/arduino-app-cli/issues?q=) + required: true + - label: I verified the feature was still missing when using the latest version + required: true + - label: My request contains all necessary details + required: true diff --git a/.github/workflows/test-update.yml b/.github/workflows/test-update.yml new file mode 100644 index 000000000..9b5dc6bff --- /dev/null +++ b/.github/workflows/test-update.yml @@ -0,0 +1,29 @@ +name: test the system update flow + +on: + push: + branches: + - main + workflow_dispatch: + +permissions: + contents: read + +jobs: + build-and-update: + runs-on: ubuntu-22.04 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version-file: go.mod + + - name: Run dep package update test + env: + GH_TOKEN: ${{ secrets.ARDUINOBOT_TOKEN }} + run: | + go tool task test:update diff --git a/.licenses/arduino-app-cli/NOTICE b/.licenses/arduino-app-cli/NOTICE index ff6448cfc..d6dabb074 100644 --- a/.licenses/arduino-app-cli/NOTICE +++ b/.licenses/arduino-app-cli/NOTICE @@ -7163,7 +7163,7 @@ use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. ***** -github.com/arduino/arduino-cli/commands@v1.3.1 +github.com/arduino/arduino-cli/commands@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -7877,7 +7877,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/commands/cmderrors@v1.3.1 +github.com/arduino/arduino-cli/commands/cmderrors@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -8591,7 +8591,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/commands/internal/instances@v1.3.1 +github.com/arduino/arduino-cli/commands/internal/instances@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -9305,7 +9305,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/algorithms@v1.3.1 +github.com/arduino/arduino-cli/internal/algorithms@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -10019,7 +10019,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/builder@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/builder@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -10733,7 +10733,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/builder/cpp@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/builder/cpp@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -11447,7 +11447,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/builder/internal/compilation@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/builder/internal/compilation@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -12161,7 +12161,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/builder/internal/detector@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/builder/internal/detector@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -12875,7 +12875,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/builder/internal/diagnostics@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/builder/internal/diagnostics@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -13589,7 +13589,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/builder/internal/preprocessor@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/builder/internal/preprocessor@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -14303,7 +14303,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/builder/internal/preprocessor/internal/ctags@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/builder/internal/preprocessor/internal/ctags@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -15017,7 +15017,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/builder/internal/progress@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/builder/internal/progress@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -15731,7 +15731,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/builder/internal/runner@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/builder/internal/runner@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -16445,7 +16445,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/builder/internal/utils@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/builder/internal/utils@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -17159,7 +17159,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/builder/logger@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/builder/logger@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -17873,7 +17873,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/cores@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/cores@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -18587,7 +18587,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/cores/packageindex@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/cores/packageindex@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -19301,7 +19301,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -20015,7 +20015,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/discovery/discoverymanager@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/discovery/discoverymanager@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -20729,7 +20729,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/globals@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/globals@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -21443,7 +21443,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/httpclient@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/httpclient@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -22157,7 +22157,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/libraries@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/libraries@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -22871,7 +22871,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/libraries/librariesindex@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/libraries/librariesindex@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -23585,7 +23585,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/libraries/librariesmanager@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/libraries/librariesmanager@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -24299,7 +24299,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/libraries/librariesresolver@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/libraries/librariesresolver@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -25013,7 +25013,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/monitor@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/monitor@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -25727,7 +25727,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/resources@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/resources@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -26441,7 +26441,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/security@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/security@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -27155,7 +27155,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/sketch@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/sketch@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -27869,7 +27869,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/arduino/utils@v1.3.1 +github.com/arduino/arduino-cli/internal/arduino/utils@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -28583,7 +28583,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/buildcache@v1.3.1 +github.com/arduino/arduino-cli/internal/buildcache@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -29297,7 +29297,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/cli/configuration@v1.3.1 +github.com/arduino/arduino-cli/internal/cli/configuration@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -30011,7 +30011,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/cli/feedback@v1.3.1 +github.com/arduino/arduino-cli/internal/cli/feedback@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -30725,7 +30725,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/go-configmap@v1.3.1 +github.com/arduino/arduino-cli/internal/go-configmap@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -31439,7 +31439,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/i18n@v1.3.1 +github.com/arduino/arduino-cli/internal/i18n@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -32153,7 +32153,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/inventory@v1.3.1 +github.com/arduino/arduino-cli/internal/inventory@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -32867,7 +32867,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/internal/locales@v1.3.1 +github.com/arduino/arduino-cli/internal/locales@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -33562,7 +33562,7 @@ Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. ***** -github.com/arduino/arduino-cli/internal/version@v1.3.1 +github.com/arduino/arduino-cli/internal/version@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -34276,7 +34276,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/pkg/fqbn@v1.3.1 +github.com/arduino/arduino-cli/pkg/fqbn@v1.4.0 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -34990,7 +34990,7 @@ license@arduino.cc [security policy]: https://github.com/arduino/arduino-cli/security/policy ***** -github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1@v1.3.1 +github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1@v1.4.0 Apache License Version 2.0, January 2004 @@ -97857,7 +97857,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5@v5.16.2 +github.com/go-git/go-git/v5@v5.16.4 Apache License Version 2.0, January 2004 @@ -98066,7 +98066,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/config@v5.16.2 +github.com/go-git/go-git/v5/config@v5.16.4 Apache License Version 2.0, January 2004 @@ -98275,7 +98275,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/internal/path_util@v5.16.2 +github.com/go-git/go-git/v5/internal/path_util@v5.16.4 Apache License Version 2.0, January 2004 @@ -98484,7 +98484,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/internal/revision@v5.16.2 +github.com/go-git/go-git/v5/internal/revision@v5.16.4 Apache License Version 2.0, January 2004 @@ -98693,7 +98693,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/internal/url@v5.16.2 +github.com/go-git/go-git/v5/internal/url@v5.16.4 Apache License Version 2.0, January 2004 @@ -98902,7 +98902,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing@v5.16.2 +github.com/go-git/go-git/v5/plumbing@v5.16.4 Apache License Version 2.0, January 2004 @@ -99111,7 +99111,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/cache@v5.16.2 +github.com/go-git/go-git/v5/plumbing/cache@v5.16.4 Apache License Version 2.0, January 2004 @@ -99320,7 +99320,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/color@v5.16.2 +github.com/go-git/go-git/v5/plumbing/color@v5.16.4 Apache License Version 2.0, January 2004 @@ -99529,7 +99529,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/filemode@v5.16.2 +github.com/go-git/go-git/v5/plumbing/filemode@v5.16.4 Apache License Version 2.0, January 2004 @@ -99738,7 +99738,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/format/config@v5.16.2 +github.com/go-git/go-git/v5/plumbing/format/config@v5.16.4 Apache License Version 2.0, January 2004 @@ -99947,7 +99947,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/format/diff@v5.16.2 +github.com/go-git/go-git/v5/plumbing/format/diff@v5.16.4 Apache License Version 2.0, January 2004 @@ -100156,7 +100156,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/format/gitignore@v5.16.2 +github.com/go-git/go-git/v5/plumbing/format/gitignore@v5.16.4 Apache License Version 2.0, January 2004 @@ -100365,7 +100365,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/format/idxfile@v5.16.2 +github.com/go-git/go-git/v5/plumbing/format/idxfile@v5.16.4 Apache License Version 2.0, January 2004 @@ -100574,7 +100574,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/format/index@v5.16.2 +github.com/go-git/go-git/v5/plumbing/format/index@v5.16.4 Apache License Version 2.0, January 2004 @@ -100783,7 +100783,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/format/objfile@v5.16.2 +github.com/go-git/go-git/v5/plumbing/format/objfile@v5.16.4 Apache License Version 2.0, January 2004 @@ -100992,7 +100992,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/format/packfile@v5.16.2 +github.com/go-git/go-git/v5/plumbing/format/packfile@v5.16.4 Apache License Version 2.0, January 2004 @@ -101201,7 +101201,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/format/pktline@v5.16.2 +github.com/go-git/go-git/v5/plumbing/format/pktline@v5.16.4 Apache License Version 2.0, January 2004 @@ -101410,7 +101410,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/hash@v5.16.2 +github.com/go-git/go-git/v5/plumbing/hash@v5.16.4 Apache License Version 2.0, January 2004 @@ -101619,7 +101619,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/object@v5.16.2 +github.com/go-git/go-git/v5/plumbing/object@v5.16.4 Apache License Version 2.0, January 2004 @@ -101828,7 +101828,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/protocol/packp@v5.16.2 +github.com/go-git/go-git/v5/plumbing/protocol/packp@v5.16.4 Apache License Version 2.0, January 2004 @@ -102037,7 +102037,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/protocol/packp/capability@v5.16.2 +github.com/go-git/go-git/v5/plumbing/protocol/packp/capability@v5.16.4 Apache License Version 2.0, January 2004 @@ -102246,7 +102246,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/protocol/packp/sideband@v5.16.2 +github.com/go-git/go-git/v5/plumbing/protocol/packp/sideband@v5.16.4 Apache License Version 2.0, January 2004 @@ -102455,7 +102455,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/revlist@v5.16.2 +github.com/go-git/go-git/v5/plumbing/revlist@v5.16.4 Apache License Version 2.0, January 2004 @@ -102664,7 +102664,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/storer@v5.16.2 +github.com/go-git/go-git/v5/plumbing/storer@v5.16.4 Apache License Version 2.0, January 2004 @@ -102873,7 +102873,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/transport@v5.16.2 +github.com/go-git/go-git/v5/plumbing/transport@v5.16.4 Apache License Version 2.0, January 2004 @@ -103082,7 +103082,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/transport/client@v5.16.2 +github.com/go-git/go-git/v5/plumbing/transport/client@v5.16.4 Apache License Version 2.0, January 2004 @@ -103291,7 +103291,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/transport/file@v5.16.2 +github.com/go-git/go-git/v5/plumbing/transport/file@v5.16.4 Apache License Version 2.0, January 2004 @@ -103500,7 +103500,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/transport/git@v5.16.2 +github.com/go-git/go-git/v5/plumbing/transport/git@v5.16.4 Apache License Version 2.0, January 2004 @@ -103709,7 +103709,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/transport/http@v5.16.2 +github.com/go-git/go-git/v5/plumbing/transport/http@v5.16.4 Apache License Version 2.0, January 2004 @@ -103918,7 +103918,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/transport/internal/common@v5.16.2 +github.com/go-git/go-git/v5/plumbing/transport/internal/common@v5.16.4 Apache License Version 2.0, January 2004 @@ -104127,7 +104127,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/transport/server@v5.16.2 +github.com/go-git/go-git/v5/plumbing/transport/server@v5.16.4 Apache License Version 2.0, January 2004 @@ -104336,7 +104336,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/plumbing/transport/ssh@v5.16.2 +github.com/go-git/go-git/v5/plumbing/transport/ssh@v5.16.4 Apache License Version 2.0, January 2004 @@ -104545,7 +104545,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/storage@v5.16.2 +github.com/go-git/go-git/v5/storage@v5.16.4 Apache License Version 2.0, January 2004 @@ -104754,7 +104754,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/storage/filesystem@v5.16.2 +github.com/go-git/go-git/v5/storage/filesystem@v5.16.4 Apache License Version 2.0, January 2004 @@ -104963,7 +104963,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/storage/filesystem/dotgit@v5.16.2 +github.com/go-git/go-git/v5/storage/filesystem/dotgit@v5.16.4 Apache License Version 2.0, January 2004 @@ -105172,7 +105172,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/storage/memory@v5.16.2 +github.com/go-git/go-git/v5/storage/memory@v5.16.4 Apache License Version 2.0, January 2004 @@ -105381,7 +105381,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/utils/binary@v5.16.2 +github.com/go-git/go-git/v5/utils/binary@v5.16.4 Apache License Version 2.0, January 2004 @@ -105590,7 +105590,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/utils/diff@v5.16.2 +github.com/go-git/go-git/v5/utils/diff@v5.16.4 Apache License Version 2.0, January 2004 @@ -105799,7 +105799,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/utils/ioutil@v5.16.2 +github.com/go-git/go-git/v5/utils/ioutil@v5.16.4 Apache License Version 2.0, January 2004 @@ -106008,7 +106008,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/utils/merkletrie@v5.16.2 +github.com/go-git/go-git/v5/utils/merkletrie@v5.16.4 Apache License Version 2.0, January 2004 @@ -106217,7 +106217,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/utils/merkletrie/filesystem@v5.16.2 +github.com/go-git/go-git/v5/utils/merkletrie/filesystem@v5.16.4 Apache License Version 2.0, January 2004 @@ -106426,7 +106426,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/utils/merkletrie/index@v5.16.2 +github.com/go-git/go-git/v5/utils/merkletrie/index@v5.16.4 Apache License Version 2.0, January 2004 @@ -106635,7 +106635,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/utils/merkletrie/internal/frame@v5.16.2 +github.com/go-git/go-git/v5/utils/merkletrie/internal/frame@v5.16.4 Apache License Version 2.0, January 2004 @@ -106844,7 +106844,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/utils/merkletrie/noder@v5.16.2 +github.com/go-git/go-git/v5/utils/merkletrie/noder@v5.16.4 Apache License Version 2.0, January 2004 @@ -107053,7 +107053,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/utils/sync@v5.16.2 +github.com/go-git/go-git/v5/utils/sync@v5.16.4 Apache License Version 2.0, January 2004 @@ -107262,7 +107262,7 @@ Apache License Apache License Version 2.0, see [LICENSE](LICENSE) ***** -github.com/go-git/go-git/v5/utils/trace@v5.16.2 +github.com/go-git/go-git/v5/utils/trace@v5.16.4 Apache License Version 2.0, January 2004 @@ -109261,7 +109261,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. `flock` is released under the BSD 3-Clause License. See the [`LICENSE`](./LICENSE) file for more details. ***** -github.com/gofrs/uuid/v5@v5.3.2 +github.com/gofrs/uuid/v5@v5.4.0 Copyright (C) 2013-2018 by Maxim Bublis @@ -140672,7 +140672,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***** -github.com/sagikazarmark/locafero@v0.7.0 +github.com/sagikazarmark/locafero@v0.11.0 Copyright (c) 2023 Márk Sági-Kazár @@ -142261,7 +142261,7 @@ Copyright (c) 2013 skratchdot Licensed under the MIT license. ***** -github.com/sourcegraph/conc@v0.3.0 +github.com/sourcegraph/conc@v0.3.1-0.20240121214520-5f936abd7ae8 MIT License @@ -142286,7 +142286,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***** -github.com/sourcegraph/conc/internal/multierror@v0.3.0 +github.com/sourcegraph/conc/panics@v0.3.1-0.20240121214520-5f936abd7ae8 MIT License @@ -142311,7 +142311,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***** -github.com/sourcegraph/conc/iter@v0.3.0 +github.com/sourcegraph/conc/pool@v0.3.1-0.20240121214520-5f936abd7ae8 MIT License @@ -142336,32 +142336,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***** -github.com/sourcegraph/conc/panics@v0.3.0 - -MIT License - -Copyright (c) 2023 Sourcegraph - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -***** -github.com/spf13/afero@v1.12.0 +github.com/spf13/afero@v1.15.0 Apache License Version 2.0, January 2004 @@ -142538,13 +142513,8 @@ Apache License incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. ------ - -Afero is released under the Apache 2.0 license. See -[LICENSE.txt](https://github.com/spf13/afero/blob/master/LICENSE.txt) - ***** -github.com/spf13/afero/internal/common@v1.12.0 +github.com/spf13/afero/internal/common@v1.15.0 Apache License Version 2.0, January 2004 @@ -142721,13 +142691,8 @@ Apache License incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. ------ - -Afero is released under the Apache 2.0 license. See -[LICENSE.txt](https://github.com/spf13/afero/blob/master/LICENSE.txt) - ***** -github.com/spf13/afero/mem@v1.12.0 +github.com/spf13/afero/mem@v1.15.0 Apache License Version 2.0, January 2004 @@ -142904,13 +142869,37 @@ Apache License incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. +***** +github.com/spf13/cast@v1.10.0 + +The MIT License (MIT) + +Copyright (c) 2014 Steve Francia + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + ----- -Afero is released under the Apache 2.0 license. See -[LICENSE.txt](https://github.com/spf13/afero/blob/master/LICENSE.txt) +The project is licensed under the [MIT License](LICENSE). ***** -github.com/spf13/cast@v1.7.1 +github.com/spf13/cast/internal@v1.10.0 The MIT License (MIT) @@ -142934,8 +142923,12 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +----- + +The project is licensed under the [MIT License](LICENSE). + ***** -github.com/spf13/cobra@v1.10.1 +github.com/spf13/cobra@v1.10.2 Apache License Version 2.0, January 2004 @@ -143117,7 +143110,7 @@ Apache License Cobra is released under the Apache 2.0 license. See [LICENSE.txt](LICENSE.txt) ***** -github.com/spf13/pflag@v1.0.9 +github.com/spf13/pflag@v1.0.10 Copyright (c) 2012 Alex Ogier. All rights reserved. Copyright (c) 2012 The Go Authors. All rights reserved. @@ -143149,7 +143142,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ***** -github.com/spf13/viper@v1.20.1 +github.com/spf13/viper@v1.21.0 The MIT License (MIT) @@ -143178,7 +143171,7 @@ SOFTWARE. The project is licensed under the [MIT License](LICENSE). ***** -github.com/spf13/viper/internal/encoding/dotenv@v1.20.1 +github.com/spf13/viper/internal/encoding/dotenv@v1.21.0 The MIT License (MIT) @@ -143207,7 +143200,7 @@ SOFTWARE. The project is licensed under the [MIT License](LICENSE). ***** -github.com/spf13/viper/internal/encoding/json@v1.20.1 +github.com/spf13/viper/internal/encoding/json@v1.21.0 The MIT License (MIT) @@ -143236,7 +143229,7 @@ SOFTWARE. The project is licensed under the [MIT License](LICENSE). ***** -github.com/spf13/viper/internal/encoding/toml@v1.20.1 +github.com/spf13/viper/internal/encoding/toml@v1.21.0 The MIT License (MIT) @@ -143265,7 +143258,7 @@ SOFTWARE. The project is licensed under the [MIT License](LICENSE). ***** -github.com/spf13/viper/internal/encoding/yaml@v1.20.1 +github.com/spf13/viper/internal/encoding/yaml@v1.21.0 The MIT License (MIT) @@ -143294,7 +143287,7 @@ SOFTWARE. The project is licensed under the [MIT License](LICENSE). ***** -github.com/spf13/viper/internal/features@v1.20.1 +github.com/spf13/viper/internal/features@v1.21.0 The MIT License (MIT) @@ -148519,7 +148512,7 @@ This software is released under the [BSD 3-clause license]. [BSD 3-clause license]: https://github.com/bugst/go-serial/blob/master/LICENSE ***** -go.opentelemetry.io/auto/sdk@v1.1.0 +go.opentelemetry.io/auto/sdk@v1.2.1 Apache License Version 2.0, January 2004 @@ -148724,7 +148717,7 @@ Apache License limitations under the License. ***** -go.opentelemetry.io/auto/sdk/internal/telemetry@v1.1.0 +go.opentelemetry.io/auto/sdk/internal/telemetry@v1.2.1 Apache License Version 2.0, January 2004 @@ -150774,7 +150767,7 @@ Apache License limitations under the License. ***** -go.opentelemetry.io/otel@v1.37.0 +go.opentelemetry.io/otel@v1.38.0 Apache License Version 2.0, January 2004 @@ -150978,8 +150971,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/attribute@v1.37.0 +go.opentelemetry.io/otel/attribute@v1.38.0 Apache License Version 2.0, January 2004 @@ -151183,8 +151206,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/attribute/internal@v1.37.0 +go.opentelemetry.io/otel/attribute/internal@v1.38.0 Apache License Version 2.0, January 2004 @@ -151388,8 +151441,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/baggage@v1.37.0 +go.opentelemetry.io/otel/baggage@v1.38.0 Apache License Version 2.0, January 2004 @@ -151593,8 +151676,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/codes@v1.37.0 +go.opentelemetry.io/otel/codes@v1.38.0 Apache License Version 2.0, January 2004 @@ -151798,6 +151911,36 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc@v1.35.0 @@ -156719,7 +156862,7 @@ Apache License limitations under the License. ***** -go.opentelemetry.io/otel/internal/baggage@v1.37.0 +go.opentelemetry.io/otel/internal/baggage@v1.38.0 Apache License Version 2.0, January 2004 @@ -156923,8 +157066,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/internal/global@v1.37.0 +go.opentelemetry.io/otel/internal/global@v1.38.0 Apache License Version 2.0, January 2004 @@ -157128,8 +157301,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/metric@v1.37.0 +go.opentelemetry.io/otel/metric@v1.38.0 Apache License Version 2.0, January 2004 @@ -157333,8 +157536,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/metric/embedded@v1.37.0 +go.opentelemetry.io/otel/metric/embedded@v1.38.0 Apache License Version 2.0, January 2004 @@ -157538,8 +157771,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/metric/noop@v1.37.0 +go.opentelemetry.io/otel/metric/noop@v1.38.0 Apache License Version 2.0, January 2004 @@ -157743,8 +158006,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/propagation@v1.37.0 +go.opentelemetry.io/otel/propagation@v1.38.0 Apache License Version 2.0, January 2004 @@ -157948,8 +158241,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/sdk@v1.37.0 +go.opentelemetry.io/otel/sdk@v1.38.0 Apache License Version 2.0, January 2004 @@ -158153,8 +158476,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/sdk/instrumentation@v1.37.0 +go.opentelemetry.io/otel/sdk/instrumentation@v1.38.0 Apache License Version 2.0, January 2004 @@ -158358,8 +158711,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/sdk/internal/env@v1.37.0 +go.opentelemetry.io/otel/sdk/internal/env@v1.38.0 Apache License Version 2.0, January 2004 @@ -158563,8 +158946,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/sdk/internal/x@v1.37.0 +go.opentelemetry.io/otel/sdk/internal/x@v1.38.0 Apache License Version 2.0, January 2004 @@ -158768,8 +159181,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/sdk/metric@v1.37.0 +go.opentelemetry.io/otel/sdk/metric@v1.38.0 Apache License Version 2.0, January 2004 @@ -158973,8 +159416,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/sdk/metric/exemplar@v1.37.0 +go.opentelemetry.io/otel/sdk/metric/exemplar@v1.38.0 Apache License Version 2.0, January 2004 @@ -159178,8 +159651,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/sdk/metric/internal@v1.37.0 +go.opentelemetry.io/otel/sdk/metric/internal@v1.38.0 Apache License Version 2.0, January 2004 @@ -159383,8 +159886,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/sdk/metric/internal/aggregate@v1.37.0 +go.opentelemetry.io/otel/sdk/metric/internal/aggregate@v1.38.0 Apache License Version 2.0, January 2004 @@ -159588,8 +160121,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/sdk/metric/internal/x@v1.37.0 +go.opentelemetry.io/otel/sdk/metric/internal/x@v1.38.0 Apache License Version 2.0, January 2004 @@ -159793,8 +160356,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/sdk/metric/metricdata@v1.37.0 +go.opentelemetry.io/otel/sdk/metric/metricdata@v1.38.0 Apache License Version 2.0, January 2004 @@ -159998,8 +160591,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/sdk/resource@v1.37.0 +go.opentelemetry.io/otel/sdk/resource@v1.38.0 Apache License Version 2.0, January 2004 @@ -160203,8 +160826,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/sdk/trace@v1.37.0 +go.opentelemetry.io/otel/sdk/trace@v1.38.0 Apache License Version 2.0, January 2004 @@ -160408,8 +161061,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/sdk/trace/tracetest@v1.37.0 +go.opentelemetry.io/otel/sdk/trace/internal/x@v1.38.0 Apache License Version 2.0, January 2004 @@ -160613,8 +161296,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/semconv/v1.17.0@v1.37.0 +go.opentelemetry.io/otel/sdk/trace/tracetest@v1.38.0 Apache License Version 2.0, January 2004 @@ -160818,8 +161531,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/semconv/v1.19.0@v1.37.0 +go.opentelemetry.io/otel/semconv/v1.17.0@v1.38.0 Apache License Version 2.0, January 2004 @@ -161023,8 +161766,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/semconv/v1.20.0@v1.37.0 +go.opentelemetry.io/otel/semconv/v1.19.0@v1.38.0 Apache License Version 2.0, January 2004 @@ -161228,8 +162001,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/semconv/v1.21.0@v1.37.0 +go.opentelemetry.io/otel/semconv/v1.20.0@v1.38.0 Apache License Version 2.0, January 2004 @@ -161433,8 +162236,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/semconv/v1.26.0@v1.37.0 +go.opentelemetry.io/otel/semconv/v1.21.0@v1.38.0 Apache License Version 2.0, January 2004 @@ -161638,8 +162471,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/semconv/v1.34.0@v1.37.0 +go.opentelemetry.io/otel/semconv/v1.26.0@v1.38.0 Apache License Version 2.0, January 2004 @@ -161843,8 +162706,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/trace@v1.37.0 +go.opentelemetry.io/otel/semconv/v1.37.0@v1.38.0 Apache License Version 2.0, January 2004 @@ -162048,8 +162941,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/trace/embedded@v1.37.0 +go.opentelemetry.io/otel/semconv/v1.37.0/otelconv@v1.38.0 Apache License Version 2.0, January 2004 @@ -162253,8 +163176,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/trace/internal/telemetry@v1.37.0 +go.opentelemetry.io/otel/trace@v1.38.0 Apache License Version 2.0, January 2004 @@ -162458,8 +163411,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/otel/trace/noop@v1.37.0 +go.opentelemetry.io/otel/trace/embedded@v1.38.0 Apache License Version 2.0, January 2004 @@ -162663,8 +163646,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/proto/otlp/collector/metrics/v1@v1.5.0 +go.opentelemetry.io/otel/trace/internal/telemetry@v1.38.0 Apache License Version 2.0, January 2004 @@ -162868,213 +163881,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. -***** -go.opentelemetry.io/proto/otlp/collector/trace/v1@v1.5.0 - -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. +-------------------------------------------------------------------------------- - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] +Copyright 2009 The Go Authors. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: - http://www.apache.org/licenses/LICENSE-2.0 + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ***** -go.opentelemetry.io/proto/otlp/common/v1@v1.5.0 +go.opentelemetry.io/otel/trace/noop@v1.38.0 Apache License Version 2.0, January 2004 @@ -163278,8 +164116,38 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ***** -go.opentelemetry.io/proto/otlp/metrics/v1@v1.5.0 +go.opentelemetry.io/proto/otlp/collector/metrics/v1@v1.5.0 Apache License Version 2.0, January 2004 @@ -163484,7 +164352,622 @@ Apache License limitations under the License. ***** -go.opentelemetry.io/proto/otlp/resource/v1@v1.5.0 +go.opentelemetry.io/proto/otlp/collector/trace/v1@v1.5.0 + +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +***** +go.opentelemetry.io/proto/otlp/common/v1@v1.5.0 + +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +***** +go.opentelemetry.io/proto/otlp/metrics/v1@v1.5.0 + +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +***** +go.opentelemetry.io/proto/otlp/resource/v1@v1.5.0 Apache License Version 2.0, January 2004 @@ -164099,7 +165582,81 @@ Apache License limitations under the License. ***** -golang.org/x/crypto/argon2@v0.41.0 +go.yaml.in/yaml/v3@v3.0.4 + +This project is covered by two different licenses: MIT and Apache. + +#### MIT License #### + +The following files were ported to Go from C files of libyaml, and thus +are still covered by their original MIT license, with the additional +copyright staring in 2011 when the project was ported over: + + apic.go emitterc.go parserc.go readerc.go scannerc.go + writerc.go yamlh.go yamlprivateh.go + +Copyright (c) 2006-2010 Kirill Simonov +Copyright (c) 2006-2011 Kirill Simonov + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +### Apache License ### + +All the remaining project files are covered by the Apache license: + +Copyright (c) 2011-2019 Canonical Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +----- + +The yaml package is licensed under the MIT and Apache License 2.0 licenses. +Please see the LICENSE file for details. + +----- + +Copyright 2011-2016 Canonical Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +***** +golang.org/x/crypto/argon2@v0.45.0 Copyright 2009 The Go Authors. @@ -164155,7 +165712,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/crypto/blake2b@v0.41.0 +golang.org/x/crypto/blake2b@v0.45.0 Copyright 2009 The Go Authors. @@ -164211,7 +165768,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/crypto/blowfish@v0.41.0 +golang.org/x/crypto/blowfish@v0.45.0 Copyright 2009 The Go Authors. @@ -164267,7 +165824,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/crypto/cast5@v0.41.0 +golang.org/x/crypto/cast5@v0.45.0 Copyright 2009 The Go Authors. @@ -164323,7 +165880,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/crypto/curve25519@v0.41.0 +golang.org/x/crypto/curve25519@v0.45.0 Copyright 2009 The Go Authors. @@ -164379,7 +165936,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/crypto/ed25519@v0.41.0 +golang.org/x/crypto/ed25519@v0.45.0 Copyright 2009 The Go Authors. @@ -164435,7 +165992,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/crypto/hkdf@v0.41.0 +golang.org/x/crypto/hkdf@v0.45.0 Copyright 2009 The Go Authors. @@ -164491,7 +166048,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/crypto/nacl/sign@v0.41.0 +golang.org/x/crypto/nacl/sign@v0.45.0 Copyright 2009 The Go Authors. @@ -164547,7 +166104,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/crypto/pbkdf2@v0.41.0 +golang.org/x/crypto/pbkdf2@v0.45.0 Copyright 2009 The Go Authors. @@ -164603,7 +166160,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/crypto/sha3@v0.41.0 +golang.org/x/crypto/sha3@v0.45.0 Copyright 2009 The Go Authors. @@ -164659,7 +166216,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/crypto/ssh@v0.41.0 +golang.org/x/crypto/ssh@v0.45.0 Copyright 2009 The Go Authors. @@ -164715,7 +166272,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/crypto/ssh/agent@v0.41.0 +golang.org/x/crypto/ssh/agent@v0.45.0 Copyright 2009 The Go Authors. @@ -164771,7 +166328,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/crypto/ssh/internal/bcrypt_pbkdf@v0.41.0 +golang.org/x/crypto/ssh/internal/bcrypt_pbkdf@v0.45.0 Copyright 2009 The Go Authors. @@ -164827,7 +166384,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/crypto/ssh/knownhosts@v0.41.0 +golang.org/x/crypto/ssh/knownhosts@v0.45.0 Copyright 2009 The Go Authors. @@ -164883,7 +166440,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/net/context@v0.43.0 +golang.org/x/net/context@v0.47.0 Copyright 2009 The Go Authors. @@ -164939,7 +166496,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/net/html@v0.43.0 +golang.org/x/net/html@v0.47.0 Copyright 2009 The Go Authors. @@ -164995,7 +166552,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/net/html/atom@v0.43.0 +golang.org/x/net/html/atom@v0.47.0 Copyright 2009 The Go Authors. @@ -165051,7 +166608,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/net/http2@v0.43.0 +golang.org/x/net/http2@v0.47.0 Copyright 2009 The Go Authors. @@ -165107,7 +166664,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/net/internal/httpcommon@v0.43.0 +golang.org/x/net/internal/httpcommon@v0.47.0 Copyright 2009 The Go Authors. @@ -165163,7 +166720,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/net/internal/socks@v0.43.0 +golang.org/x/net/internal/socks@v0.47.0 Copyright 2009 The Go Authors. @@ -165219,7 +166776,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/net/internal/timeseries@v0.43.0 +golang.org/x/net/internal/timeseries@v0.47.0 Copyright 2009 The Go Authors. @@ -165275,7 +166832,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/net/proxy@v0.43.0 +golang.org/x/net/proxy@v0.47.0 Copyright 2009 The Go Authors. @@ -165331,7 +166888,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/net/publicsuffix@v0.43.0 +golang.org/x/net/publicsuffix@v0.47.0 Copyright 2009 The Go Authors. @@ -165387,7 +166944,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/net/trace@v0.43.0 +golang.org/x/net/trace@v0.47.0 Copyright 2009 The Go Authors. @@ -165443,7 +167000,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/net/websocket@v0.43.0 +golang.org/x/net/websocket@v0.47.0 Copyright 2009 The Go Authors. @@ -165499,7 +167056,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/oauth2@v0.30.0 +golang.org/x/oauth2@v0.32.0 Copyright 2009 The Go Authors. @@ -165530,7 +167087,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ***** -golang.org/x/oauth2/internal@v0.30.0 +golang.org/x/oauth2/internal@v0.32.0 Copyright 2009 The Go Authors. @@ -165561,7 +167118,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ***** -golang.org/x/sync/errgroup@v0.17.0 +golang.org/x/sync/errgroup@v0.19.0 Copyright 2009 The Go Authors. @@ -165617,7 +167174,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/sync/semaphore@v0.17.0 +golang.org/x/sync/semaphore@v0.19.0 Copyright 2009 The Go Authors. @@ -165673,7 +167230,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/sys/execabs@v0.36.0 +golang.org/x/sys/execabs@v0.39.0 Copyright 2009 The Go Authors. @@ -165729,7 +167286,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/sys/unix@v0.36.0 +golang.org/x/sys/unix@v0.39.0 Copyright 2009 The Go Authors. @@ -165785,7 +167342,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/term@v0.35.0 +golang.org/x/term@v0.38.0 Copyright 2009 The Go Authors. @@ -165841,7 +167398,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/cases@v0.29.0 +golang.org/x/text/cases@v0.32.0 Copyright 2009 The Go Authors. @@ -165897,7 +167454,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/encoding@v0.29.0 +golang.org/x/text/encoding@v0.32.0 Copyright 2009 The Go Authors. @@ -165953,7 +167510,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/encoding/internal@v0.29.0 +golang.org/x/text/encoding/internal@v0.32.0 Copyright 2009 The Go Authors. @@ -166009,7 +167566,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/encoding/internal/identifier@v0.29.0 +golang.org/x/text/encoding/internal/identifier@v0.32.0 Copyright 2009 The Go Authors. @@ -166065,7 +167622,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/encoding/unicode@v0.29.0 +golang.org/x/text/encoding/unicode@v0.32.0 Copyright 2009 The Go Authors. @@ -166121,7 +167678,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/feature/plural@v0.29.0 +golang.org/x/text/feature/plural@v0.32.0 Copyright 2009 The Go Authors. @@ -166177,7 +167734,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/internal@v0.29.0 +golang.org/x/text/internal@v0.32.0 Copyright 2009 The Go Authors. @@ -166233,7 +167790,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/internal/catmsg@v0.29.0 +golang.org/x/text/internal/catmsg@v0.32.0 Copyright 2009 The Go Authors. @@ -166289,7 +167846,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/internal/format@v0.29.0 +golang.org/x/text/internal/format@v0.32.0 Copyright 2009 The Go Authors. @@ -166345,7 +167902,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/internal/language@v0.29.0 +golang.org/x/text/internal/language@v0.32.0 Copyright 2009 The Go Authors. @@ -166401,7 +167958,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/internal/language/compact@v0.29.0 +golang.org/x/text/internal/language/compact@v0.32.0 Copyright 2009 The Go Authors. @@ -166457,7 +168014,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/internal/number@v0.29.0 +golang.org/x/text/internal/number@v0.32.0 Copyright 2009 The Go Authors. @@ -166513,7 +168070,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/internal/stringset@v0.29.0 +golang.org/x/text/internal/stringset@v0.32.0 Copyright 2009 The Go Authors. @@ -166569,7 +168126,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/internal/tag@v0.29.0 +golang.org/x/text/internal/tag@v0.32.0 Copyright 2009 The Go Authors. @@ -166625,7 +168182,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/internal/utf8internal@v0.29.0 +golang.org/x/text/internal/utf8internal@v0.32.0 Copyright 2009 The Go Authors. @@ -166681,7 +168238,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/language@v0.29.0 +golang.org/x/text/language@v0.32.0 Copyright 2009 The Go Authors. @@ -166737,7 +168294,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/message@v0.29.0 +golang.org/x/text/message@v0.32.0 Copyright 2009 The Go Authors. @@ -166793,7 +168350,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/message/catalog@v0.29.0 +golang.org/x/text/message/catalog@v0.32.0 Copyright 2009 The Go Authors. @@ -166849,7 +168406,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/runes@v0.29.0 +golang.org/x/text/runes@v0.32.0 Copyright 2009 The Go Authors. @@ -166905,7 +168462,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -golang.org/x/text/width@v0.29.0 +golang.org/x/text/width@v0.32.0 Copyright 2009 The Go Authors. @@ -167017,7 +168574,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/genproto/googleapis/api/httpbody@v0.0.0-20250707201910-8d1bb00bc6a7 +google.golang.org/genproto/googleapis/api/httpbody@v0.0.0-20251022142026-3a174f9686a8 Apache License Version 2.0, January 2004 @@ -167222,7 +168779,7 @@ Apache License limitations under the License. ***** -google.golang.org/genproto/googleapis/rpc/errdetails@v0.0.0-20250707201910-8d1bb00bc6a7 +google.golang.org/genproto/googleapis/rpc/errdetails@v0.0.0-20251022142026-3a174f9686a8 Apache License Version 2.0, January 2004 @@ -167427,7 +168984,7 @@ Apache License limitations under the License. ***** -google.golang.org/genproto/googleapis/rpc/status@v0.0.0-20250707201910-8d1bb00bc6a7 +google.golang.org/genproto/googleapis/rpc/status@v0.0.0-20251022142026-3a174f9686a8 Apache License Version 2.0, January 2004 @@ -167632,7 +169189,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc@v1.75.1 +google.golang.org/grpc@v1.77.0 Apache License Version 2.0, January 2004 @@ -167857,7 +169414,7 @@ See the License for the specific language governing permissions and limitations under the License. ***** -google.golang.org/grpc/attributes@v1.75.1 +google.golang.org/grpc/attributes@v1.77.0 Apache License Version 2.0, January 2004 @@ -168062,7 +169619,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/backoff@v1.75.1 +google.golang.org/grpc/backoff@v1.77.0 Apache License Version 2.0, January 2004 @@ -168267,7 +169824,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/balancer@v1.75.1 +google.golang.org/grpc/balancer@v1.77.0 Apache License Version 2.0, January 2004 @@ -168472,7 +170029,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/balancer/base@v1.75.1 +google.golang.org/grpc/balancer/base@v1.77.0 Apache License Version 2.0, January 2004 @@ -168677,7 +170234,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/balancer/endpointsharding@v1.75.1 +google.golang.org/grpc/balancer/endpointsharding@v1.77.0 Apache License Version 2.0, January 2004 @@ -168882,7 +170439,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/balancer/grpclb/state@v1.75.1 +google.golang.org/grpc/balancer/grpclb/state@v1.77.0 Apache License Version 2.0, January 2004 @@ -169087,7 +170644,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/balancer/pickfirst@v1.75.1 +google.golang.org/grpc/balancer/pickfirst@v1.77.0 Apache License Version 2.0, January 2004 @@ -169292,7 +170849,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/balancer/pickfirst/internal@v1.75.1 +google.golang.org/grpc/balancer/pickfirst/internal@v1.77.0 Apache License Version 2.0, January 2004 @@ -169497,7 +171054,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/balancer/pickfirst/pickfirstleaf@v1.75.1 +google.golang.org/grpc/balancer/roundrobin@v1.77.0 Apache License Version 2.0, January 2004 @@ -169702,7 +171259,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/balancer/roundrobin@v1.75.1 +google.golang.org/grpc/binarylog/grpc_binarylog_v1@v1.77.0 Apache License Version 2.0, January 2004 @@ -169907,7 +171464,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/binarylog/grpc_binarylog_v1@v1.75.1 +google.golang.org/grpc/channelz@v1.77.0 Apache License Version 2.0, January 2004 @@ -170112,7 +171669,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/channelz@v1.75.1 +google.golang.org/grpc/codes@v1.77.0 Apache License Version 2.0, January 2004 @@ -170317,7 +171874,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/codes@v1.75.1 +google.golang.org/grpc/connectivity@v1.77.0 Apache License Version 2.0, January 2004 @@ -170522,7 +172079,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/connectivity@v1.75.1 +google.golang.org/grpc/credentials@v1.77.0 Apache License Version 2.0, January 2004 @@ -170727,7 +172284,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/credentials@v1.75.1 +google.golang.org/grpc/credentials/insecure@v1.77.0 Apache License Version 2.0, January 2004 @@ -170932,7 +172489,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/credentials/insecure@v1.75.1 +google.golang.org/grpc/encoding@v1.77.0 Apache License Version 2.0, January 2004 @@ -171137,7 +172694,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/encoding@v1.75.1 +google.golang.org/grpc/encoding/gzip@v1.77.0 Apache License Version 2.0, January 2004 @@ -171342,7 +172899,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/encoding/gzip@v1.75.1 +google.golang.org/grpc/encoding/internal@v1.77.0 Apache License Version 2.0, January 2004 @@ -171547,7 +173104,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/encoding/proto@v1.75.1 +google.golang.org/grpc/encoding/proto@v1.77.0 Apache License Version 2.0, January 2004 @@ -171752,7 +173309,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/experimental/stats@v1.75.1 +google.golang.org/grpc/experimental/stats@v1.77.0 Apache License Version 2.0, January 2004 @@ -171957,7 +173514,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/grpclog@v1.75.1 +google.golang.org/grpc/grpclog@v1.77.0 Apache License Version 2.0, January 2004 @@ -172162,7 +173719,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/grpclog/internal@v1.75.1 +google.golang.org/grpc/grpclog/internal@v1.77.0 Apache License Version 2.0, January 2004 @@ -172367,7 +173924,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/health@v1.75.1 +google.golang.org/grpc/health@v1.77.0 Apache License Version 2.0, January 2004 @@ -172572,7 +174129,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/health/grpc_health_v1@v1.75.1 +google.golang.org/grpc/health/grpc_health_v1@v1.77.0 Apache License Version 2.0, January 2004 @@ -172777,7 +174334,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal@v1.75.1 +google.golang.org/grpc/internal@v1.77.0 Apache License Version 2.0, January 2004 @@ -172982,7 +174539,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/backoff@v1.75.1 +google.golang.org/grpc/internal/backoff@v1.77.0 Apache License Version 2.0, January 2004 @@ -173187,7 +174744,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/balancer/gracefulswitch@v1.75.1 +google.golang.org/grpc/internal/balancer/gracefulswitch@v1.77.0 Apache License Version 2.0, January 2004 @@ -173392,7 +174949,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/balancerload@v1.75.1 +google.golang.org/grpc/internal/balancerload@v1.77.0 Apache License Version 2.0, January 2004 @@ -173597,7 +175154,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/binarylog@v1.75.1 +google.golang.org/grpc/internal/binarylog@v1.77.0 Apache License Version 2.0, January 2004 @@ -173802,7 +175359,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/buffer@v1.75.1 +google.golang.org/grpc/internal/buffer@v1.77.0 Apache License Version 2.0, January 2004 @@ -174007,7 +175564,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/channelz@v1.75.1 +google.golang.org/grpc/internal/channelz@v1.77.0 Apache License Version 2.0, January 2004 @@ -174212,7 +175769,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/credentials@v1.75.1 +google.golang.org/grpc/internal/credentials@v1.77.0 Apache License Version 2.0, January 2004 @@ -174417,7 +175974,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/envconfig@v1.75.1 +google.golang.org/grpc/internal/envconfig@v1.77.0 Apache License Version 2.0, January 2004 @@ -174622,7 +176179,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/grpclog@v1.75.1 +google.golang.org/grpc/internal/grpclog@v1.77.0 Apache License Version 2.0, January 2004 @@ -174827,7 +176384,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/grpcsync@v1.75.1 +google.golang.org/grpc/internal/grpcsync@v1.77.0 Apache License Version 2.0, January 2004 @@ -175032,7 +176589,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/grpcutil@v1.75.1 +google.golang.org/grpc/internal/grpcutil@v1.77.0 Apache License Version 2.0, January 2004 @@ -175237,7 +176794,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/idle@v1.75.1 +google.golang.org/grpc/internal/idle@v1.77.0 Apache License Version 2.0, January 2004 @@ -175442,7 +176999,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/metadata@v1.75.1 +google.golang.org/grpc/internal/metadata@v1.77.0 Apache License Version 2.0, January 2004 @@ -175647,7 +177204,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/pretty@v1.75.1 +google.golang.org/grpc/internal/pretty@v1.77.0 Apache License Version 2.0, January 2004 @@ -175852,7 +177409,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/proxyattributes@v1.75.1 +google.golang.org/grpc/internal/proxyattributes@v1.77.0 Apache License Version 2.0, January 2004 @@ -176057,7 +177614,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/resolver@v1.75.1 +google.golang.org/grpc/internal/resolver@v1.77.0 Apache License Version 2.0, January 2004 @@ -176262,7 +177819,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/resolver/delegatingresolver@v1.75.1 +google.golang.org/grpc/internal/resolver/delegatingresolver@v1.77.0 Apache License Version 2.0, January 2004 @@ -176467,7 +178024,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/resolver/dns@v1.75.1 +google.golang.org/grpc/internal/resolver/dns@v1.77.0 Apache License Version 2.0, January 2004 @@ -176672,7 +178229,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/resolver/dns/internal@v1.75.1 +google.golang.org/grpc/internal/resolver/dns/internal@v1.77.0 Apache License Version 2.0, January 2004 @@ -176877,7 +178434,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/resolver/passthrough@v1.75.1 +google.golang.org/grpc/internal/resolver/passthrough@v1.77.0 Apache License Version 2.0, January 2004 @@ -177082,7 +178639,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/resolver/unix@v1.75.1 +google.golang.org/grpc/internal/resolver/unix@v1.77.0 Apache License Version 2.0, January 2004 @@ -177287,7 +178844,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/serviceconfig@v1.75.1 +google.golang.org/grpc/internal/serviceconfig@v1.77.0 Apache License Version 2.0, January 2004 @@ -177492,7 +179049,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/stats@v1.75.1 +google.golang.org/grpc/internal/stats@v1.77.0 Apache License Version 2.0, January 2004 @@ -177697,7 +179254,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/status@v1.75.1 +google.golang.org/grpc/internal/status@v1.77.0 Apache License Version 2.0, January 2004 @@ -177902,7 +179459,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/syscall@v1.75.1 +google.golang.org/grpc/internal/syscall@v1.77.0 Apache License Version 2.0, January 2004 @@ -178107,7 +179664,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/transport@v1.75.1 +google.golang.org/grpc/internal/transport@v1.77.0 Apache License Version 2.0, January 2004 @@ -178312,7 +179869,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/internal/transport/networktype@v1.75.1 +google.golang.org/grpc/internal/transport/networktype@v1.77.0 Apache License Version 2.0, January 2004 @@ -178517,7 +180074,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/keepalive@v1.75.1 +google.golang.org/grpc/keepalive@v1.77.0 Apache License Version 2.0, January 2004 @@ -178722,7 +180279,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/mem@v1.75.1 +google.golang.org/grpc/mem@v1.77.0 Apache License Version 2.0, January 2004 @@ -178927,7 +180484,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/metadata@v1.75.1 +google.golang.org/grpc/metadata@v1.77.0 Apache License Version 2.0, January 2004 @@ -179132,7 +180689,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/peer@v1.75.1 +google.golang.org/grpc/peer@v1.77.0 Apache License Version 2.0, January 2004 @@ -179337,7 +180894,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/resolver@v1.75.1 +google.golang.org/grpc/resolver@v1.77.0 Apache License Version 2.0, January 2004 @@ -179542,7 +181099,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/resolver/dns@v1.75.1 +google.golang.org/grpc/resolver/dns@v1.77.0 Apache License Version 2.0, January 2004 @@ -179747,7 +181304,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/serviceconfig@v1.75.1 +google.golang.org/grpc/serviceconfig@v1.77.0 Apache License Version 2.0, January 2004 @@ -179952,7 +181509,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/stats@v1.75.1 +google.golang.org/grpc/stats@v1.77.0 Apache License Version 2.0, January 2004 @@ -180157,7 +181714,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/status@v1.75.1 +google.golang.org/grpc/status@v1.77.0 Apache License Version 2.0, January 2004 @@ -180362,7 +181919,7 @@ Apache License limitations under the License. ***** -google.golang.org/grpc/tap@v1.75.1 +google.golang.org/grpc/tap@v1.77.0 Apache License Version 2.0, January 2004 @@ -180567,7 +182124,7 @@ Apache License limitations under the License. ***** -google.golang.org/protobuf/encoding/protodelim@v1.36.9 +google.golang.org/protobuf/encoding/protodelim@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -180623,7 +182180,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/encoding/protojson@v1.36.9 +google.golang.org/protobuf/encoding/protojson@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -180679,7 +182236,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/encoding/prototext@v1.36.9 +google.golang.org/protobuf/encoding/prototext@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -180735,7 +182292,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/encoding/protowire@v1.36.9 +google.golang.org/protobuf/encoding/protowire@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -180791,7 +182348,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/descfmt@v1.36.9 +google.golang.org/protobuf/internal/descfmt@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -180847,7 +182404,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/descopts@v1.36.9 +google.golang.org/protobuf/internal/descopts@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -180903,7 +182460,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/detrand@v1.36.9 +google.golang.org/protobuf/internal/detrand@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -180959,7 +182516,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/editiondefaults@v1.36.9 +google.golang.org/protobuf/internal/editiondefaults@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181015,7 +182572,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/editionssupport@v1.36.9 +google.golang.org/protobuf/internal/editionssupport@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181071,7 +182628,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/encoding/defval@v1.36.9 +google.golang.org/protobuf/internal/encoding/defval@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181127,7 +182684,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/encoding/json@v1.36.9 +google.golang.org/protobuf/internal/encoding/json@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181183,7 +182740,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/encoding/messageset@v1.36.9 +google.golang.org/protobuf/internal/encoding/messageset@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181239,7 +182796,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/encoding/tag@v1.36.9 +google.golang.org/protobuf/internal/encoding/tag@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181295,7 +182852,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/encoding/text@v1.36.9 +google.golang.org/protobuf/internal/encoding/text@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181351,7 +182908,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/errors@v1.36.9 +google.golang.org/protobuf/internal/errors@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181407,7 +182964,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/filedesc@v1.36.9 +google.golang.org/protobuf/internal/filedesc@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181463,7 +183020,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/filetype@v1.36.9 +google.golang.org/protobuf/internal/filetype@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181519,7 +183076,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/flags@v1.36.9 +google.golang.org/protobuf/internal/flags@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181575,7 +183132,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/genid@v1.36.9 +google.golang.org/protobuf/internal/genid@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181631,7 +183188,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/impl@v1.36.9 +google.golang.org/protobuf/internal/impl@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181687,7 +183244,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/order@v1.36.9 +google.golang.org/protobuf/internal/order@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181743,7 +183300,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/pragma@v1.36.9 +google.golang.org/protobuf/internal/pragma@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181799,7 +183356,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/protolazy@v1.36.9 +google.golang.org/protobuf/internal/protolazy@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181855,7 +183412,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/set@v1.36.9 +google.golang.org/protobuf/internal/set@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181911,7 +183468,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/strs@v1.36.9 +google.golang.org/protobuf/internal/strs@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -181967,7 +183524,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/internal/version@v1.36.9 +google.golang.org/protobuf/internal/version@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -182023,7 +183580,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/proto@v1.36.9 +google.golang.org/protobuf/proto@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -182079,7 +183636,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/protoadapt@v1.36.9 +google.golang.org/protobuf/protoadapt@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -182135,7 +183692,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/reflect/protodesc@v1.36.9 +google.golang.org/protobuf/reflect/protodesc@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -182191,7 +183748,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/reflect/protoreflect@v1.36.9 +google.golang.org/protobuf/reflect/protoreflect@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -182247,7 +183804,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/reflect/protoregistry@v1.36.9 +google.golang.org/protobuf/reflect/protoregistry@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -182303,7 +183860,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/runtime/protoiface@v1.36.9 +google.golang.org/protobuf/runtime/protoiface@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -182359,7 +183916,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/runtime/protoimpl@v1.36.9 +google.golang.org/protobuf/runtime/protoimpl@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -182415,7 +183972,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/types/descriptorpb@v1.36.9 +google.golang.org/protobuf/types/descriptorpb@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -182471,7 +184028,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/types/gofeaturespb@v1.36.9 +google.golang.org/protobuf/types/gofeaturespb@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -182527,7 +184084,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/types/known/anypb@v1.36.9 +google.golang.org/protobuf/types/known/anypb@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -182583,7 +184140,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/types/known/durationpb@v1.36.9 +google.golang.org/protobuf/types/known/durationpb@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -182639,7 +184196,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/types/known/emptypb@v1.36.9 +google.golang.org/protobuf/types/known/emptypb@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -182695,7 +184252,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/types/known/fieldmaskpb@v1.36.9 +google.golang.org/protobuf/types/known/fieldmaskpb@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -182751,7 +184308,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/types/known/structpb@v1.36.9 +google.golang.org/protobuf/types/known/structpb@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -182807,7 +184364,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/types/known/timestamppb@v1.36.9 +google.golang.org/protobuf/types/known/timestamppb@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. @@ -182863,7 +184420,7 @@ rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. ***** -google.golang.org/protobuf/types/known/wrapperspb@v1.36.9 +google.golang.org/protobuf/types/known/wrapperspb@v1.36.10 Copyright (c) 2018 The Go Authors. All rights reserved. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/commands.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/commands.dep.yml index d03ad18fb..390ac4d36 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/commands.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/commands.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/commands -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/commands license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/commands/cmderrors.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/commands/cmderrors.dep.yml index 95a33bd8e..70f6eee71 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/commands/cmderrors.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/commands/cmderrors.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/commands/cmderrors -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/commands/cmderrors license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/commands/internal/instances.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/commands/internal/instances.dep.yml index 286276832..643eda295 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/commands/internal/instances.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/commands/internal/instances.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/commands/internal/instances -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/commands/internal/instances license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/algorithms.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/algorithms.dep.yml index 5f59c09f6..29b43899b 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/algorithms.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/algorithms.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/algorithms -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/algorithms license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder.dep.yml index e0c3dab7b..434527aa2 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/builder -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/builder license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/cpp.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/cpp.dep.yml index 162c4a1a6..1d9780228 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/cpp.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/cpp.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/builder/cpp -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/builder/cpp license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/compilation.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/compilation.dep.yml index 61f44201e..e2eb0ddbc 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/compilation.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/compilation.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/builder/internal/compilation -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/builder/internal/compilation license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/detector.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/detector.dep.yml index dac9821b8..64cb1ac6c 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/detector.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/detector.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/builder/internal/detector -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/builder/internal/detector license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/diagnostics.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/diagnostics.dep.yml index 840df693e..fa259c06a 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/diagnostics.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/diagnostics.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/builder/internal/diagnostics -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/builder/internal/diagnostics license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/preprocessor.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/preprocessor.dep.yml index 912d751f7..4758cc084 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/preprocessor.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/preprocessor.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/builder/internal/preprocessor -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/builder/internal/preprocessor license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/preprocessor/internal/ctags.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/preprocessor/internal/ctags.dep.yml index a1818a4f2..170845e22 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/preprocessor/internal/ctags.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/preprocessor/internal/ctags.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/builder/internal/preprocessor/internal/ctags -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/builder/internal/preprocessor/internal/ctags license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/progress.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/progress.dep.yml index 02e09dff5..93e9ea591 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/progress.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/progress.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/builder/internal/progress -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/builder/internal/progress license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/runner.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/runner.dep.yml index 04e32a870..471f6a82f 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/runner.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/runner.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/builder/internal/runner -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/builder/internal/runner license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/utils.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/utils.dep.yml index 55af3308a..bc95ce02a 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/utils.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/internal/utils.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/builder/internal/utils -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/builder/internal/utils license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/logger.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/logger.dep.yml index 48ecb7e21..e803a1a46 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/logger.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/builder/logger.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/builder/logger -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/builder/logger license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/cores.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/cores.dep.yml index 0db317314..50b7360e3 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/cores.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/cores.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/cores -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/cores license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/cores/packageindex.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/cores/packageindex.dep.yml index a91f16ebb..be81c9078 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/cores/packageindex.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/cores/packageindex.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/cores/packageindex -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/cores/packageindex license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager.dep.yml index 894d5186e..bf0d31937 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/discovery/discoverymanager.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/discovery/discoverymanager.dep.yml index 78f99b1fe..b2bbf2331 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/discovery/discoverymanager.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/discovery/discoverymanager.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/discovery/discoverymanager -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/discovery/discoverymanager license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/globals.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/globals.dep.yml index 4e1cfe845..95ad634ef 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/globals.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/globals.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/globals -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/globals license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/httpclient.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/httpclient.dep.yml index 8da55f5e2..12baaf6be 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/httpclient.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/httpclient.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/httpclient -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/httpclient license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/libraries.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/libraries.dep.yml index 14375aa06..d9b3a1e57 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/libraries.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/libraries.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/libraries -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/libraries license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/libraries/librariesindex.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/libraries/librariesindex.dep.yml index 95493aaa1..230f96d22 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/libraries/librariesindex.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/libraries/librariesindex.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/libraries/librariesindex -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/libraries/librariesindex license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/libraries/librariesmanager.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/libraries/librariesmanager.dep.yml index e04c32cae..75adaaf5f 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/libraries/librariesmanager.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/libraries/librariesmanager.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/libraries/librariesmanager -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/libraries/librariesmanager license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/libraries/librariesresolver.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/libraries/librariesresolver.dep.yml index 259863763..917395ef1 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/libraries/librariesresolver.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/libraries/librariesresolver.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/libraries/librariesresolver -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/libraries/librariesresolver license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/monitor.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/monitor.dep.yml index 360ef0339..043145e32 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/monitor.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/monitor.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/monitor -version: v1.3.1 +version: v1.4.0 type: go summary: Package monitor provides a client for Pluggable Monitors. homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/monitor license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/resources.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/resources.dep.yml index 828d2968d..b08c6eab4 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/resources.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/resources.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/resources -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/resources license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/security.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/security.dep.yml index 8367f7007..3913cdcb1 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/security.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/security.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/security -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/security license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/sketch.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/sketch.dep.yml index 7833d1525..59bac28d3 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/sketch.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/sketch.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/sketch -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/sketch license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/utils.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/utils.dep.yml index 0238d3935..ca59a59f4 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/utils.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/arduino/utils.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/arduino/utils -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/arduino/utils license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/buildcache.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/buildcache.dep.yml index 776311114..b1ee0c109 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/buildcache.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/buildcache.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/buildcache -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/buildcache license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/cli/configuration.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/cli/configuration.dep.yml index 3d4ae3f5d..7c4dbadc2 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/cli/configuration.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/cli/configuration.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/cli/configuration -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/cli/configuration license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/cli/feedback.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/cli/feedback.dep.yml index 15eadda57..4cb10bca3 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/cli/feedback.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/cli/feedback.dep.yml @@ -1,13 +1,13 @@ --- name: github.com/arduino/arduino-cli/internal/cli/feedback -version: v1.3.1 +version: v1.4.0 type: go summary: Package feedback provides an uniform API that can be used to print feedback to the users in different formats. homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/cli/feedback license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -683,7 +683,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -699,7 +699,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/go-configmap.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/go-configmap.dep.yml index a3f9d7376..ede5b2a81 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/go-configmap.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/go-configmap.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/go-configmap -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/go-configmap license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/i18n.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/i18n.dep.yml index 67b6b3c85..f9f299d6b 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/i18n.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/i18n.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/i18n -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/i18n license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/inventory.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/inventory.dep.yml index e0a56e7fc..5700d20aa 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/inventory.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/inventory.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/inventory -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/inventory license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/locales.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/locales.dep.yml index bdf8ed064..57ae84956 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/locales.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/locales.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/locales -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/locales license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/version.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/version.dep.yml index c0d72f971..a96cdf06a 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/version.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/internal/version.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/internal/version -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/internal/version license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/pkg/fqbn.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/pkg/fqbn.dep.yml index f0a84110c..9c16d6520 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/pkg/fqbn.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/pkg/fqbn.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/arduino/arduino-cli/pkg/fqbn -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/pkg/fqbn license: other licenses: -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -682,7 +682,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -698,7 +698,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1.dep.yml b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1.dep.yml index 759ad6cad..0dbc0b5b5 100644 --- a/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1.dep.yml @@ -1,8 +1,8 @@ --- name: github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1 -version: v1.3.1 +version: v1.4.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1 license: other licenses: @@ -210,7 +210,7 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: arduino-cli@v1.3.1/LICENSE.txt +- sources: arduino-cli@v1.4.0/LICENSE.txt text: |2 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -886,7 +886,7 @@ licenses: the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . -- sources: arduino-cli@v1.3.1/license_header.tpl +- sources: arduino-cli@v1.4.0/license_header.tpl text: | This file is part of arduino-cli. @@ -902,7 +902,7 @@ licenses: modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to license@arduino.cc. -- sources: arduino-cli@v1.3.1/README.md +- sources: arduino-cli@v1.4.0/README.md text: |- Arduino CLI is licensed under the GPL-3.0 license. diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5.dep.yml index 7e6c5e6d8..d0daa7d16 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5.dep.yml @@ -1,6 +1,6 @@ --- name: github.com/go-git/go-git/v5 -version: v5.16.2 +version: v5.16.4 type: go summary: A highly extensible git implementation in pure Go. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5 diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/config.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/config.dep.yml index 5a8f4bf25..f3f9c63e9 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/config.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/config.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/config -version: v5.16.2 +version: v5.16.4 type: go summary: Package config contains the abstraction of multiple config files homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/config license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/internal/path_util.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/internal/path_util.dep.yml index 04259efcc..fb8b3cdec 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/internal/path_util.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/internal/path_util.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/internal/path_util -version: v5.16.2 +version: v5.16.4 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/internal/path_util license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/internal/revision.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/internal/revision.dep.yml index 475a4d6b5..071a08642 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/internal/revision.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/internal/revision.dep.yml @@ -1,13 +1,13 @@ --- name: github.com/go-git/go-git/v5/internal/revision -version: v5.16.2 +version: v5.16.4 type: go summary: 'Package revision extracts git revision from string More information about revision : https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html' homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/internal/revision license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -210,6 +210,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/internal/url.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/internal/url.dep.yml index 323954c3e..87cd863a7 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/internal/url.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/internal/url.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/internal/url -version: v5.16.2 +version: v5.16.4 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/internal/url license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing.dep.yml index 05e34679d..ff865e821 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing -version: v5.16.2 +version: v5.16.4 type: go summary: package plumbing implement the core interfaces and structs used by go-git homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/cache.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/cache.dep.yml index 7ad8bb0f8..8f6ab2a97 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/cache.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/cache.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/cache -version: v5.16.2 +version: v5.16.4 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/cache license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/color.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/color.dep.yml index 62f0c00a4..fba99b074 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/color.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/color.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/color -version: v5.16.2 +version: v5.16.4 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/color license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/filemode.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/filemode.dep.yml index 094163eae..edf73cd4a 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/filemode.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/filemode.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/filemode -version: v5.16.2 +version: v5.16.4 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/filemode license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/config.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/config.dep.yml index 4cdf47de4..71df86f75 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/config.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/config.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/format/config -version: v5.16.2 +version: v5.16.4 type: go summary: Package config implements encoding and decoding of git config files. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/format/config license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/diff.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/diff.dep.yml index 07fa73d4e..01212fd5c 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/diff.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/diff.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/format/diff -version: v5.16.2 +version: v5.16.4 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/format/diff license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/gitignore.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/gitignore.dep.yml index e57027bbe..3456c0f2d 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/gitignore.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/gitignore.dep.yml @@ -1,6 +1,6 @@ --- name: github.com/go-git/go-git/v5/plumbing/format/gitignore -version: v5.16.2 +version: v5.16.4 type: go summary: Package gitignore implements matching file system paths to gitignore patterns that can be automatically read from a git repository tree in the order of definition @@ -8,7 +8,7 @@ summary: Package gitignore implements matching file system paths to gitignore pa homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/format/gitignore license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -211,6 +211,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/idxfile.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/idxfile.dep.yml index 500de1c14..93cfb1338 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/idxfile.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/idxfile.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/format/idxfile -version: v5.16.2 +version: v5.16.4 type: go summary: Package idxfile implements encoding and decoding of packfile idx files. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/format/idxfile license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/index.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/index.dep.yml index 0d1bb8c6d..20b5d507f 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/index.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/index.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/format/index -version: v5.16.2 +version: v5.16.4 type: go summary: Package index implements encoding and decoding of index format files. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/format/index license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/objfile.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/objfile.dep.yml index 4cf92a674..9334f1490 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/objfile.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/objfile.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/format/objfile -version: v5.16.2 +version: v5.16.4 type: go summary: Package objfile implements encoding and decoding of object files. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/format/objfile license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/packfile.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/packfile.dep.yml index 7b9096735..2c422d047 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/packfile.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/packfile.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/format/packfile -version: v5.16.2 +version: v5.16.4 type: go summary: Package packfile implements encoding and decoding of packfile format. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/format/packfile license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/pktline.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/pktline.dep.yml index f4eddadf5..67cb19b8c 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/pktline.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/format/pktline.dep.yml @@ -1,13 +1,13 @@ --- name: github.com/go-git/go-git/v5/plumbing/format/pktline -version: v5.16.2 +version: v5.16.4 type: go summary: Package pktline implements reading payloads form pkt-lines and encoding pkt-lines from payloads. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/format/pktline license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -210,6 +210,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/hash.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/hash.dep.yml index c8156907d..5ad6a2ecc 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/hash.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/hash.dep.yml @@ -1,13 +1,13 @@ --- name: github.com/go-git/go-git/v5/plumbing/hash -version: v5.16.2 +version: v5.16.4 type: go summary: package hash provides a way for managing the underlying hash implementations used across go-git. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/hash license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -210,6 +210,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/object.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/object.dep.yml index b77daa8e5..87889f653 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/object.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/object.dep.yml @@ -1,13 +1,13 @@ --- name: github.com/go-git/go-git/v5/plumbing/object -version: v5.16.2 +version: v5.16.4 type: go summary: Package object contains implementations of all Git objects and utility functions to work with them. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/object license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -210,6 +210,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/protocol/packp.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/protocol/packp.dep.yml index be87fed57..0df7212eb 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/protocol/packp.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/protocol/packp.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/protocol/packp -version: v5.16.2 +version: v5.16.4 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/protocol/packp license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/protocol/packp/capability.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/protocol/packp/capability.dep.yml index 17b48754d..11c718983 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/protocol/packp/capability.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/protocol/packp/capability.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/protocol/packp/capability -version: v5.16.2 +version: v5.16.4 type: go summary: Package capability defines the server and client capabilities. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/protocol/packp/capability license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/protocol/packp/sideband.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/protocol/packp/sideband.dep.yml index 029d05e03..8f23a026d 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/protocol/packp/sideband.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/protocol/packp/sideband.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/protocol/packp/sideband -version: v5.16.2 +version: v5.16.4 type: go summary: Package sideband implements a sideband mutiplex/demultiplexer homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/protocol/packp/sideband license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/revlist.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/revlist.dep.yml index 17e3d372a..c27252c1b 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/revlist.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/revlist.dep.yml @@ -1,13 +1,13 @@ --- name: github.com/go-git/go-git/v5/plumbing/revlist -version: v5.16.2 +version: v5.16.4 type: go summary: Package revlist provides support to access the ancestors of commits, in a similar way as the git-rev-list command. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/revlist license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -210,6 +210,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/storer.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/storer.dep.yml index 3d283a5ff..e78e0136f 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/storer.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/storer.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/storer -version: v5.16.2 +version: v5.16.4 type: go summary: Package storer defines the interfaces to store objects, references, etc. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/storer license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport.dep.yml index 239369e0c..012477d3f 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/transport -version: v5.16.2 +version: v5.16.4 type: go summary: Package transport includes the implementation for different transport protocols. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/transport license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/client.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/client.dep.yml index acb280e5d..394bd4862 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/client.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/client.dep.yml @@ -1,13 +1,13 @@ --- name: github.com/go-git/go-git/v5/plumbing/transport/client -version: v5.16.2 +version: v5.16.4 type: go summary: Package client contains helper function to deal with the different client protocols. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/transport/client license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -210,6 +210,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/file.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/file.dep.yml index 1698e2e23..7efcd4470 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/file.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/file.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/transport/file -version: v5.16.2 +version: v5.16.4 type: go summary: Package file implements the file transport protocol. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/transport/file license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/git.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/git.dep.yml index b1e39a41b..411eebe2d 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/git.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/git.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/transport/git -version: v5.16.2 +version: v5.16.4 type: go summary: Package git implements the git transport protocol. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/transport/git license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/http.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/http.dep.yml index 9a7202f6f..77668945a 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/http.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/http.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/transport/http -version: v5.16.2 +version: v5.16.4 type: go summary: Package http implements the HTTP transport protocol. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/transport/http license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/internal/common.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/internal/common.dep.yml index 9fc6fa01d..e51dd7c49 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/internal/common.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/internal/common.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/transport/internal/common -version: v5.16.2 +version: v5.16.4 type: go summary: Package common implements the git pack protocol with a pluggable transport. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/transport/internal/common license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/server.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/server.dep.yml index e95cfcce7..2e58dd23f 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/server.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/server.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/transport/server -version: v5.16.2 +version: v5.16.4 type: go summary: Package server implements the git server protocol. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/transport/server license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/ssh.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/ssh.dep.yml index b0dc35114..d5bdb0f48 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/ssh.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/plumbing/transport/ssh.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/plumbing/transport/ssh -version: v5.16.2 +version: v5.16.4 type: go summary: Package ssh implements the SSH transport protocol. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/plumbing/transport/ssh license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/storage.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/storage.dep.yml index f27b218a2..8505dfd2b 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/storage.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/storage.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/storage -version: v5.16.2 +version: v5.16.4 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/storage license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/storage/filesystem.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/storage/filesystem.dep.yml index e65ac0cb7..c6228aeac 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/storage/filesystem.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/storage/filesystem.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/storage/filesystem -version: v5.16.2 +version: v5.16.4 type: go summary: Package filesystem is a storage backend base on filesystems homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/storage/filesystem license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/storage/filesystem/dotgit.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/storage/filesystem/dotgit.dep.yml index 99687f064..cdcab675b 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/storage/filesystem/dotgit.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/storage/filesystem/dotgit.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/storage/filesystem/dotgit -version: v5.16.2 +version: v5.16.4 type: go summary: https://github.com/git/git/blob/master/Documentation/gitrepository-layout.txt homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/storage/filesystem/dotgit license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/storage/memory.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/storage/memory.dep.yml index 50a0f26c6..4512d2538 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/storage/memory.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/storage/memory.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/storage/memory -version: v5.16.2 +version: v5.16.4 type: go summary: Package memory is a storage backend base on memory homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/storage/memory license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/binary.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/binary.dep.yml index 81634e893..504beb13d 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/binary.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/binary.dep.yml @@ -1,13 +1,13 @@ --- name: github.com/go-git/go-git/v5/utils/binary -version: v5.16.2 +version: v5.16.4 type: go summary: Package binary implements syntax-sugar functions on top of the standard library binary package homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/utils/binary license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -210,6 +210,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/diff.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/diff.dep.yml index 51edddeb8..ff3913220 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/diff.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/diff.dep.yml @@ -1,13 +1,13 @@ --- name: github.com/go-git/go-git/v5/utils/diff -version: v5.16.2 +version: v5.16.4 type: go summary: Package diff implements line oriented diffs, similar to the ancient Unix diff command. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/utils/diff license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -210,6 +210,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/ioutil.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/ioutil.dep.yml index e6c4f389e..144b369df 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/ioutil.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/ioutil.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/utils/ioutil -version: v5.16.2 +version: v5.16.4 type: go summary: Package ioutil implements some I/O utility functions. homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/utils/ioutil license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie.dep.yml index 08e8b456d..f9764b29d 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie.dep.yml @@ -1,13 +1,13 @@ --- name: github.com/go-git/go-git/v5/utils/merkletrie -version: v5.16.2 +version: v5.16.4 type: go summary: Package merkletrie provides support for n-ary trees that are at the same time Merkle trees and Radix trees (tries). homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/utils/merkletrie license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -210,6 +210,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie/filesystem.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie/filesystem.dep.yml index 3370d30b7..262b383bf 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie/filesystem.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie/filesystem.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/utils/merkletrie/filesystem -version: v5.16.2 +version: v5.16.4 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/utils/merkletrie/filesystem license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie/index.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie/index.dep.yml index 59c0fcf37..cb307679a 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie/index.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie/index.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/utils/merkletrie/index -version: v5.16.2 +version: v5.16.4 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/utils/merkletrie/index license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie/internal/frame.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie/internal/frame.dep.yml index 8faa378c3..a97b7e875 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie/internal/frame.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie/internal/frame.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/utils/merkletrie/internal/frame -version: v5.16.2 +version: v5.16.4 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/utils/merkletrie/internal/frame license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie/noder.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie/noder.dep.yml index 3cbf44fa8..6598042cf 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie/noder.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/merkletrie/noder.dep.yml @@ -1,13 +1,13 @@ --- name: github.com/go-git/go-git/v5/utils/merkletrie/noder -version: v5.16.2 +version: v5.16.4 type: go summary: Package noder provide an interface for defining nodes in a merkletrie, their hashes and their paths (a noders and its ancestors). homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/utils/merkletrie/noder license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -210,6 +210,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/sync.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/sync.dep.yml index 965ec8c62..a41c27061 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/sync.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/sync.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/utils/sync -version: v5.16.2 +version: v5.16.4 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/utils/sync license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/trace.dep.yml b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/trace.dep.yml index 678d26ca5..8983e23d8 100644 --- a/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/trace.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/go-git/go-git/v5/utils/trace.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/go-git/go-git/v5/utils/trace -version: v5.16.2 +version: v5.16.4 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/go-git/go-git/v5/utils/trace license: apache-2.0 licenses: -- sources: v5@v5.16.2/LICENSE +- sources: v5@v5.16.4/LICENSE text: |2 Apache License Version 2.0, January 2004 @@ -209,6 +209,6 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- sources: v5@v5.16.2/README.md +- sources: v5@v5.16.4/README.md text: Apache License Version 2.0, see [LICENSE](LICENSE) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/gofrs/uuid/v5.dep.yml b/.licenses/arduino-app-cli/go/github.com/gofrs/uuid/v5.dep.yml index fe507a6e4..201ff3b02 100644 --- a/.licenses/arduino-app-cli/go/github.com/gofrs/uuid/v5.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/gofrs/uuid/v5.dep.yml @@ -1,6 +1,6 @@ --- name: github.com/gofrs/uuid/v5 -version: v5.3.2 +version: v5.4.0 type: go summary: Package uuid provides implementations of the Universally Unique Identifier (UUID), as specified in RFC-9562 (formerly RFC-4122). diff --git a/.licenses/arduino-app-cli/go/github.com/sagikazarmark/locafero.dep.yml b/.licenses/arduino-app-cli/go/github.com/sagikazarmark/locafero.dep.yml index d159fe8a4..b7b6e50c7 100644 --- a/.licenses/arduino-app-cli/go/github.com/sagikazarmark/locafero.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/sagikazarmark/locafero.dep.yml @@ -1,8 +1,8 @@ --- name: github.com/sagikazarmark/locafero -version: v0.7.0 +version: v0.11.0 type: go -summary: Package finder looks for files and directories in an {fs.Fs} filesystem. +summary: Package locafero looks for files and directories in an {fs.Fs} filesystem. homepage: https://pkg.go.dev/github.com/sagikazarmark/locafero license: mit licenses: diff --git a/.licenses/arduino-app-cli/go/github.com/sourcegraph/conc.dep.yml b/.licenses/arduino-app-cli/go/github.com/sourcegraph/conc.dep.yml index e9af869d5..5b90aa4fd 100644 --- a/.licenses/arduino-app-cli/go/github.com/sourcegraph/conc.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/sourcegraph/conc.dep.yml @@ -1,8 +1,8 @@ --- name: github.com/sourcegraph/conc -version: v0.3.0 +version: v0.3.1-0.20240121214520-5f936abd7ae8 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/sourcegraph/conc license: mit licenses: diff --git a/.licenses/arduino-app-cli/go/github.com/sourcegraph/conc/panics.dep.yml b/.licenses/arduino-app-cli/go/github.com/sourcegraph/conc/panics.dep.yml index 412e1c2c0..9fabe5532 100644 --- a/.licenses/arduino-app-cli/go/github.com/sourcegraph/conc/panics.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/sourcegraph/conc/panics.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/sourcegraph/conc/panics -version: v0.3.0 +version: v0.3.1-0.20240121214520-5f936abd7ae8 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/sourcegraph/conc/panics license: mit licenses: -- sources: conc@v0.3.0/LICENSE +- sources: conc@v0.3.1-0.20240121214520-5f936abd7ae8/LICENSE text: | MIT License diff --git a/.licenses/arduino-app-cli/go/github.com/sourcegraph/conc/internal/multierror.dep.yml b/.licenses/arduino-app-cli/go/github.com/sourcegraph/conc/pool.dep.yml similarity index 84% rename from .licenses/arduino-app-cli/go/github.com/sourcegraph/conc/internal/multierror.dep.yml rename to .licenses/arduino-app-cli/go/github.com/sourcegraph/conc/pool.dep.yml index 7bd4c6dec..75f9d4d97 100644 --- a/.licenses/arduino-app-cli/go/github.com/sourcegraph/conc/internal/multierror.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/sourcegraph/conc/pool.dep.yml @@ -1,12 +1,12 @@ --- -name: github.com/sourcegraph/conc/internal/multierror -version: v0.3.0 +name: github.com/sourcegraph/conc/pool +version: v0.3.1-0.20240121214520-5f936abd7ae8 type: go -summary: -homepage: https://pkg.go.dev/github.com/sourcegraph/conc/internal/multierror +summary: +homepage: https://pkg.go.dev/github.com/sourcegraph/conc/pool license: mit licenses: -- sources: conc@v0.3.0/LICENSE +- sources: conc@v0.3.1-0.20240121214520-5f936abd7ae8/LICENSE text: | MIT License diff --git a/.licenses/arduino-app-cli/go/github.com/spf13/afero.dep.yml b/.licenses/arduino-app-cli/go/github.com/spf13/afero.dep.yml index d11c5243a..7e393a3e3 100644 --- a/.licenses/arduino-app-cli/go/github.com/spf13/afero.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/spf13/afero.dep.yml @@ -1,8 +1,8 @@ --- name: github.com/spf13/afero -version: v1.12.0 +version: v1.15.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/spf13/afero license: apache-2.0 licenses: @@ -182,8 +182,4 @@ licenses: defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. -- sources: README.md - text: |- - Afero is released under the Apache 2.0 license. See - [LICENSE.txt](https://github.com/spf13/afero/blob/master/LICENSE.txt) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/spf13/afero/internal/common.dep.yml b/.licenses/arduino-app-cli/go/github.com/spf13/afero/internal/common.dep.yml index e2209f199..762f1646f 100644 --- a/.licenses/arduino-app-cli/go/github.com/spf13/afero/internal/common.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/spf13/afero/internal/common.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/spf13/afero/internal/common -version: v1.12.0 +version: v1.15.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/spf13/afero/internal/common license: apache-2.0 licenses: -- sources: afero@v1.12.0/LICENSE.txt +- sources: afero@v1.15.0/LICENSE.txt text: |2 Apache License Version 2.0, January 2004 @@ -182,8 +182,4 @@ licenses: defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. -- sources: afero@v1.12.0/README.md - text: |- - Afero is released under the Apache 2.0 license. See - [LICENSE.txt](https://github.com/spf13/afero/blob/master/LICENSE.txt) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/spf13/afero/mem.dep.yml b/.licenses/arduino-app-cli/go/github.com/spf13/afero/mem.dep.yml index 50060367e..3d329d4c0 100644 --- a/.licenses/arduino-app-cli/go/github.com/spf13/afero/mem.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/spf13/afero/mem.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/spf13/afero/mem -version: v1.12.0 +version: v1.15.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/spf13/afero/mem license: apache-2.0 licenses: -- sources: afero@v1.12.0/LICENSE.txt +- sources: afero@v1.15.0/LICENSE.txt text: |2 Apache License Version 2.0, January 2004 @@ -182,8 +182,4 @@ licenses: defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. -- sources: afero@v1.12.0/README.md - text: |- - Afero is released under the Apache 2.0 license. See - [LICENSE.txt](https://github.com/spf13/afero/blob/master/LICENSE.txt) notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/spf13/cast.dep.yml b/.licenses/arduino-app-cli/go/github.com/spf13/cast.dep.yml index 22ec680c2..2e4c07f3d 100644 --- a/.licenses/arduino-app-cli/go/github.com/spf13/cast.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/spf13/cast.dep.yml @@ -1,6 +1,6 @@ --- name: github.com/spf13/cast -version: v1.7.1 +version: v1.10.0 type: go summary: Package cast provides easy and safe casting in Go. homepage: https://pkg.go.dev/github.com/spf13/cast @@ -29,4 +29,6 @@ licenses: LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +- sources: README.md + text: The project is licensed under the [MIT License](LICENSE). notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/sourcegraph/conc/iter.dep.yml b/.licenses/arduino-app-cli/go/github.com/spf13/cast/internal.dep.yml similarity index 77% rename from .licenses/arduino-app-cli/go/github.com/sourcegraph/conc/iter.dep.yml rename to .licenses/arduino-app-cli/go/github.com/spf13/cast/internal.dep.yml index 849634463..ad6d721e2 100644 --- a/.licenses/arduino-app-cli/go/github.com/sourcegraph/conc/iter.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/spf13/cast/internal.dep.yml @@ -1,16 +1,16 @@ --- -name: github.com/sourcegraph/conc/iter -version: v0.3.0 +name: github.com/spf13/cast/internal +version: v1.10.0 type: go -summary: -homepage: https://pkg.go.dev/github.com/sourcegraph/conc/iter +summary: +homepage: https://pkg.go.dev/github.com/spf13/cast/internal license: mit licenses: -- sources: conc@v0.3.0/LICENSE - text: | - MIT License +- sources: cast@v1.10.0/LICENSE + text: |- + The MIT License (MIT) - Copyright (c) 2023 Sourcegraph + Copyright (c) 2014 Steve Francia Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -29,4 +29,6 @@ licenses: LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +- sources: cast@v1.10.0/README.md + text: The project is licensed under the [MIT License](LICENSE). notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/spf13/cobra.dep.yml b/.licenses/arduino-app-cli/go/github.com/spf13/cobra.dep.yml index b2b64cb28..b8f0698a8 100644 --- a/.licenses/arduino-app-cli/go/github.com/spf13/cobra.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/spf13/cobra.dep.yml @@ -1,6 +1,6 @@ --- name: github.com/spf13/cobra -version: v1.10.1 +version: v1.10.2 type: go summary: Package cobra is a commander providing a simple interface to create powerful modern CLI interfaces. diff --git a/.licenses/arduino-app-cli/go/github.com/spf13/pflag.dep.yml b/.licenses/arduino-app-cli/go/github.com/spf13/pflag.dep.yml index 6984f2418..c47fe6371 100644 --- a/.licenses/arduino-app-cli/go/github.com/spf13/pflag.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/spf13/pflag.dep.yml @@ -1,6 +1,6 @@ --- name: github.com/spf13/pflag -version: v1.0.9 +version: v1.0.10 type: go summary: Package pflag is a drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags. diff --git a/.licenses/arduino-app-cli/go/github.com/spf13/viper.dep.yml b/.licenses/arduino-app-cli/go/github.com/spf13/viper.dep.yml index 1d37ad1ef..9cf157d11 100644 --- a/.licenses/arduino-app-cli/go/github.com/spf13/viper.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/spf13/viper.dep.yml @@ -1,8 +1,8 @@ --- name: github.com/spf13/viper -version: v1.20.1 +version: v1.21.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/spf13/viper license: mit licenses: diff --git a/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/encoding/dotenv.dep.yml b/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/encoding/dotenv.dep.yml index f28e5bc41..4842bb4d8 100644 --- a/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/encoding/dotenv.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/encoding/dotenv.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/spf13/viper/internal/encoding/dotenv -version: v1.20.1 +version: v1.21.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/spf13/viper/internal/encoding/dotenv license: mit licenses: -- sources: viper@v1.20.1/LICENSE +- sources: viper@v1.21.0/LICENSE text: |- The MIT License (MIT) @@ -29,6 +29,6 @@ licenses: LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: viper@v1.20.1/README.md +- sources: viper@v1.21.0/README.md text: The project is licensed under the [MIT License](LICENSE). notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/encoding/json.dep.yml b/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/encoding/json.dep.yml index 3978d9bc9..227f55d30 100644 --- a/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/encoding/json.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/encoding/json.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/spf13/viper/internal/encoding/json -version: v1.20.1 +version: v1.21.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/spf13/viper/internal/encoding/json license: mit licenses: -- sources: viper@v1.20.1/LICENSE +- sources: viper@v1.21.0/LICENSE text: |- The MIT License (MIT) @@ -29,6 +29,6 @@ licenses: LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: viper@v1.20.1/README.md +- sources: viper@v1.21.0/README.md text: The project is licensed under the [MIT License](LICENSE). notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/encoding/toml.dep.yml b/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/encoding/toml.dep.yml index d1e996378..382a7e728 100644 --- a/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/encoding/toml.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/encoding/toml.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/spf13/viper/internal/encoding/toml -version: v1.20.1 +version: v1.21.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/spf13/viper/internal/encoding/toml license: mit licenses: -- sources: viper@v1.20.1/LICENSE +- sources: viper@v1.21.0/LICENSE text: |- The MIT License (MIT) @@ -29,6 +29,6 @@ licenses: LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: viper@v1.20.1/README.md +- sources: viper@v1.21.0/README.md text: The project is licensed under the [MIT License](LICENSE). notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/encoding/yaml.dep.yml b/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/encoding/yaml.dep.yml index ea34f2378..764765834 100644 --- a/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/encoding/yaml.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/encoding/yaml.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/spf13/viper/internal/encoding/yaml -version: v1.20.1 +version: v1.21.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/spf13/viper/internal/encoding/yaml license: mit licenses: -- sources: viper@v1.20.1/LICENSE +- sources: viper@v1.21.0/LICENSE text: |- The MIT License (MIT) @@ -29,6 +29,6 @@ licenses: LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: viper@v1.20.1/README.md +- sources: viper@v1.21.0/README.md text: The project is licensed under the [MIT License](LICENSE). notices: [] diff --git a/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/features.dep.yml b/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/features.dep.yml index b6929192e..cbe351940 100644 --- a/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/features.dep.yml +++ b/.licenses/arduino-app-cli/go/github.com/spf13/viper/internal/features.dep.yml @@ -1,12 +1,12 @@ --- name: github.com/spf13/viper/internal/features -version: v1.20.1 +version: v1.21.0 type: go -summary: +summary: homepage: https://pkg.go.dev/github.com/spf13/viper/internal/features license: mit licenses: -- sources: viper@v1.20.1/LICENSE +- sources: viper@v1.21.0/LICENSE text: |- The MIT License (MIT) @@ -29,6 +29,6 @@ licenses: LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- sources: viper@v1.20.1/README.md +- sources: viper@v1.21.0/README.md text: The project is licensed under the [MIT License](LICENSE). notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/auto/sdk.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/auto/sdk.dep.yml index c6cd156ad..820c907f7 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/auto/sdk.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/auto/sdk.dep.yml @@ -1,6 +1,6 @@ --- name: go.opentelemetry.io/auto/sdk -version: v1.1.0 +version: v1.2.1 type: go summary: Package sdk provides an auto-instrumentable OpenTelemetry SDK. homepage: https://pkg.go.dev/go.opentelemetry.io/auto/sdk diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/auto/sdk/internal/telemetry.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/auto/sdk/internal/telemetry.dep.yml index 081bcef78..02e56c136 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/auto/sdk/internal/telemetry.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/auto/sdk/internal/telemetry.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/auto/sdk/internal/telemetry -version: v1.1.0 +version: v1.2.1 type: go summary: Package telemetry provides a lightweight representations of OpenTelemetry telemetry that is compatible with the OTLP JSON protobuf encoding. homepage: https://pkg.go.dev/go.opentelemetry.io/auto/sdk/internal/telemetry license: apache-2.0 licenses: -- sources: sdk@v1.1.0/LICENSE +- sources: sdk@v1.2.1/LICENSE text: |2 Apache License Version 2.0, January 2004 diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel.dep.yml index 081ad2b74..d50dc4b60 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel -version: v1.37.0 +version: v1.38.0 type: go summary: Package otel provides global access to the OpenTelemetry API. homepage: https://pkg.go.dev/go.opentelemetry.io/otel license: apache-2.0 licenses: - sources: LICENSE - text: |2 + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/attribute.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/attribute.dep.yml index 3046a4a59..171eb9499 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/attribute.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/attribute.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/attribute -version: v1.37.0 +version: v1.38.0 type: go summary: Package attribute provides key and value attributes. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/attribute license: apache-2.0 licenses: -- sources: otel@v1.37.0/LICENSE - text: |2 +- sources: otel@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/attribute/internal.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/attribute/internal.dep.yml index 3ad4c88a0..322616484 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/attribute/internal.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/attribute/internal.dep.yml @@ -1,14 +1,14 @@ --- name: go.opentelemetry.io/otel/attribute/internal -version: v1.37.0 +version: v1.38.0 type: go summary: Package attribute provide several helper functions for some commonly used logic of processing attributes. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/attribute/internal license: apache-2.0 licenses: -- sources: otel@v1.37.0/LICENSE - text: |2 +- sources: otel@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -210,4 +210,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/baggage.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/baggage.dep.yml index e2fd21be6..e6bdb4674 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/baggage.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/baggage.dep.yml @@ -1,14 +1,14 @@ --- name: go.opentelemetry.io/otel/baggage -version: v1.37.0 +version: v1.38.0 type: go summary: Package baggage provides functionality for storing and retrieving baggage items in Go context. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/baggage license: apache-2.0 licenses: -- sources: otel@v1.37.0/LICENSE - text: |2 +- sources: otel@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -210,4 +210,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/codes.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/codes.dep.yml index 5eb5cef17..acb99c238 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/codes.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/codes.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/codes -version: v1.37.0 +version: v1.38.0 type: go summary: Package codes defines the canonical error codes used by OpenTelemetry. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/codes license: apache-2.0 licenses: -- sources: otel@v1.37.0/LICENSE - text: |2 +- sources: otel@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/internal/baggage.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/internal/baggage.dep.yml index 5ad8e0cb2..b6df55691 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/internal/baggage.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/internal/baggage.dep.yml @@ -1,14 +1,14 @@ --- name: go.opentelemetry.io/otel/internal/baggage -version: v1.37.0 +version: v1.38.0 type: go summary: Package baggage provides base types and functionality to store and retrieve baggage in Go context. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/internal/baggage license: apache-2.0 licenses: -- sources: otel@v1.37.0/LICENSE - text: |2 +- sources: otel@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -210,4 +210,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/internal/global.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/internal/global.dep.yml index c48b00e24..f83b1f224 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/internal/global.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/internal/global.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/internal/global -version: v1.37.0 +version: v1.38.0 type: go summary: Package global provides the OpenTelemetry global API. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/internal/global license: apache-2.0 licenses: -- sources: otel@v1.37.0/LICENSE - text: |2 +- sources: otel@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/metric.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/metric.dep.yml index ffad1995d..cdf93db99 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/metric.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/metric.dep.yml @@ -1,6 +1,6 @@ --- name: go.opentelemetry.io/otel/metric -version: v1.37.0 +version: v1.38.0 type: go summary: Package metric provides the OpenTelemetry API used to measure metrics about source code operation. @@ -8,7 +8,7 @@ homepage: https://pkg.go.dev/go.opentelemetry.io/otel/metric license: apache-2.0 licenses: - sources: LICENSE - text: |2 + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -210,4 +210,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/metric/embedded.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/metric/embedded.dep.yml index 91fed5cbc..dc2e6efec 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/metric/embedded.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/metric/embedded.dep.yml @@ -1,14 +1,14 @@ --- name: go.opentelemetry.io/otel/metric/embedded -version: v1.37.0 +version: v1.38.0 type: go summary: Package embedded provides interfaces embedded within the [OpenTelemetry metric API]. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/metric/embedded license: apache-2.0 licenses: -- sources: metric@v1.37.0/LICENSE - text: |2 +- sources: metric@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -210,4 +210,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/metric/noop.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/metric/noop.dep.yml index 78efa130b..ea9193233 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/metric/noop.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/metric/noop.dep.yml @@ -1,14 +1,14 @@ --- name: go.opentelemetry.io/otel/metric/noop -version: v1.37.0 +version: v1.38.0 type: go summary: Package noop provides an implementation of the OpenTelemetry metric API that produces no telemetry and minimizes used computation resources. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/metric/noop license: apache-2.0 licenses: -- sources: metric@v1.37.0/LICENSE - text: |2 +- sources: metric@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -210,4 +210,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/propagation.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/propagation.dep.yml index 7cbf51b53..f644fab2f 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/propagation.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/propagation.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/propagation -version: v1.37.0 +version: v1.38.0 type: go summary: Package propagation contains OpenTelemetry context propagators. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/propagation license: apache-2.0 licenses: -- sources: otel@v1.37.0/LICENSE - text: |2 +- sources: otel@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk.dep.yml index fe4c27380..2d77c60a1 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/sdk -version: v1.37.0 +version: v1.38.0 type: go summary: Package sdk provides the OpenTelemetry default SDK for Go. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/sdk license: apache-2.0 licenses: - sources: LICENSE - text: |2 + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/instrumentation.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/instrumentation.dep.yml index f2436dab9..c6344d726 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/instrumentation.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/instrumentation.dep.yml @@ -1,14 +1,14 @@ --- name: go.opentelemetry.io/otel/sdk/instrumentation -version: v1.37.0 +version: v1.38.0 type: go summary: Package instrumentation provides types to represent the code libraries that provide OpenTelemetry instrumentation. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/instrumentation license: apache-2.0 licenses: -- sources: sdk@v1.37.0/LICENSE - text: |2 +- sources: sdk@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -210,4 +210,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/internal/env.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/internal/env.dep.yml index 0125cbc1c..50e32f915 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/internal/env.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/internal/env.dep.yml @@ -1,14 +1,14 @@ --- name: go.opentelemetry.io/otel/sdk/internal/env -version: v1.37.0 +version: v1.38.0 type: go summary: Package env provides types and functionality for environment variable support in the OpenTelemetry SDK. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/internal/env license: apache-2.0 licenses: -- sources: sdk@v1.37.0/LICENSE - text: |2 +- sources: sdk@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -210,4 +210,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/internal/x.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/internal/x.dep.yml index 86b76e384..7ac3de4a9 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/internal/x.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/internal/x.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/sdk/internal/x -version: v1.37.0 +version: v1.38.0 type: go summary: Package x contains support for OTel SDK experimental features. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/internal/x license: apache-2.0 licenses: -- sources: sdk@v1.37.0/LICENSE - text: |2 +- sources: sdk@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric.dep.yml index 6b995951a..9ca1a09d0 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/sdk/metric -version: v1.37.0 +version: v1.38.0 type: go summary: Package metric provides an implementation of the OpenTelemetry metrics SDK. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/metric license: apache-2.0 licenses: - sources: LICENSE - text: |2 + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/exemplar.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/exemplar.dep.yml index a3a787e1b..560aae8c1 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/exemplar.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/exemplar.dep.yml @@ -1,14 +1,14 @@ --- name: go.opentelemetry.io/otel/sdk/metric/exemplar -version: v1.37.0 +version: v1.38.0 type: go summary: Package exemplar provides an implementation of the OpenTelemetry exemplar reservoir to be used in metric collection pipelines. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/metric/exemplar license: apache-2.0 licenses: -- sources: metric@v1.37.0/LICENSE - text: |2 +- sources: metric@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -210,4 +210,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/internal.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/internal.dep.yml index b18aa7e46..18210bb66 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/internal.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/internal.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/sdk/metric/internal -version: v1.37.0 +version: v1.38.0 type: go summary: Package internal provides internal functionality for the metric package. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/metric/internal license: apache-2.0 licenses: -- sources: metric@v1.37.0/LICENSE - text: |2 +- sources: metric@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/internal/aggregate.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/internal/aggregate.dep.yml index 09838513a..0f970c663 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/internal/aggregate.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/internal/aggregate.dep.yml @@ -1,14 +1,14 @@ --- name: go.opentelemetry.io/otel/sdk/metric/internal/aggregate -version: v1.37.0 +version: v1.38.0 type: go summary: Package aggregate provides aggregate types used compute aggregations and cycle the state of metric measurements made by the SDK. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/metric/internal/aggregate license: apache-2.0 licenses: -- sources: metric@v1.37.0/LICENSE - text: |2 +- sources: metric@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -210,4 +210,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/internal/x.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/internal/x.dep.yml index d8ebde4c3..61b11ada9 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/internal/x.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/internal/x.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/sdk/metric/internal/x -version: v1.37.0 +version: v1.38.0 type: go summary: Package x contains support for OTel metric SDK experimental features. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/metric/internal/x license: apache-2.0 licenses: -- sources: metric@v1.37.0/LICENSE - text: |2 +- sources: metric@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/metricdata.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/metricdata.dep.yml index e25cd454b..9f34067c8 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/metricdata.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/metric/metricdata.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/sdk/metric/metricdata -version: v1.37.0 +version: v1.38.0 type: go summary: Package metricdata provides types for the metric SDK data model. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/metric/metricdata license: apache-2.0 licenses: -- sources: metric@v1.37.0/LICENSE - text: |2 +- sources: metric@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/resource.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/resource.dep.yml index a9b93c19a..17db12738 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/resource.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/resource.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/sdk/resource -version: v1.37.0 +version: v1.38.0 type: go summary: Package resource provides detecting and representing resources. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/resource license: apache-2.0 licenses: -- sources: sdk@v1.37.0/LICENSE - text: |2 +- sources: sdk@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/trace.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/trace.dep.yml index bc219e144..7e58c9007 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/trace.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/trace.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/sdk/trace -version: v1.37.0 +version: v1.38.0 type: go summary: Package trace contains support for OpenTelemetry distributed tracing. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/trace license: apache-2.0 licenses: -- sources: sdk@v1.37.0/LICENSE - text: |2 +- sources: sdk@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/trace/internal/x.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/trace/internal/x.dep.yml new file mode 100644 index 000000000..ab54e398e --- /dev/null +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/trace/internal/x.dep.yml @@ -0,0 +1,242 @@ +--- +name: go.opentelemetry.io/otel/sdk/trace/internal/x +version: v1.38.0 +type: go +summary: Package x documents experimental features for go.opentelemetry.io/otel/sdk/trace. +homepage: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/trace/internal/x +license: apache-2.0 +licenses: +- sources: sdk@v1.38.0/LICENSE + text: |2- + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/trace/tracetest.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/trace/tracetest.dep.yml index 6096bf06a..fd53b216e 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/trace/tracetest.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/sdk/trace/tracetest.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/sdk/trace/tracetest -version: v1.37.0 +version: v1.38.0 type: go summary: Package tracetest is a testing helper package for the SDK. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/trace/tracetest license: apache-2.0 licenses: -- sources: sdk@v1.37.0/LICENSE - text: |2 +- sources: sdk@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.17.0.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.17.0.dep.yml index e5d729e60..c460603d4 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.17.0.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.17.0.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/semconv/v1.17.0 -version: v1.37.0 +version: v1.38.0 type: go summary: Package semconv implements OpenTelemetry semantic conventions. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.17.0 license: apache-2.0 licenses: -- sources: otel@v1.37.0/LICENSE - text: |2 +- sources: otel@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.19.0.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.19.0.dep.yml index 0e0f5f451..1c956ec79 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.19.0.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.19.0.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/semconv/v1.19.0 -version: v1.37.0 +version: v1.38.0 type: go summary: Package semconv implements OpenTelemetry semantic conventions. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.19.0 license: apache-2.0 licenses: -- sources: otel@v1.37.0/LICENSE - text: |2 +- sources: otel@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.20.0.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.20.0.dep.yml index e171848cb..68a983d00 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.20.0.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.20.0.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/semconv/v1.20.0 -version: v1.37.0 +version: v1.38.0 type: go summary: Package semconv implements OpenTelemetry semantic conventions. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.20.0 license: apache-2.0 licenses: -- sources: otel@v1.37.0/LICENSE - text: |2 +- sources: otel@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.21.0.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.21.0.dep.yml index 9085629e1..86b748fb1 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.21.0.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.21.0.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/semconv/v1.21.0 -version: v1.37.0 +version: v1.38.0 type: go summary: Package semconv implements OpenTelemetry semantic conventions. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.21.0 license: apache-2.0 licenses: -- sources: otel@v1.37.0/LICENSE - text: |2 +- sources: otel@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.26.0.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.26.0.dep.yml index 420bb037f..0090bce50 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.26.0.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.26.0.dep.yml @@ -1,13 +1,13 @@ --- name: go.opentelemetry.io/otel/semconv/v1.26.0 -version: v1.37.0 +version: v1.38.0 type: go summary: Package semconv implements OpenTelemetry semantic conventions. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.26.0 license: apache-2.0 licenses: -- sources: otel@v1.37.0/LICENSE - text: |2 +- sources: otel@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -209,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.37.0.dep.yml similarity index 86% rename from .licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf.dep.yml rename to .licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.37.0.dep.yml index c81968ec3..ec35b19e9 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.37.0.dep.yml @@ -1,15 +1,13 @@ --- -name: google.golang.org/grpc/balancer/pickfirst/pickfirstleaf -version: v1.75.1 +name: go.opentelemetry.io/otel/semconv/v1.37.0 +version: v1.38.0 type: go -summary: Package pickfirstleaf contains the pick_first load balancing policy which - will be the universal leaf policy after dualstack changes are implemented. -homepage: https://pkg.go.dev/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf +summary: Package semconv implements OpenTelemetry semantic conventions. +homepage: https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.37.0 license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE - text: |2 - +- sources: otel@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -211,4 +209,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.37.0/otelconv.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.37.0/otelconv.dep.yml new file mode 100644 index 000000000..c74860316 --- /dev/null +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.37.0/otelconv.dep.yml @@ -0,0 +1,243 @@ +--- +name: go.opentelemetry.io/otel/semconv/v1.37.0/otelconv +version: v1.38.0 +type: go +summary: Package httpconv provides types and functionality for OpenTelemetry semantic + conventions in the "otel" namespace. +homepage: https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.37.0/otelconv +license: apache-2.0 +licenses: +- sources: otel@v1.38.0/LICENSE + text: |2- + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/trace.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/trace.dep.yml index 3b0606712..2714aa43a 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/trace.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/trace.dep.yml @@ -1,6 +1,6 @@ --- name: go.opentelemetry.io/otel/trace -version: v1.37.0 +version: v1.38.0 type: go summary: Package trace provides an implementation of the tracing part of the OpenTelemetry API. @@ -8,7 +8,7 @@ homepage: https://pkg.go.dev/go.opentelemetry.io/otel/trace license: apache-2.0 licenses: - sources: LICENSE - text: |2 + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -210,4 +210,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/trace/embedded.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/trace/embedded.dep.yml index 0aae47faf..8088ef4d9 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/trace/embedded.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/trace/embedded.dep.yml @@ -1,14 +1,14 @@ --- name: go.opentelemetry.io/otel/trace/embedded -version: v1.37.0 +version: v1.38.0 type: go summary: Package embedded provides interfaces embedded within the [OpenTelemetry trace API]. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/trace/embedded license: apache-2.0 licenses: -- sources: trace@v1.37.0/LICENSE - text: |2 +- sources: trace@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -210,4 +210,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/trace/internal/telemetry.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/trace/internal/telemetry.dep.yml index 329a93f27..f3cd6be22 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/trace/internal/telemetry.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/trace/internal/telemetry.dep.yml @@ -1,14 +1,14 @@ --- name: go.opentelemetry.io/otel/trace/internal/telemetry -version: v1.37.0 +version: v1.38.0 type: go summary: Package telemetry provides a lightweight representations of OpenTelemetry telemetry that is compatible with the OTLP JSON protobuf encoding. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/trace/internal/telemetry license: apache-2.0 licenses: -- sources: trace@v1.37.0/LICENSE - text: |2 +- sources: trace@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -210,4 +210,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/trace/noop.dep.yml b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/trace/noop.dep.yml index 3fb91997d..e4e8c06ba 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/trace/noop.dep.yml +++ b/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/trace/noop.dep.yml @@ -1,14 +1,14 @@ --- name: go.opentelemetry.io/otel/trace/noop -version: v1.37.0 +version: v1.38.0 type: go summary: Package noop provides an implementation of the OpenTelemetry trace API that produces no telemetry and minimizes used computation resources. homepage: https://pkg.go.dev/go.opentelemetry.io/otel/trace/noop license: apache-2.0 licenses: -- sources: trace@v1.37.0/LICENSE - text: |2 +- sources: trace@v1.38.0/LICENSE + text: |2- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -210,4 +210,34 @@ licenses: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + -------------------------------------------------------------------------------- + + Copyright 2009 The Go Authors. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. notices: [] diff --git a/.licenses/arduino-app-cli/go/go.yaml.in/yaml/v3.dep.yml b/.licenses/arduino-app-cli/go/go.yaml.in/yaml/v3.dep.yml new file mode 100644 index 000000000..7fe897093 --- /dev/null +++ b/.licenses/arduino-app-cli/go/go.yaml.in/yaml/v3.dep.yml @@ -0,0 +1,80 @@ +--- +name: go.yaml.in/yaml/v3 +version: v3.0.4 +type: go +summary: Package yaml implements YAML support for the Go language. +homepage: https://pkg.go.dev/go.yaml.in/yaml/v3 +license: other +licenses: +- sources: LICENSE + text: |2 + + This project is covered by two different licenses: MIT and Apache. + + #### MIT License #### + + The following files were ported to Go from C files of libyaml, and thus + are still covered by their original MIT license, with the additional + copyright staring in 2011 when the project was ported over: + + apic.go emitterc.go parserc.go readerc.go scannerc.go + writerc.go yamlh.go yamlprivateh.go + + Copyright (c) 2006-2010 Kirill Simonov + Copyright (c) 2006-2011 Kirill Simonov + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + + ### Apache License ### + + All the remaining project files are covered by the Apache license: + + Copyright (c) 2011-2019 Canonical Ltd + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +- sources: README.md + text: |- + The yaml package is licensed under the MIT and Apache License 2.0 licenses. + Please see the LICENSE file for details. +notices: +- sources: NOTICE + text: |- + Copyright 2011-2016 Canonical Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/.licenses/arduino-app-cli/go/golang.org/x/crypto/argon2.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/crypto/argon2.dep.yml index e8fa418d4..e2290d4e6 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/crypto/argon2.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/crypto/argon2.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/crypto/argon2 -version: v0.41.0 +version: v0.45.0 type: go summary: Package argon2 implements the key derivation function Argon2. homepage: https://pkg.go.dev/golang.org/x/crypto/argon2 license: bsd-3-clause licenses: -- sources: crypto@v0.41.0/LICENSE +- sources: crypto@v0.45.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: crypto@v0.41.0/PATENTS +- sources: crypto@v0.45.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/crypto/blake2b.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/crypto/blake2b.dep.yml index fb71ab943..ae27ee942 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/crypto/blake2b.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/crypto/blake2b.dep.yml @@ -1,13 +1,13 @@ --- name: golang.org/x/crypto/blake2b -version: v0.41.0 +version: v0.45.0 type: go summary: Package blake2b implements the BLAKE2b hash algorithm defined by RFC 7693 and the extendable output function (XOF) BLAKE2Xb. homepage: https://pkg.go.dev/golang.org/x/crypto/blake2b license: bsd-3-clause licenses: -- sources: crypto@v0.41.0/LICENSE +- sources: crypto@v0.45.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: crypto@v0.41.0/PATENTS +- sources: crypto@v0.45.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/crypto/blowfish.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/crypto/blowfish.dep.yml index fdf17269b..c7a7e5bd3 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/crypto/blowfish.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/crypto/blowfish.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/crypto/blowfish -version: v0.41.0 +version: v0.45.0 type: go summary: Package blowfish implements Bruce Schneier's Blowfish encryption algorithm. homepage: https://pkg.go.dev/golang.org/x/crypto/blowfish license: bsd-3-clause licenses: -- sources: crypto@v0.41.0/LICENSE +- sources: crypto@v0.45.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: crypto@v0.41.0/PATENTS +- sources: crypto@v0.45.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/crypto/cast5.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/crypto/cast5.dep.yml index 7dd555be0..973441099 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/crypto/cast5.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/crypto/cast5.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/crypto/cast5 -version: v0.41.0 +version: v0.45.0 type: go summary: Package cast5 implements CAST5, as defined in RFC 2144. homepage: https://pkg.go.dev/golang.org/x/crypto/cast5 license: bsd-3-clause licenses: -- sources: crypto@v0.41.0/LICENSE +- sources: crypto@v0.45.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: crypto@v0.41.0/PATENTS +- sources: crypto@v0.45.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/crypto/curve25519.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/crypto/curve25519.dep.yml index 45f38c732..2f76b9ae7 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/crypto/curve25519.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/crypto/curve25519.dep.yml @@ -1,13 +1,14 @@ --- name: golang.org/x/crypto/curve25519 -version: v0.41.0 +version: v0.45.0 type: go summary: Package curve25519 provides an implementation of the X25519 function, which - performs scalar multiplication on the elliptic curve known as Curve25519. + performs scalar multiplication on the elliptic curve known as Curve25519 according + to [RFC 7748]. homepage: https://pkg.go.dev/golang.org/x/crypto/curve25519 license: bsd-3-clause licenses: -- sources: crypto@v0.41.0/LICENSE +- sources: crypto@v0.45.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -36,7 +37,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: crypto@v0.41.0/PATENTS +- sources: crypto@v0.45.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/crypto/ed25519.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/crypto/ed25519.dep.yml index 9c7f91bf0..219413aca 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/crypto/ed25519.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/crypto/ed25519.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/crypto/ed25519 -version: v0.41.0 +version: v0.45.0 type: go summary: Package ed25519 implements the Ed25519 signature algorithm. homepage: https://pkg.go.dev/golang.org/x/crypto/ed25519 license: bsd-3-clause licenses: -- sources: crypto@v0.41.0/LICENSE +- sources: crypto@v0.45.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: crypto@v0.41.0/PATENTS +- sources: crypto@v0.45.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/crypto/hkdf.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/crypto/hkdf.dep.yml index dd28cb1c3..191bdec90 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/crypto/hkdf.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/crypto/hkdf.dep.yml @@ -1,13 +1,13 @@ --- name: golang.org/x/crypto/hkdf -version: v0.41.0 +version: v0.45.0 type: go summary: Package hkdf implements the HMAC-based Extract-and-Expand Key Derivation Function (HKDF) as defined in RFC 5869. homepage: https://pkg.go.dev/golang.org/x/crypto/hkdf license: bsd-3-clause licenses: -- sources: crypto@v0.41.0/LICENSE +- sources: crypto@v0.45.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: crypto@v0.41.0/PATENTS +- sources: crypto@v0.45.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/crypto/nacl/sign.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/crypto/nacl/sign.dep.yml index 816277562..20dbd0ec0 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/crypto/nacl/sign.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/crypto/nacl/sign.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/crypto/nacl/sign -version: v0.41.0 +version: v0.45.0 type: go summary: Package sign signs small messages using public-key cryptography. homepage: https://pkg.go.dev/golang.org/x/crypto/nacl/sign license: bsd-3-clause licenses: -- sources: crypto@v0.41.0/LICENSE +- sources: crypto@v0.45.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: crypto@v0.41.0/PATENTS +- sources: crypto@v0.45.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/crypto/pbkdf2.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/crypto/pbkdf2.dep.yml index e7a7ffa41..110224d60 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/crypto/pbkdf2.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/crypto/pbkdf2.dep.yml @@ -1,13 +1,13 @@ --- name: golang.org/x/crypto/pbkdf2 -version: v0.41.0 +version: v0.45.0 type: go summary: 'Package pbkdf2 implements the key derivation function PBKDF2 as defined in RFC 2898 / PKCS #5 v2.0.' homepage: https://pkg.go.dev/golang.org/x/crypto/pbkdf2 license: bsd-3-clause licenses: -- sources: crypto@v0.41.0/LICENSE +- sources: crypto@v0.45.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: crypto@v0.41.0/PATENTS +- sources: crypto@v0.45.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/crypto/sha3.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/crypto/sha3.dep.yml index fd63cbf65..e847cec04 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/crypto/sha3.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/crypto/sha3.dep.yml @@ -1,13 +1,13 @@ --- name: golang.org/x/crypto/sha3 -version: v0.41.0 +version: v0.45.0 type: go -summary: Package sha3 implements the SHA-3 fixed-output-length hash functions and - the SHAKE variable-output-length hash functions defined by FIPS-202. +summary: Package sha3 implements the SHA-3 hash algorithms and the SHAKE extendable + output functions defined in FIPS 202. homepage: https://pkg.go.dev/golang.org/x/crypto/sha3 license: bsd-3-clause licenses: -- sources: crypto@v0.41.0/LICENSE +- sources: crypto@v0.45.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: crypto@v0.41.0/PATENTS +- sources: crypto@v0.45.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/crypto/ssh.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/crypto/ssh.dep.yml index a7e121768..5dcf3cee6 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/crypto/ssh.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/crypto/ssh.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/crypto/ssh -version: v0.41.0 +version: v0.45.0 type: go summary: Package ssh implements an SSH client and server. homepage: https://pkg.go.dev/golang.org/x/crypto/ssh license: bsd-3-clause licenses: -- sources: crypto@v0.41.0/LICENSE +- sources: crypto@v0.45.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: crypto@v0.41.0/PATENTS +- sources: crypto@v0.45.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/crypto/ssh/agent.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/crypto/ssh/agent.dep.yml index e07b7a195..649dc8341 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/crypto/ssh/agent.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/crypto/ssh/agent.dep.yml @@ -1,13 +1,13 @@ --- name: golang.org/x/crypto/ssh/agent -version: v0.41.0 +version: v0.45.0 type: go summary: Package agent implements the ssh-agent protocol, and provides both a client and a server. homepage: https://pkg.go.dev/golang.org/x/crypto/ssh/agent license: bsd-3-clause licenses: -- sources: crypto@v0.41.0/LICENSE +- sources: crypto@v0.45.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: crypto@v0.41.0/PATENTS +- sources: crypto@v0.45.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf.dep.yml index ae7817555..364cd5376 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/crypto/ssh/internal/bcrypt_pbkdf -version: v0.41.0 +version: v0.45.0 type: go summary: Package bcrypt_pbkdf implements bcrypt_pbkdf(3) from OpenBSD. homepage: https://pkg.go.dev/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf license: bsd-3-clause licenses: -- sources: crypto@v0.41.0/LICENSE +- sources: crypto@v0.45.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: crypto@v0.41.0/PATENTS +- sources: crypto@v0.45.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/crypto/ssh/knownhosts.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/crypto/ssh/knownhosts.dep.yml index a63d5d121..4b5b1d164 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/crypto/ssh/knownhosts.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/crypto/ssh/knownhosts.dep.yml @@ -1,6 +1,6 @@ --- name: golang.org/x/crypto/ssh/knownhosts -version: v0.41.0 +version: v0.45.0 type: go summary: Package knownhosts implements a parser for the OpenSSH known_hosts host key database, and provides utility functions for writing OpenSSH compliant known_hosts @@ -8,7 +8,7 @@ summary: Package knownhosts implements a parser for the OpenSSH known_hosts host homepage: https://pkg.go.dev/golang.org/x/crypto/ssh/knownhosts license: bsd-3-clause licenses: -- sources: crypto@v0.41.0/LICENSE +- sources: crypto@v0.45.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -37,7 +37,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: crypto@v0.41.0/PATENTS +- sources: crypto@v0.45.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/net/context.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/net/context.dep.yml index 50e15fce3..1f77f8d7c 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/net/context.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/net/context.dep.yml @@ -1,13 +1,12 @@ --- name: golang.org/x/net/context -version: v0.43.0 +version: v0.47.0 type: go -summary: Package context defines the Context type, which carries deadlines, cancellation - signals, and other request-scoped values across API boundaries and between processes. +summary: Package context has been superseded by the standard library context package. homepage: https://pkg.go.dev/golang.org/x/net/context license: bsd-3-clause licenses: -- sources: net@v0.43.0/LICENSE +- sources: net@v0.47.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -36,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: net@v0.43.0/PATENTS +- sources: net@v0.47.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/net/html.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/net/html.dep.yml index e6314ef41..c4c39652d 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/net/html.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/net/html.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/net/html -version: v0.43.0 +version: v0.47.0 type: go summary: Package html implements an HTML5-compliant tokenizer and parser. homepage: https://pkg.go.dev/golang.org/x/net/html license: bsd-3-clause licenses: -- sources: net@v0.43.0/LICENSE +- sources: net@v0.47.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: net@v0.43.0/PATENTS +- sources: net@v0.47.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/net/html/atom.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/net/html/atom.dep.yml index cc08fd428..8f59dd853 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/net/html/atom.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/net/html/atom.dep.yml @@ -1,6 +1,6 @@ --- name: golang.org/x/net/html/atom -version: v0.43.0 +version: v0.47.0 type: go summary: 'Package atom provides integer codes (also known as atoms) for a fixed set of frequently occurring HTML strings: tag names and attribute keys such as "p" and @@ -8,7 +8,7 @@ summary: 'Package atom provides integer codes (also known as atoms) for a fixed homepage: https://pkg.go.dev/golang.org/x/net/html/atom license: bsd-3-clause licenses: -- sources: net@v0.43.0/LICENSE +- sources: net@v0.47.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -37,7 +37,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: net@v0.43.0/PATENTS +- sources: net@v0.47.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/net/http2.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/net/http2.dep.yml index 6483acc29..3629b5ab9 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/net/http2.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/net/http2.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/net/http2 -version: v0.43.0 +version: v0.47.0 type: go summary: Package http2 implements the HTTP/2 protocol. homepage: https://pkg.go.dev/golang.org/x/net/http2 license: bsd-3-clause licenses: -- sources: net@v0.43.0/LICENSE +- sources: net@v0.47.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: net@v0.43.0/PATENTS +- sources: net@v0.47.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/net/internal/httpcommon.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/net/internal/httpcommon.dep.yml index dcd083cae..d9411b826 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/net/internal/httpcommon.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/net/internal/httpcommon.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/net/internal/httpcommon -version: v0.43.0 +version: v0.47.0 type: go -summary: +summary: homepage: https://pkg.go.dev/golang.org/x/net/internal/httpcommon license: bsd-3-clause licenses: -- sources: net@v0.43.0/LICENSE +- sources: net@v0.47.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: net@v0.43.0/PATENTS +- sources: net@v0.47.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/net/internal/socks.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/net/internal/socks.dep.yml index 3be35aadc..a60f4b3b4 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/net/internal/socks.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/net/internal/socks.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/net/internal/socks -version: v0.43.0 +version: v0.47.0 type: go summary: Package socks provides a SOCKS version 5 client implementation. homepage: https://pkg.go.dev/golang.org/x/net/internal/socks license: bsd-3-clause licenses: -- sources: net@v0.43.0/LICENSE +- sources: net@v0.47.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: net@v0.43.0/PATENTS +- sources: net@v0.47.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/net/internal/timeseries.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/net/internal/timeseries.dep.yml index 0dfd8d63a..2b2686293 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/net/internal/timeseries.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/net/internal/timeseries.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/net/internal/timeseries -version: v0.43.0 +version: v0.47.0 type: go summary: Package timeseries implements a time series structure for stats collection. homepage: https://pkg.go.dev/golang.org/x/net/internal/timeseries license: bsd-3-clause licenses: -- sources: net@v0.43.0/LICENSE +- sources: net@v0.47.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: net@v0.43.0/PATENTS +- sources: net@v0.47.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/net/proxy.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/net/proxy.dep.yml index 677ad05cf..e56c0467d 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/net/proxy.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/net/proxy.dep.yml @@ -1,13 +1,13 @@ --- name: golang.org/x/net/proxy -version: v0.43.0 +version: v0.47.0 type: go summary: Package proxy provides support for a variety of protocols to proxy network data. homepage: https://pkg.go.dev/golang.org/x/net/proxy license: bsd-3-clause licenses: -- sources: net@v0.43.0/LICENSE +- sources: net@v0.47.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: net@v0.43.0/PATENTS +- sources: net@v0.47.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/net/publicsuffix.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/net/publicsuffix.dep.yml index 2ce0f18c3..6f9ca380b 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/net/publicsuffix.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/net/publicsuffix.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/net/publicsuffix -version: v0.43.0 +version: v0.47.0 type: go summary: Package publicsuffix provides a public suffix list based on data from https://publicsuffix.org/ homepage: https://pkg.go.dev/golang.org/x/net/publicsuffix license: bsd-3-clause licenses: -- sources: net@v0.43.0/LICENSE +- sources: net@v0.47.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: net@v0.43.0/PATENTS +- sources: net@v0.47.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/net/trace.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/net/trace.dep.yml index 0d21df637..94084978c 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/net/trace.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/net/trace.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/net/trace -version: v0.43.0 +version: v0.47.0 type: go summary: Package trace implements tracing of requests and long-lived objects. homepage: https://pkg.go.dev/golang.org/x/net/trace license: bsd-3-clause licenses: -- sources: net@v0.43.0/LICENSE +- sources: net@v0.47.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: net@v0.43.0/PATENTS +- sources: net@v0.47.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/net/websocket.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/net/websocket.dep.yml index 255bac79e..9b3c03b90 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/net/websocket.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/net/websocket.dep.yml @@ -1,13 +1,13 @@ --- name: golang.org/x/net/websocket -version: v0.43.0 +version: v0.47.0 type: go summary: Package websocket implements a client and server for the WebSocket protocol as specified in RFC 6455. homepage: https://pkg.go.dev/golang.org/x/net/websocket license: bsd-3-clause licenses: -- sources: net@v0.43.0/LICENSE +- sources: net@v0.47.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: net@v0.43.0/PATENTS +- sources: net@v0.47.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/oauth2.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/oauth2.dep.yml index ca6937ad2..c8474f438 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/oauth2.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/oauth2.dep.yml @@ -1,6 +1,6 @@ --- name: golang.org/x/oauth2 -version: v0.30.0 +version: v0.32.0 type: go summary: Package oauth2 provides support for making OAuth2 authorized and authenticated HTTP requests, as specified in RFC 6749. diff --git a/.licenses/arduino-app-cli/go/golang.org/x/oauth2/internal.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/oauth2/internal.dep.yml index b872cc6d6..ff93878c8 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/oauth2/internal.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/oauth2/internal.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/oauth2/internal -version: v0.30.0 +version: v0.32.0 type: go summary: Package internal contains support packages for golang.org/x/oauth2. homepage: https://pkg.go.dev/golang.org/x/oauth2/internal license: bsd-3-clause licenses: -- sources: oauth2@v0.30.0/LICENSE +- sources: oauth2@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. diff --git a/.licenses/arduino-app-cli/go/golang.org/x/sync/errgroup.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/sync/errgroup.dep.yml index 4662ea063..333ebb9cb 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/sync/errgroup.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/sync/errgroup.dep.yml @@ -1,13 +1,13 @@ --- name: golang.org/x/sync/errgroup -version: v0.17.0 +version: v0.19.0 type: go summary: Package errgroup provides synchronization, error propagation, and Context - cancelation for groups of goroutines working on subtasks of a common task. + cancellation for groups of goroutines working on subtasks of a common task. homepage: https://pkg.go.dev/golang.org/x/sync/errgroup license: bsd-3-clause licenses: -- sources: sync@v0.17.0/LICENSE +- sources: sync@v0.19.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: sync@v0.17.0/PATENTS +- sources: sync@v0.19.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/sync/semaphore.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/sync/semaphore.dep.yml index 71acffefa..d7b5b6b40 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/sync/semaphore.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/sync/semaphore.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/sync/semaphore -version: v0.17.0 +version: v0.19.0 type: go summary: Package semaphore provides a weighted semaphore implementation. homepage: https://pkg.go.dev/golang.org/x/sync/semaphore license: bsd-3-clause licenses: -- sources: sync@v0.17.0/LICENSE +- sources: sync@v0.19.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: sync@v0.17.0/PATENTS +- sources: sync@v0.19.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/sys/execabs.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/sys/execabs.dep.yml index 0f591ac28..21131d7fb 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/sys/execabs.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/sys/execabs.dep.yml @@ -1,13 +1,13 @@ --- name: golang.org/x/sys/execabs -version: v0.36.0 +version: v0.39.0 type: go summary: Package execabs is a drop-in replacement for os/exec that requires PATH lookups to find absolute paths. homepage: https://pkg.go.dev/golang.org/x/sys/execabs license: bsd-3-clause licenses: -- sources: sys@v0.36.0/LICENSE +- sources: sys@v0.39.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: sys@v0.36.0/PATENTS +- sources: sys@v0.39.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/sys/unix.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/sys/unix.dep.yml index 3a18e0deb..09b6d170d 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/sys/unix.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/sys/unix.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/sys/unix -version: v0.36.0 +version: v0.39.0 type: go summary: Package unix contains an interface to the low-level operating system primitives. homepage: https://pkg.go.dev/golang.org/x/sys/unix license: bsd-3-clause licenses: -- sources: sys@v0.36.0/LICENSE +- sources: sys@v0.39.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: sys@v0.36.0/PATENTS +- sources: sys@v0.39.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/term.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/term.dep.yml index 76cd0cd59..f8ec17ce3 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/term.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/term.dep.yml @@ -1,6 +1,6 @@ --- name: golang.org/x/term -version: v0.35.0 +version: v0.38.0 type: go summary: Package term provides support functions for dealing with terminals, as commonly found on UNIX systems. diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/cases.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/cases.dep.yml index 001c9b82c..7c36fcf92 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/cases.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/cases.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/text/cases -version: v0.29.0 +version: v0.32.0 type: go summary: Package cases provides general and language-specific case mappers. homepage: https://pkg.go.dev/golang.org/x/text/cases license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/encoding.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/encoding.dep.yml index fbc7fb1f1..cbef3e2e6 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/encoding.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/encoding.dep.yml @@ -1,13 +1,13 @@ --- name: golang.org/x/text/encoding -version: v0.29.0 +version: v0.32.0 type: go summary: Package encoding defines an interface for character encodings, such as Shift JIS and Windows 1252, that can convert to and from UTF-8. homepage: https://pkg.go.dev/golang.org/x/text/encoding license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/encoding/internal.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/encoding/internal.dep.yml index f725c8b08..c55b30dd1 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/encoding/internal.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/encoding/internal.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/text/encoding/internal -version: v0.29.0 +version: v0.32.0 type: go summary: Package internal contains code that is shared among encoding implementations. homepage: https://pkg.go.dev/golang.org/x/text/encoding/internal license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/encoding/internal/identifier.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/encoding/internal/identifier.dep.yml index 31268a4d6..a4667786a 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/encoding/internal/identifier.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/encoding/internal/identifier.dep.yml @@ -1,6 +1,6 @@ --- name: golang.org/x/text/encoding/internal/identifier -version: v0.29.0 +version: v0.32.0 type: go summary: Package identifier defines the contract between implementations of Encoding and Index by defining identifiers that uniquely identify standardized coded character @@ -10,7 +10,7 @@ summary: Package identifier defines the contract between implementations of Enco homepage: https://pkg.go.dev/golang.org/x/text/encoding/internal/identifier license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -39,7 +39,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/encoding/unicode.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/encoding/unicode.dep.yml index c1e46da0a..9b9f943d2 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/encoding/unicode.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/encoding/unicode.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/text/encoding/unicode -version: v0.29.0 +version: v0.32.0 type: go summary: Package unicode provides Unicode encodings such as UTF-16. homepage: https://pkg.go.dev/golang.org/x/text/encoding/unicode license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/feature/plural.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/feature/plural.dep.yml index 2c80aa706..927b67c03 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/feature/plural.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/feature/plural.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/text/feature/plural -version: v0.29.0 +version: v0.32.0 type: go summary: Package plural provides utilities for handling linguistic plurals in text. homepage: https://pkg.go.dev/golang.org/x/text/feature/plural license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/internal.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/internal.dep.yml index d564e15b0..1eb851e04 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/internal.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/internal.dep.yml @@ -1,13 +1,13 @@ --- name: golang.org/x/text/internal -version: v0.29.0 +version: v0.32.0 type: go summary: Package internal contains non-exported functionality that are used by packages in the text repository. homepage: https://pkg.go.dev/golang.org/x/text/internal license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/internal/catmsg.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/internal/catmsg.dep.yml index 0398c1f5b..bcaed35cd 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/internal/catmsg.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/internal/catmsg.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/text/internal/catmsg -version: v0.29.0 +version: v0.32.0 type: go summary: Package catmsg contains support types for package x/text/message/catalog. homepage: https://pkg.go.dev/golang.org/x/text/internal/catmsg license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/internal/format.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/internal/format.dep.yml index da531374c..d29c2d5a2 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/internal/format.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/internal/format.dep.yml @@ -1,13 +1,13 @@ --- name: golang.org/x/text/internal/format -version: v0.29.0 +version: v0.32.0 type: go summary: Package format contains types for defining language-specific formatting of values. homepage: https://pkg.go.dev/golang.org/x/text/internal/format license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/internal/language.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/internal/language.dep.yml index be63bed23..cfe8c8aac 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/internal/language.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/internal/language.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/text/internal/language -version: v0.29.0 +version: v0.32.0 type: go -summary: +summary: homepage: https://pkg.go.dev/golang.org/x/text/internal/language license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/internal/language/compact.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/internal/language/compact.dep.yml index 61b318dbd..b1ddc8257 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/internal/language/compact.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/internal/language/compact.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/text/internal/language/compact -version: v0.29.0 +version: v0.32.0 type: go summary: Package compact defines a compact representation of language tags. homepage: https://pkg.go.dev/golang.org/x/text/internal/language/compact license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/internal/number.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/internal/number.dep.yml index 044fb2299..d0f074bf7 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/internal/number.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/internal/number.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/text/internal/number -version: v0.29.0 +version: v0.32.0 type: go summary: Package number contains tools and data for formatting numbers. homepage: https://pkg.go.dev/golang.org/x/text/internal/number license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/internal/stringset.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/internal/stringset.dep.yml index 64d3e02e4..2ee183513 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/internal/stringset.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/internal/stringset.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/text/internal/stringset -version: v0.29.0 +version: v0.32.0 type: go summary: Package stringset provides a way to represent a collection of strings compactly. homepage: https://pkg.go.dev/golang.org/x/text/internal/stringset license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/internal/tag.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/internal/tag.dep.yml index 16dc81998..a41e5f73e 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/internal/tag.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/internal/tag.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/text/internal/tag -version: v0.29.0 +version: v0.32.0 type: go summary: Package tag contains functionality handling tags and related data. homepage: https://pkg.go.dev/golang.org/x/text/internal/tag license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/internal/utf8internal.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/internal/utf8internal.dep.yml index 08fb40078..1f4b2aa72 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/internal/utf8internal.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/internal/utf8internal.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/text/internal/utf8internal -version: v0.29.0 +version: v0.32.0 type: go summary: Package utf8internal contains low-level utf8-related constants, tables, etc. homepage: https://pkg.go.dev/golang.org/x/text/internal/utf8internal license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/language.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/language.dep.yml index bba4ca539..3cbe19972 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/language.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/language.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/text/language -version: v0.29.0 +version: v0.32.0 type: go summary: Package language implements BCP 47 language tags and related functionality. homepage: https://pkg.go.dev/golang.org/x/text/language license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/message.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/message.dep.yml index a01f5a764..296a1483c 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/message.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/message.dep.yml @@ -1,13 +1,13 @@ --- name: golang.org/x/text/message -version: v0.29.0 +version: v0.32.0 type: go summary: Package message implements formatted I/O for localized strings with functions analogous to the fmt's print functions. homepage: https://pkg.go.dev/golang.org/x/text/message license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/message/catalog.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/message/catalog.dep.yml index 6de748254..d8207f97b 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/message/catalog.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/message/catalog.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/text/message/catalog -version: v0.29.0 +version: v0.32.0 type: go summary: Package catalog defines collections of translated format strings. homepage: https://pkg.go.dev/golang.org/x/text/message/catalog license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/runes.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/runes.dep.yml index bd152728e..1e23e69be 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/runes.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/runes.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/text/runes -version: v0.29.0 +version: v0.32.0 type: go summary: Package runes provide transforms for UTF-8 encoded text. homepage: https://pkg.go.dev/golang.org/x/text/runes license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/golang.org/x/text/width.dep.yml b/.licenses/arduino-app-cli/go/golang.org/x/text/width.dep.yml index e8532e34f..751f90eda 100644 --- a/.licenses/arduino-app-cli/go/golang.org/x/text/width.dep.yml +++ b/.licenses/arduino-app-cli/go/golang.org/x/text/width.dep.yml @@ -1,12 +1,12 @@ --- name: golang.org/x/text/width -version: v0.29.0 +version: v0.32.0 type: go summary: Package width provides functionality for handling different widths in text. homepage: https://pkg.go.dev/golang.org/x/text/width license: bsd-3-clause licenses: -- sources: text@v0.29.0/LICENSE +- sources: text@v0.32.0/LICENSE text: | Copyright 2009 The Go Authors. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: text@v0.29.0/PATENTS +- sources: text@v0.32.0/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/genproto/googleapis/api/httpbody.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/genproto/googleapis/api/httpbody.dep.yml index ffce2f4b8..d8de6209e 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/genproto/googleapis/api/httpbody.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/genproto/googleapis/api/httpbody.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/genproto/googleapis/api/httpbody -version: v0.0.0-20250707201910-8d1bb00bc6a7 +version: v0.0.0-20251022142026-3a174f9686a8 type: go summary: homepage: https://pkg.go.dev/google.golang.org/genproto/googleapis/api/httpbody license: apache-2.0 licenses: -- sources: api@v0.0.0-20250707201910-8d1bb00bc6a7/LICENSE +- sources: api@v0.0.0-20251022142026-3a174f9686a8/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/genproto/googleapis/rpc/errdetails.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/genproto/googleapis/rpc/errdetails.dep.yml index 0b4f98b76..c6857004c 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/genproto/googleapis/rpc/errdetails.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/genproto/googleapis/rpc/errdetails.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/genproto/googleapis/rpc/errdetails -version: v0.0.0-20250707201910-8d1bb00bc6a7 +version: v0.0.0-20251022142026-3a174f9686a8 type: go summary: homepage: https://pkg.go.dev/google.golang.org/genproto/googleapis/rpc/errdetails license: apache-2.0 licenses: -- sources: rpc@v0.0.0-20250707201910-8d1bb00bc6a7/LICENSE +- sources: rpc@v0.0.0-20251022142026-3a174f9686a8/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/genproto/googleapis/rpc/status.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/genproto/googleapis/rpc/status.dep.yml index 3ae1759ae..2a0c2211a 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/genproto/googleapis/rpc/status.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/genproto/googleapis/rpc/status.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/genproto/googleapis/rpc/status -version: v0.0.0-20250707201910-8d1bb00bc6a7 +version: v0.0.0-20251022142026-3a174f9686a8 type: go summary: homepage: https://pkg.go.dev/google.golang.org/genproto/googleapis/rpc/status license: apache-2.0 licenses: -- sources: rpc@v0.0.0-20250707201910-8d1bb00bc6a7/LICENSE +- sources: rpc@v0.0.0-20251022142026-3a174f9686a8/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc.dep.yml index 384a19008..165ed1d9e 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc.dep.yml @@ -1,6 +1,6 @@ --- name: google.golang.org/grpc -version: v1.75.1 +version: v1.77.0 type: go summary: Package grpc implements an RPC system called gRPC. homepage: https://pkg.go.dev/google.golang.org/grpc diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/attributes.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/attributes.dep.yml index 97a9cca0f..e007abff7 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/attributes.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/attributes.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/attributes -version: v1.75.1 +version: v1.77.0 type: go summary: Package attributes defines a generic key/value store used in various gRPC components. homepage: https://pkg.go.dev/google.golang.org/grpc/attributes license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/backoff.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/backoff.dep.yml index 403ee3ba8..5fecd954d 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/backoff.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/backoff.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/backoff -version: v1.75.1 +version: v1.77.0 type: go summary: Package backoff provides configuration options for backoff. homepage: https://pkg.go.dev/google.golang.org/grpc/backoff license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer.dep.yml index e987c186c..a4cd71e07 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/balancer -version: v1.75.1 +version: v1.77.0 type: go summary: Package balancer defines APIs for load balancing in gRPC. homepage: https://pkg.go.dev/google.golang.org/grpc/balancer license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/base.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/base.dep.yml index 71c90b2f1..92530fcf4 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/base.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/base.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/balancer/base -version: v1.75.1 +version: v1.77.0 type: go summary: Package base defines a balancer base that can be used to build balancers with different picking algorithms. homepage: https://pkg.go.dev/google.golang.org/grpc/balancer/base license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/endpointsharding.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/endpointsharding.dep.yml index 410534942..960b96bc4 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/endpointsharding.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/endpointsharding.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/balancer/endpointsharding -version: v1.75.1 +version: v1.77.0 type: go summary: Package endpointsharding implements a load balancing policy that manages homogeneous child policies each owning a single endpoint. homepage: https://pkg.go.dev/google.golang.org/grpc/balancer/endpointsharding license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/grpclb/state.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/grpclb/state.dep.yml index efbfb7328..9bf0ccc5e 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/grpclb/state.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/grpclb/state.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/balancer/grpclb/state -version: v1.75.1 +version: v1.77.0 type: go summary: Package state declares grpclb types to be set by resolvers wishing to pass information to grpclb via resolver.State Attributes. homepage: https://pkg.go.dev/google.golang.org/grpc/balancer/grpclb/state license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/pickfirst.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/pickfirst.dep.yml index 9cb1f1b81..8624ea0be 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/pickfirst.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/pickfirst.dep.yml @@ -1,12 +1,13 @@ --- name: google.golang.org/grpc/balancer/pickfirst -version: v1.75.1 +version: v1.77.0 type: go -summary: Package pickfirst contains the pick_first load balancing policy. +summary: Package pickfirst contains the pick_first load balancing policy which is + the universal leaf policy. homepage: https://pkg.go.dev/google.golang.org/grpc/balancer/pickfirst license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/pickfirst/internal.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/pickfirst/internal.dep.yml index 421ad3e8a..0b036bf6f 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/pickfirst/internal.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/pickfirst/internal.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/balancer/pickfirst/internal -version: v1.75.1 +version: v1.77.0 type: go summary: Package internal contains code internal to the pickfirst package. homepage: https://pkg.go.dev/google.golang.org/grpc/balancer/pickfirst/internal license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/roundrobin.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/roundrobin.dep.yml index 665c756c5..46b0c0491 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/roundrobin.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/balancer/roundrobin.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/balancer/roundrobin -version: v1.75.1 +version: v1.77.0 type: go summary: Package roundrobin defines a roundrobin balancer. homepage: https://pkg.go.dev/google.golang.org/grpc/balancer/roundrobin license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/binarylog/grpc_binarylog_v1.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/binarylog/grpc_binarylog_v1.dep.yml index 266947091..48168942a 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/binarylog/grpc_binarylog_v1.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/binarylog/grpc_binarylog_v1.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/binarylog/grpc_binarylog_v1 -version: v1.75.1 +version: v1.77.0 type: go summary: homepage: https://pkg.go.dev/google.golang.org/grpc/binarylog/grpc_binarylog_v1 license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/channelz.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/channelz.dep.yml index 9578d381b..be3d33d02 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/channelz.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/channelz.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/channelz -version: v1.75.1 +version: v1.77.0 type: go summary: Package channelz exports internals of the channelz implementation as required by other gRPC packages. homepage: https://pkg.go.dev/google.golang.org/grpc/channelz license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/codes.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/codes.dep.yml index 8caec5e66..693a05a49 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/codes.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/codes.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/codes -version: v1.75.1 +version: v1.77.0 type: go summary: Package codes defines the canonical error codes used by gRPC. homepage: https://pkg.go.dev/google.golang.org/grpc/codes license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/connectivity.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/connectivity.dep.yml index f48b6ef98..1ac5edcc1 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/connectivity.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/connectivity.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/connectivity -version: v1.75.1 +version: v1.77.0 type: go summary: Package connectivity defines connectivity semantics. homepage: https://pkg.go.dev/google.golang.org/grpc/connectivity license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/credentials.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/credentials.dep.yml index 0d329fb50..0d76108cb 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/credentials.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/credentials.dep.yml @@ -1,6 +1,6 @@ --- name: google.golang.org/grpc/credentials -version: v1.75.1 +version: v1.77.0 type: go summary: Package credentials implements various credentials supported by gRPC library, which encapsulate all the state needed by a client to authenticate with a server @@ -9,7 +9,7 @@ summary: Package credentials implements various credentials supported by gRPC li homepage: https://pkg.go.dev/google.golang.org/grpc/credentials license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/credentials/insecure.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/credentials/insecure.dep.yml index 082be3137..7b6558a2c 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/credentials/insecure.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/credentials/insecure.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/credentials/insecure -version: v1.75.1 +version: v1.77.0 type: go summary: Package insecure provides an implementation of the credentials.TransportCredentials interface which disables transport security. homepage: https://pkg.go.dev/google.golang.org/grpc/credentials/insecure license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/encoding.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/encoding.dep.yml index 2377f3283..72e071b36 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/encoding.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/encoding.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/encoding -version: v1.75.1 +version: v1.77.0 type: go summary: Package encoding defines the interface for the compressor and codec, and functions to register and retrieve compressors and codecs. homepage: https://pkg.go.dev/google.golang.org/grpc/encoding license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/encoding/gzip.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/encoding/gzip.dep.yml index 660b41372..d8050683f 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/encoding/gzip.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/encoding/gzip.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/encoding/gzip -version: v1.75.1 +version: v1.77.0 type: go summary: Package gzip implements and registers the gzip compressor during the initialization. homepage: https://pkg.go.dev/google.golang.org/grpc/encoding/gzip license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.34.0.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/encoding/internal.dep.yml similarity index 98% rename from .licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.34.0.dep.yml rename to .licenses/arduino-app-cli/go/google.golang.org/grpc/encoding/internal.dep.yml index 096cb06aa..f6f916e2a 100644 --- a/.licenses/arduino-app-cli/go/go.opentelemetry.io/otel/semconv/v1.34.0.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/encoding/internal.dep.yml @@ -1,13 +1,14 @@ --- -name: go.opentelemetry.io/otel/semconv/v1.34.0 -version: v1.37.0 +name: google.golang.org/grpc/encoding/internal +version: v1.77.0 type: go -summary: Package semconv implements OpenTelemetry semantic conventions. -homepage: https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.34.0 +summary: Package internal contains code internal to the encoding package. +homepage: https://pkg.go.dev/google.golang.org/grpc/encoding/internal license: apache-2.0 licenses: -- sources: otel@v1.37.0/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/encoding/proto.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/encoding/proto.dep.yml index 7e094b1c0..d406894ec 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/encoding/proto.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/encoding/proto.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/encoding/proto -version: v1.75.1 +version: v1.77.0 type: go summary: Package proto defines the protobuf codec. homepage: https://pkg.go.dev/google.golang.org/grpc/encoding/proto license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/experimental/stats.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/experimental/stats.dep.yml index 80bdb9c0c..30a11bffd 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/experimental/stats.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/experimental/stats.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/experimental/stats -version: v1.75.1 +version: v1.77.0 type: go summary: Package stats contains experimental metrics/stats API's. homepage: https://pkg.go.dev/google.golang.org/grpc/experimental/stats license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/grpclog.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/grpclog.dep.yml index dab16c589..cac087018 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/grpclog.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/grpclog.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/grpclog -version: v1.75.1 +version: v1.77.0 type: go summary: Package grpclog defines logging for grpc. homepage: https://pkg.go.dev/google.golang.org/grpc/grpclog license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/grpclog/internal.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/grpclog/internal.dep.yml index 0815340e5..f87f7933e 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/grpclog/internal.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/grpclog/internal.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/grpclog/internal -version: v1.75.1 +version: v1.77.0 type: go summary: Package internal contains functionality internal to the grpclog package. homepage: https://pkg.go.dev/google.golang.org/grpc/grpclog/internal license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/health.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/health.dep.yml index c59f6c9d6..d70a1d436 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/health.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/health.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/health -version: v1.75.1 +version: v1.77.0 type: go summary: Package health provides a service that exposes server's health and it must be imported to enable support for client-side health checks. homepage: https://pkg.go.dev/google.golang.org/grpc/health license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/health/grpc_health_v1.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/health/grpc_health_v1.dep.yml index 201447518..d63c346e7 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/health/grpc_health_v1.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/health/grpc_health_v1.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/health/grpc_health_v1 -version: v1.75.1 +version: v1.77.0 type: go summary: homepage: https://pkg.go.dev/google.golang.org/grpc/health/grpc_health_v1 license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal.dep.yml index 81a0006d9..288610ca5 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/internal -version: v1.75.1 +version: v1.77.0 type: go summary: Package internal contains gRPC-internal code, to avoid polluting the godoc of the top-level grpc package. homepage: https://pkg.go.dev/google.golang.org/grpc/internal license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/backoff.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/backoff.dep.yml index ee9228ffe..a1608be3d 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/backoff.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/backoff.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/backoff -version: v1.75.1 +version: v1.77.0 type: go summary: Package backoff implement the backoff strategy for gRPC. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/backoff license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/balancer/gracefulswitch.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/balancer/gracefulswitch.dep.yml index fba608a61..aef873c22 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/balancer/gracefulswitch.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/balancer/gracefulswitch.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/balancer/gracefulswitch -version: v1.75.1 +version: v1.77.0 type: go summary: Package gracefulswitch implements a graceful switch load balancer. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/balancer/gracefulswitch license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/balancerload.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/balancerload.dep.yml index f2493287e..c3d011dca 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/balancerload.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/balancerload.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/balancerload -version: v1.75.1 +version: v1.77.0 type: go summary: Package balancerload defines APIs to parse server loads in trailers. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/balancerload license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/binarylog.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/binarylog.dep.yml index cdcf4fccf..eafe6ca5b 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/binarylog.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/binarylog.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/binarylog -version: v1.75.1 +version: v1.77.0 type: go summary: Package binarylog implementation binary logging as defined in https://github.com/grpc/proposal/blob/master/A16-binary-logging.md. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/binarylog license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/buffer.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/buffer.dep.yml index 2495b47c9..a41ef27c9 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/buffer.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/buffer.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/buffer -version: v1.75.1 +version: v1.77.0 type: go summary: Package buffer provides an implementation of an unbounded buffer. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/buffer license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/channelz.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/channelz.dep.yml index 2affa07b0..62f5b6114 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/channelz.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/channelz.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/internal/channelz -version: v1.75.1 +version: v1.77.0 type: go summary: Package channelz defines internal APIs for enabling channelz service, entry registration/deletion, and accessing channelz data. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/channelz license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/credentials.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/credentials.dep.yml index c0d2ccac1..957f1d1ee 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/credentials.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/credentials.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/credentials -version: v1.75.1 +version: v1.77.0 type: go summary: Package credentials defines APIs for parsing SPIFFE ID. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/credentials license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/envconfig.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/envconfig.dep.yml index c215da2ef..0479e0a55 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/envconfig.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/envconfig.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/envconfig -version: v1.75.1 +version: v1.77.0 type: go summary: Package envconfig contains grpc settings configured by environment variables. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/envconfig license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/grpclog.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/grpclog.dep.yml index a20793235..d732486d0 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/grpclog.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/grpclog.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/internal/grpclog -version: v1.75.1 +version: v1.77.0 type: go summary: Package grpclog provides logging functionality for internal gRPC packages, outside of the functionality provided by the external `grpclog` package. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/grpclog license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/grpcsync.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/grpcsync.dep.yml index 4951758f3..b4d8022cb 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/grpcsync.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/grpcsync.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/internal/grpcsync -version: v1.75.1 +version: v1.77.0 type: go summary: Package grpcsync implements additional synchronization primitives built upon the sync package. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/grpcsync license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/grpcutil.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/grpcutil.dep.yml index 7abc9ab18..39775ac19 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/grpcutil.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/grpcutil.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/grpcutil -version: v1.75.1 +version: v1.77.0 type: go summary: Package grpcutil provides utility functions used across the gRPC codebase. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/grpcutil license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/idle.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/idle.dep.yml index 1aabbad1f..aa6b4ef87 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/idle.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/idle.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/internal/idle -version: v1.75.1 +version: v1.77.0 type: go summary: Package idle contains a component for managing idleness (entering and exiting) based on RPC activity. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/idle license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/metadata.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/metadata.dep.yml index 40b19783a..63cfa8bd3 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/metadata.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/metadata.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/metadata -version: v1.75.1 +version: v1.77.0 type: go summary: Package metadata contains functions to set and get metadata from addresses. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/metadata license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/pretty.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/pretty.dep.yml index f3b480d3e..4a155505d 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/pretty.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/pretty.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/pretty -version: v1.75.1 +version: v1.77.0 type: go summary: Package pretty defines helper functions to pretty-print structs for logging. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/pretty license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/proxyattributes.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/proxyattributes.dep.yml index a6e3f782b..a74de315b 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/proxyattributes.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/proxyattributes.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/internal/proxyattributes -version: v1.75.1 +version: v1.77.0 type: go summary: Package proxyattributes contains functions for getting and setting proxy attributes like the CONNECT address and user info. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/proxyattributes license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver.dep.yml index 2c53a5364..5610ad580 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/resolver -version: v1.75.1 +version: v1.77.0 type: go summary: Package resolver provides internal resolver-related functionality. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/resolver license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/delegatingresolver.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/delegatingresolver.dep.yml index 5402eb167..829a88b19 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/delegatingresolver.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/delegatingresolver.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/internal/resolver/delegatingresolver -version: v1.75.1 +version: v1.77.0 type: go summary: Package delegatingresolver implements a resolver capable of resolving both target URIs and proxy addresses. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/resolver/delegatingresolver license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/dns.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/dns.dep.yml index d1232acc0..3601ea66e 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/dns.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/dns.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/internal/resolver/dns -version: v1.75.1 +version: v1.77.0 type: go summary: Package dns implements a dns resolver to be installed as the default resolver in grpc. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/resolver/dns license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/dns/internal.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/dns/internal.dep.yml index 3990f4b0c..f428a710a 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/dns/internal.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/dns/internal.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/resolver/dns/internal -version: v1.75.1 +version: v1.77.0 type: go summary: Package internal contains functionality internal to the dns resolver package. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/resolver/dns/internal license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/passthrough.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/passthrough.dep.yml index 0ca925d69..1f2ad692e 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/passthrough.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/passthrough.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/resolver/passthrough -version: v1.75.1 +version: v1.77.0 type: go summary: Package passthrough implements a pass-through resolver. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/resolver/passthrough license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/unix.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/unix.dep.yml index 88c8fe980..17f1cc7bd 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/unix.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/resolver/unix.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/resolver/unix -version: v1.75.1 +version: v1.77.0 type: go summary: Package unix implements a resolver for unix targets. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/resolver/unix license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/serviceconfig.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/serviceconfig.dep.yml index eae132b64..d27e9b489 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/serviceconfig.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/serviceconfig.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/serviceconfig -version: v1.75.1 +version: v1.77.0 type: go summary: Package serviceconfig contains utility functions to parse service config. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/serviceconfig license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/stats.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/stats.dep.yml index f98ec2897..e1600fc97 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/stats.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/stats.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/stats -version: v1.75.1 +version: v1.77.0 type: go summary: Package stats provides internal stats related functionality. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/stats license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/status.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/status.dep.yml index 09fd69555..ada06b3ea 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/status.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/status.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/status -version: v1.75.1 +version: v1.77.0 type: go summary: Package status implements errors returned by gRPC. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/status license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/syscall.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/syscall.dep.yml index 5ebdb8d37..b7de69a29 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/syscall.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/syscall.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/internal/syscall -version: v1.75.1 +version: v1.77.0 type: go summary: Package syscall provides functionalities that grpc uses to get low-level operating system stats/info. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/syscall license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/transport.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/transport.dep.yml index ac8249077..4e065b7c3 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/transport.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/transport.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/internal/transport -version: v1.75.1 +version: v1.77.0 type: go summary: Package transport defines and implements message oriented communication channel to complete various transactions (e.g., an RPC). homepage: https://pkg.go.dev/google.golang.org/grpc/internal/transport license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/transport/networktype.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/transport/networktype.dep.yml index cdf31e10a..70c9c22d7 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/transport/networktype.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/internal/transport/networktype.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/internal/transport/networktype -version: v1.75.1 +version: v1.77.0 type: go summary: Package networktype declares the network type to be used in the default dialer. homepage: https://pkg.go.dev/google.golang.org/grpc/internal/transport/networktype license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/keepalive.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/keepalive.dep.yml index c64789c64..6a93a3565 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/keepalive.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/keepalive.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/keepalive -version: v1.75.1 +version: v1.77.0 type: go summary: Package keepalive defines configurable parameters for point-to-point healthcheck. homepage: https://pkg.go.dev/google.golang.org/grpc/keepalive license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/mem.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/mem.dep.yml index 8313a8434..7dc2b9d67 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/mem.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/mem.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/mem -version: v1.75.1 +version: v1.77.0 type: go summary: Package mem provides utilities that facilitate memory reuse in byte slices that are used as buffers. homepage: https://pkg.go.dev/google.golang.org/grpc/mem license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/metadata.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/metadata.dep.yml index ac50ad826..3686b2db2 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/metadata.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/metadata.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/metadata -version: v1.75.1 +version: v1.77.0 type: go summary: Package metadata define the structure of the metadata supported by gRPC library. homepage: https://pkg.go.dev/google.golang.org/grpc/metadata license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/peer.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/peer.dep.yml index e0d765c32..dbcac4cd9 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/peer.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/peer.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/peer -version: v1.75.1 +version: v1.77.0 type: go summary: Package peer defines various peer information associated with RPCs and corresponding utils. homepage: https://pkg.go.dev/google.golang.org/grpc/peer license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/resolver.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/resolver.dep.yml index 112b2bf4f..af4a04c06 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/resolver.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/resolver.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/resolver -version: v1.75.1 +version: v1.77.0 type: go summary: Package resolver defines APIs for name resolution in gRPC. homepage: https://pkg.go.dev/google.golang.org/grpc/resolver license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/resolver/dns.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/resolver/dns.dep.yml index 854d114d9..09ef4e823 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/resolver/dns.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/resolver/dns.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/resolver/dns -version: v1.75.1 +version: v1.77.0 type: go summary: Package dns implements a dns resolver to be installed as the default resolver in grpc. homepage: https://pkg.go.dev/google.golang.org/grpc/resolver/dns license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/serviceconfig.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/serviceconfig.dep.yml index a6998c96a..a4a6a0799 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/serviceconfig.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/serviceconfig.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/serviceconfig -version: v1.75.1 +version: v1.77.0 type: go summary: Package serviceconfig defines types and methods for operating on gRPC service configs. homepage: https://pkg.go.dev/google.golang.org/grpc/serviceconfig license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/stats.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/stats.dep.yml index 3fc605942..6fb67a752 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/stats.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/stats.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/stats -version: v1.75.1 +version: v1.77.0 type: go summary: Package stats is for collecting and reporting various network and RPC stats. homepage: https://pkg.go.dev/google.golang.org/grpc/stats license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/status.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/status.dep.yml index 3665f10c0..236d56d9a 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/status.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/status.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/grpc/status -version: v1.75.1 +version: v1.77.0 type: go summary: Package status implements errors returned by gRPC. homepage: https://pkg.go.dev/google.golang.org/grpc/status license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/grpc/tap.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/grpc/tap.dep.yml index 121f52e83..6d6bd7246 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/grpc/tap.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/grpc/tap.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/grpc/tap -version: v1.75.1 +version: v1.77.0 type: go summary: Package tap defines the function handles which are executed on the transport layer of gRPC-Go and related information. homepage: https://pkg.go.dev/google.golang.org/grpc/tap license: apache-2.0 licenses: -- sources: grpc@v1.75.1/LICENSE +- sources: grpc@v1.77.0/LICENSE text: |2 Apache License diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/encoding/protodelim.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/encoding/protodelim.dep.yml index ecabca7d9..9641ef350 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/encoding/protodelim.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/encoding/protodelim.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/encoding/protodelim -version: v1.36.9 +version: v1.36.10 type: go summary: Package protodelim marshals and unmarshals varint size-delimited messages. homepage: https://pkg.go.dev/google.golang.org/protobuf/encoding/protodelim license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/encoding/protojson.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/encoding/protojson.dep.yml index 40cec7bf2..1363e4417 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/encoding/protojson.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/encoding/protojson.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/protobuf/encoding/protojson -version: v1.36.9 +version: v1.36.10 type: go summary: Package protojson marshals and unmarshals protocol buffer messages as JSON format. homepage: https://pkg.go.dev/google.golang.org/protobuf/encoding/protojson license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/encoding/prototext.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/encoding/prototext.dep.yml index faa08e491..107e701ea 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/encoding/prototext.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/encoding/prototext.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/protobuf/encoding/prototext -version: v1.36.9 +version: v1.36.10 type: go summary: Package prototext marshals and unmarshals protocol buffer messages as the textproto format. homepage: https://pkg.go.dev/google.golang.org/protobuf/encoding/prototext license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/encoding/protowire.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/encoding/protowire.dep.yml index a199d7a0d..802ffb6e0 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/encoding/protowire.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/encoding/protowire.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/encoding/protowire -version: v1.36.9 +version: v1.36.10 type: go summary: Package protowire parses and formats the raw wire encoding. homepage: https://pkg.go.dev/google.golang.org/protobuf/encoding/protowire license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/descfmt.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/descfmt.dep.yml index 7f13c52e8..9d58428cc 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/descfmt.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/descfmt.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/descfmt -version: v1.36.9 +version: v1.36.10 type: go summary: Package descfmt provides functionality to format descriptors. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/descfmt license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/descopts.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/descopts.dep.yml index 3523b1e02..b7b24bec8 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/descopts.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/descopts.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/descopts -version: v1.36.9 +version: v1.36.10 type: go summary: Package descopts contains the nil pointers to concrete descriptor options. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/descopts license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/detrand.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/detrand.dep.yml index 098d051b1..62ccb0c4a 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/detrand.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/detrand.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/detrand -version: v1.36.9 +version: v1.36.10 type: go summary: Package detrand provides deterministically random functionality. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/detrand license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/editiondefaults.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/editiondefaults.dep.yml index 2de75e8a2..a74293025 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/editiondefaults.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/editiondefaults.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/protobuf/internal/editiondefaults -version: v1.36.9 +version: v1.36.10 type: go summary: Package editiondefaults contains the binary representation of the editions defaults. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/editiondefaults license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/editionssupport.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/editionssupport.dep.yml index d48820da0..e4841d968 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/editionssupport.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/editionssupport.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/editionssupport -version: v1.36.9 +version: v1.36.10 type: go summary: Package editionssupport defines constants for editions that are supported. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/editionssupport license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/defval.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/defval.dep.yml index 3b70d4c89..7298ab285 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/defval.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/defval.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/encoding/defval -version: v1.36.9 +version: v1.36.10 type: go summary: Package defval marshals and unmarshals textual forms of default values. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/encoding/defval license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/json.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/json.dep.yml index 2fabc4541..3fe0e2ba2 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/json.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/json.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/encoding/json -version: v1.36.9 +version: v1.36.10 type: go -summary: +summary: homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/encoding/json license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/messageset.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/messageset.dep.yml index e7103e591..31b202a2f 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/messageset.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/messageset.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/encoding/messageset -version: v1.36.9 +version: v1.36.10 type: go summary: Package messageset encodes and decodes the obsolete MessageSet wire format. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/encoding/messageset license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/tag.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/tag.dep.yml index dade75de5..c64c34203 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/tag.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/tag.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/protobuf/internal/encoding/tag -version: v1.36.9 +version: v1.36.10 type: go summary: Package tag marshals and unmarshals the legacy struct tags as generated by historical versions of protoc-gen-go. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/encoding/tag license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/text.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/text.dep.yml index f9bf6fca7..12a80cb8e 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/text.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/encoding/text.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/encoding/text -version: v1.36.9 +version: v1.36.10 type: go summary: Package text implements the text format for protocol buffers. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/encoding/text license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/errors.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/errors.dep.yml index 9203dc297..46e3297fa 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/errors.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/errors.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/errors -version: v1.36.9 +version: v1.36.10 type: go summary: Package errors implements functions to manipulate errors. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/errors license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/filedesc.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/filedesc.dep.yml index c6a346692..6e26e1ce8 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/filedesc.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/filedesc.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/filedesc -version: v1.36.9 +version: v1.36.10 type: go summary: Package filedesc provides functionality for constructing descriptors. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/filedesc license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/filetype.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/filetype.dep.yml index d32dc7328..f9aaf2c77 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/filetype.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/filetype.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/protobuf/internal/filetype -version: v1.36.9 +version: v1.36.10 type: go summary: Package filetype provides functionality for wrapping descriptors with Go type information. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/filetype license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/flags.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/flags.dep.yml index 39dd42eb9..5e24673f8 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/flags.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/flags.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/flags -version: v1.36.9 +version: v1.36.10 type: go summary: Package flags provides a set of flags controlled by build tags. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/flags license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/genid.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/genid.dep.yml index b4192f748..22bd4d65e 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/genid.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/genid.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/protobuf/internal/genid -version: v1.36.9 +version: v1.36.10 type: go summary: Package genid contains constants for declarations in descriptor.proto and the well-known types. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/genid license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/impl.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/impl.dep.yml index 21d7f3f89..83b7a8189 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/impl.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/impl.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/impl -version: v1.36.9 +version: v1.36.10 type: go -summary: +summary: homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/impl license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/order.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/order.dep.yml index 3f673235e..ae1f5e3ff 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/order.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/order.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/order -version: v1.36.9 +version: v1.36.10 type: go summary: Package order provides ordered access to messages and maps. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/order license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/pragma.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/pragma.dep.yml index 4bc16ca12..2c25ae27e 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/pragma.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/pragma.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/protobuf/internal/pragma -version: v1.36.9 +version: v1.36.10 type: go summary: Package pragma provides types that can be embedded into a struct to statically enforce or prevent certain language properties. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/pragma license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/protolazy.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/protolazy.dep.yml index 4b508756f..f859531b7 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/protolazy.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/protolazy.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/protolazy -version: v1.36.9 +version: v1.36.10 type: go summary: Package protolazy contains internal data structures for lazy message decoding. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/protolazy license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/set.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/set.dep.yml index 73e5486dd..deabb98e6 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/set.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/set.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/set -version: v1.36.9 +version: v1.36.10 type: go summary: Package set provides simple set data structures for uint64s. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/set license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/strs.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/strs.dep.yml index ed84ef3ed..9cafac679 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/strs.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/strs.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/strs -version: v1.36.9 +version: v1.36.10 type: go summary: Package strs provides string manipulation functionality specific to protobuf. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/strs license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/version.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/version.dep.yml index d5f22279c..a14b429e8 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/version.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/internal/version.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/internal/version -version: v1.36.9 +version: v1.36.10 type: go summary: Package version records versioning information about this module. homepage: https://pkg.go.dev/google.golang.org/protobuf/internal/version license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/proto.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/proto.dep.yml index 3a1130c34..bc56b9698 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/proto.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/proto.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/proto -version: v1.36.9 +version: v1.36.10 type: go summary: Package proto provides functions operating on protocol buffer messages. homepage: https://pkg.go.dev/google.golang.org/protobuf/proto license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/protoadapt.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/protoadapt.dep.yml index dcf29312e..1c76b545a 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/protoadapt.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/protoadapt.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/protoadapt -version: v1.36.9 +version: v1.36.10 type: go summary: Package protoadapt bridges the original and new proto APIs. homepage: https://pkg.go.dev/google.golang.org/protobuf/protoadapt license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/reflect/protodesc.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/reflect/protodesc.dep.yml index c527d3dc9..d33d258d7 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/reflect/protodesc.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/reflect/protodesc.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/protobuf/reflect/protodesc -version: v1.36.9 +version: v1.36.10 type: go summary: Package protodesc provides functionality for converting FileDescriptorProto messages to/from [protoreflect.FileDescriptor] values. homepage: https://pkg.go.dev/google.golang.org/protobuf/reflect/protodesc license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/reflect/protoreflect.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/reflect/protoreflect.dep.yml index 21c4ecb62..0ed789899 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/reflect/protoreflect.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/reflect/protoreflect.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/reflect/protoreflect -version: v1.36.9 +version: v1.36.10 type: go summary: Package protoreflect provides interfaces to dynamically manipulate messages. homepage: https://pkg.go.dev/google.golang.org/protobuf/reflect/protoreflect license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/reflect/protoregistry.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/reflect/protoregistry.dep.yml index b68737f41..37925fd44 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/reflect/protoregistry.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/reflect/protoregistry.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/protobuf/reflect/protoregistry -version: v1.36.9 +version: v1.36.10 type: go summary: Package protoregistry provides data structures to register and lookup protobuf descriptor types. homepage: https://pkg.go.dev/google.golang.org/protobuf/reflect/protoregistry license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/runtime/protoiface.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/runtime/protoiface.dep.yml index b468a8f45..fa6d5b2d3 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/runtime/protoiface.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/runtime/protoiface.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/runtime/protoiface -version: v1.36.9 +version: v1.36.10 type: go summary: Package protoiface contains types referenced or implemented by messages. homepage: https://pkg.go.dev/google.golang.org/protobuf/runtime/protoiface license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/runtime/protoimpl.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/runtime/protoimpl.dep.yml index 5003b164b..cc4d2211d 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/runtime/protoimpl.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/runtime/protoimpl.dep.yml @@ -1,13 +1,13 @@ --- name: google.golang.org/protobuf/runtime/protoimpl -version: v1.36.9 +version: v1.36.10 type: go summary: Package protoimpl contains the default implementation for messages generated by protoc-gen-go. homepage: https://pkg.go.dev/google.golang.org/protobuf/runtime/protoimpl license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -36,7 +36,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/descriptorpb.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/descriptorpb.dep.yml index 7dc55bd95..a52c539e9 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/descriptorpb.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/descriptorpb.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/types/descriptorpb -version: v1.36.9 +version: v1.36.10 type: go -summary: +summary: homepage: https://pkg.go.dev/google.golang.org/protobuf/types/descriptorpb license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/gofeaturespb.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/gofeaturespb.dep.yml index a0fb59645..f025f25de 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/gofeaturespb.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/gofeaturespb.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/types/gofeaturespb -version: v1.36.9 +version: v1.36.10 type: go -summary: +summary: homepage: https://pkg.go.dev/google.golang.org/protobuf/types/gofeaturespb license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/anypb.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/anypb.dep.yml index 1548fbfdb..d9a998251 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/anypb.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/anypb.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/types/known/anypb -version: v1.36.9 +version: v1.36.10 type: go summary: Package anypb contains generated types for google/protobuf/any.proto. homepage: https://pkg.go.dev/google.golang.org/protobuf/types/known/anypb license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/durationpb.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/durationpb.dep.yml index a4792c2eb..c949c6faf 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/durationpb.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/durationpb.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/types/known/durationpb -version: v1.36.9 +version: v1.36.10 type: go summary: Package durationpb contains generated types for google/protobuf/duration.proto. homepage: https://pkg.go.dev/google.golang.org/protobuf/types/known/durationpb license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/emptypb.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/emptypb.dep.yml index 7220ad2a5..9bcac3ce4 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/emptypb.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/emptypb.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/types/known/emptypb -version: v1.36.9 +version: v1.36.10 type: go -summary: +summary: homepage: https://pkg.go.dev/google.golang.org/protobuf/types/known/emptypb license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/fieldmaskpb.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/fieldmaskpb.dep.yml index 7620d73a0..14ff6cd26 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/fieldmaskpb.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/fieldmaskpb.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/types/known/fieldmaskpb -version: v1.36.9 +version: v1.36.10 type: go summary: Package fieldmaskpb contains generated types for google/protobuf/field_mask.proto. homepage: https://pkg.go.dev/google.golang.org/protobuf/types/known/fieldmaskpb license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/structpb.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/structpb.dep.yml index cc8e37117..b5edbfe30 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/structpb.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/structpb.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/types/known/structpb -version: v1.36.9 +version: v1.36.10 type: go summary: Package structpb contains generated types for google/protobuf/struct.proto. homepage: https://pkg.go.dev/google.golang.org/protobuf/types/known/structpb license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/timestamppb.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/timestamppb.dep.yml index d3abc2a37..793021cde 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/timestamppb.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/timestamppb.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/types/known/timestamppb -version: v1.36.9 +version: v1.36.10 type: go summary: Package timestamppb contains generated types for google/protobuf/timestamp.proto. homepage: https://pkg.go.dev/google.golang.org/protobuf/types/known/timestamppb license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/wrapperspb.dep.yml b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/wrapperspb.dep.yml index b89248c84..3226a02a3 100644 --- a/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/wrapperspb.dep.yml +++ b/.licenses/arduino-app-cli/go/google.golang.org/protobuf/types/known/wrapperspb.dep.yml @@ -1,12 +1,12 @@ --- name: google.golang.org/protobuf/types/known/wrapperspb -version: v1.36.9 +version: v1.36.10 type: go -summary: +summary: homepage: https://pkg.go.dev/google.golang.org/protobuf/types/known/wrapperspb license: bsd-3-clause licenses: -- sources: protobuf@v1.36.9/LICENSE +- sources: protobuf@v1.36.10/LICENSE text: | Copyright (c) 2018 The Go Authors. All rights reserved. @@ -35,7 +35,7 @@ licenses: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: protobuf@v1.36.9/PATENTS +- sources: protobuf@v1.36.10/PATENTS text: | Additional IP Rights Grant (Patents) diff --git a/README.md b/README.md index d3593b17d..0252795af 100644 --- a/README.md +++ b/README.md @@ -1,64 +1,43 @@ # Arduino App CLI -`arduino-app-cli` is a command line tool and a service running on Arduino UNO Q boards, that: +`arduino-app-cli` is a command line tool running on the [Arduino UNO Q](https://docs.arduino.cc/hardware/uno-q/) boards, that manages and runs Arduino Apps (both Linux and microcontroller parts), provides a HTTP daemon mode to expose RestFul APIs, and auto-updates itself and other components. -- manages and runs Arduino Apps on the board (both Linux and microcontroller parts) -- provides multiple APIs to perform actions and fetch data, used by the front-end (ArduinoAppsLab) -- auto-updates itself and other components +[![Test Go status](https://github.com/arduino/arduino-app-cli/actions/workflows/go-test.yml/badge.svg)](https://github.com/arduino/arduino-app-cli/actions/workflows/go-test.yml) -## Environment Variables +## Docs -The following environment variables are used to configure `arduino-app-cli`: +For guidance on installation and development, see the [User documentation]. -### Application Directories +## Quickstart -- **`ARDUINO_APP_CLI__APPS_DIR`** Path to the directory where Arduino Apps created by the user are stored.\ - **Default:** `/home/arduino/ArduinoApps` +// TODO -- **`ARDUINO_APP_CLI__DATA_DIR`** Path to the directory where internal data is stored.\ - **Default:** `/home/arduino/.local/share/arduino-app-cli`\ - This folder contains: - - **`examples/`** default example Apps (_e.g._ `/home/arduino/.local/share/arduino-app-cli/examples`) - - **`assets/`** contains a subfolder for each asset version (_e.g._ `/home/arduino/.local/share/arduino-app-cli/assets/0.4.5`) - - Each asset folder includes: - - `bricks-list.yaml` - - `models-list.yaml` - - **other data** such as `properties.msgpack` containing variable values +## How to contribute -- **`ARDUINO_APP_BRICKS__CUSTOM_MODEL_DIR`** Path to the directory where custom models are stored.\ - **Default:** `$HOME/.arduino-bricks/ei-models`\ - (_e.g._ `/home/arduino/.arduino-bricks/ei-models`) +Contributions are welcome! ---- +Please read the [Contributor Guide] document, which will show you how to build the source code, run the tests, and +contribute your changes to the project. -### Execution Settings +:sparkles: Thanks to all our [contributors]! :sparkles: -- **`ARDUINO_APP_CLI__ALLOW_ROOT`** Allow running `arduino-app-cli` as root.\ - **Default:** `false` **Not recommended to set to true.** +## Security ---- +If you think you found a vulnerability or other security-related bug in the Arduino CLI, please read our [security +policy] and report the bug to our Security Team 🛡️ Thank you! -### External Services +e-mail contact: security@arduino.cc -- **`LIBRARIES_API_URL`** URL of the external service used to search libraries.\ - **Default:** `https://api2.arduino.cc/libraries/v1/libraries` +## License ---- +Arduino App CLI is licensed under the GPL-3.0 license. -### Docker Settings +You can be released from the requirements of the above license by purchasing a commercial license. Buying such a license +is mandatory if you want to modify or otherwise use the software for commercial activities involving the Arduino +software without disclosing the source code of your own applications. To purchase a commercial license, send an email to +license@arduino.cc -- **`DOCKER_REGISTRY_BASE`** Docker registry used to pull images.\ - **Default:** `ghcr.io/arduino/` - -- **`DOCKER_PYTHON_BASE_IMAGE`** Tag of the Docker image for the Python runner.\ - **Default:** `app-bricks/python-apps-base:` - -### App folder and persistent data - -When running an app, persistent files will be saved in the `data` folder inside the app folder; other supporting files, including the Python venv are saved in the `.cache` folder inside the app folder. - -### Docker images registry - -Arduino Apps bricks might required a docker image, in that case the orchestrator will pull those from the registry configured with the `DOCKER_REGISTRY_BASE` environment variable. By default this points to an Arduino GitHub Container Registry (ghcr.io/arduino). - -The only image that needs to be referenced directly is the base Python image (`DOCKER_PYTHON_BASE_IMAGE`), all other containers can be downloaded automatically by the orchestrator depending on the bricks specified as dependencies in the app.yml file. +[user documentation]: docs/user-documentation.md +[contributor guide]: docs/CONTRIBUTING.md +[security policy]: https://github.com/arduino/arduino-app-cli/security/policy +[contributors]: https://github.com/arduino/arduino-app-cli/graphs/contributors diff --git a/Taskfile.yml b/Taskfile.yml index 06e545505..3493dbbda 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -8,8 +8,8 @@ vars: GOLANGCI_LINT_VERSION: v2.4.0 GOIMPORTS_VERSION: v0.29.0 DPRINT_VERSION: 0.48.0 - EXAMPLE_VERSION: "0.5.0" - RUNNER_VERSION: "0.5.0" + EXAMPLE_VERSION: "0.6.0" + RUNNER_VERSION: "0.6.2" VERSION: # if version is not passed we hack the semver by encoding the commit as pre-release sh: echo "${VERSION:-0.0.0-$(git rev-parse --short HEAD)}" @@ -50,9 +50,13 @@ tasks: test:internal: cmds: - - go build ./cmd/arduino-app-cli # needed for e2e tests + - go build ./cmd/arduino-app-cli - task: generate - - go test ./internal/... ./cmd/... -v -race {{ .CLI_ARGS }} + - go test $(go list ./internal/... ./cmd/... | grep -v internal/e2e/updatetest) -v -race {{ .CLI_ARGS }} + + test:update: + cmds: + - go test --timeout 30m -v ./internal/e2e/updatetest test:pkg: desc: Run only tests in the pkg directory @@ -102,9 +106,10 @@ tasks: deps: - build-deb:clone-examples cmds: - - docker build --build-arg BINARY_NAME=arduino-app-cli --build-arg DEB_NAME=arduino-app-cli --build-arg VERSION={{ .VERSION }} --build-arg ARCH={{ .ARCH }} --build-arg RELEASE={{ .RELEASE }} --output=./build -f debian/Dockerfile . + - docker build --build-arg BINARY_NAME=arduino-app-cli --build-arg DEB_NAME=arduino-app-cli --build-arg VERSION={{ .VERSION }} --build-arg ARCH={{ .ARCH }} --build-arg RELEASE={{ .RELEASE }} --output={{ .OUTPUT }} -f debian/Dockerfile . vars: ARCH: '{{.ARCH | default "arm64"}}' + OUTPUT: '{{.OUTPUT | default "./build"}}' build-deb:clone-examples: desc: "Clones the examples repo directly into the debian structure" @@ -114,7 +119,7 @@ tasks: echo "Runner version set as: {{ .EXAMPLE_VERSION }}" TMP_PATH="$(mktemp -d)" DEST_PATH="debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/" - echo "Cloning arduino/app-bricks-example into temporary directory ${TMP_PATH}..." + echo "Cloning arduino/app-bricks-examples into temporary directory ${TMP_PATH}..." git clone --depth 1 --branch "{{ .EXAMPLE_VERSION }}" https://github.com/arduino/app-bricks-examples "${TMP_PATH}" rm -rf "${DEST_PATH}/examples" mkdir -p "${DEST_PATH}" @@ -123,11 +128,17 @@ tasks: echo "Examples successfully cloned." silent: false - arduino-app-cli:build:local: + build: desc: "Build the arduino-app-cli locally" cmds: - go build -v -o ./build/arduino-app-cli ./cmd/arduino-app-cli + start: + desc: "build and launch the arduino-app-cli in daemon mode" + cmds: + - task build + - ./build/arduino-app-cli daemon --port 8800 + arduino-app-cli:release: desc: Create a tag on the current commit and push it to the remote to create the release cmds: @@ -139,12 +150,6 @@ tasks: - git tag -a "{{.CLI_ARGS}}" -m "Release {{.CLI_ARGS}}" - git push origin "{{.CLI_ARGS}}" - arduino-app-cli:start: - desc: "build and launch the arduino-app-cli in daemon mode" - cmds: - - task arduino-app-cli:build:local - - ./build/arduino-app-cli daemon --port 6060 - # To to forward a port, using ssh, you can use this command: # ssh -L 8800:localhost:8800 arduino@ arduino-app-cli:pprof: @@ -167,7 +172,7 @@ tasks: cmds: - docker rm -f adbd - board:install-arduino-app-cli: + board:install: desc: Install arduino-app-cli on the board interactive: true cmds: @@ -190,7 +195,7 @@ tasks: TMP_PATH="$(mktemp -d)" echo "Cloning examples into temporary directory ${TMP_PATH}..." - git clone --depth 1 https://github.com/arduino/app-bricks-example.git "${TMP_PATH}" + git clone --depth 1 https://github.com/arduino/app-bricks-examples.git "${TMP_PATH}" echo "Installing examples to ${DEST_PATH}examples" rm -rf "${DEST_PATH}examples" diff --git a/adbd.Dockerfile b/adbd.Dockerfile index 75826958d..e658b9b41 100644 --- a/adbd.Dockerfile +++ b/adbd.Dockerfile @@ -1,7 +1,7 @@ FROM debian:trixie RUN apt-get update \ - && apt-get install -y --no-install-recommends adbd file ssh sudo \ + && apt-get install -y --no-install-recommends adbd file ssh sudo netcat-traditional \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* @@ -10,7 +10,9 @@ RUN useradd -m --create-home --shell /bin/bash --user-group --groups sudo arduin mkdir /home/arduino/ArduinoApps && \ chown -R arduino:arduino /home/arduino/ArduinoApps +ADD scripts/pong-server.sh /usr/local/bin/pong-server.sh + WORKDIR /home/arduino EXPOSE 22 -CMD ["/bin/sh", "-c", "/usr/sbin/sshd -D & su arduino -c adbd"] +CMD ["/bin/sh", "-c", "/usr/sbin/sshd -D & su arduino -c adbd & pong-server.sh"] diff --git a/cmd/arduino-app-cli/app/app.go b/cmd/arduino-app-cli/app/app.go index 3d6b63416..48c98c7a2 100644 --- a/cmd/arduino-app-cli/app/app.go +++ b/cmd/arduino-app-cli/app/app.go @@ -38,8 +38,7 @@ func NewAppCmd(cfg config.Configuration) *cobra.Command { appCmd.AddCommand(newRestartCmd(cfg)) appCmd.AddCommand(newLogsCmd(cfg)) appCmd.AddCommand(newListCmd(cfg)) - appCmd.AddCommand(newPsCmd()) - appCmd.AddCommand(newMonitorCmd(cfg)) + appCmd.AddCommand(newCacheCleanCmd(cfg)) return appCmd } @@ -50,5 +49,5 @@ func Load(idOrPath string) (app.ArduinoApp, error) { return app.ArduinoApp{}, fmt.Errorf("invalid app path: %s", idOrPath) } - return app.Load(id.ToPath().String()) + return app.Load(id.ToPath()) } diff --git a/cmd/arduino-app-cli/app/clean.go b/cmd/arduino-app-cli/app/clean.go new file mode 100644 index 000000000..adef29c81 --- /dev/null +++ b/cmd/arduino-app-cli/app/clean.go @@ -0,0 +1,65 @@ +package app + +import ( + "context" + "fmt" + + "github.com/spf13/cobra" + + "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/completion" + "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/internal/servicelocator" + "github.com/arduino/arduino-app-cli/cmd/feedback" + "github.com/arduino/arduino-app-cli/internal/orchestrator" + "github.com/arduino/arduino-app-cli/internal/orchestrator/app" + "github.com/arduino/arduino-app-cli/internal/orchestrator/config" +) + +func newCacheCleanCmd(cfg config.Configuration) *cobra.Command { + var forceClean bool + appCmd := &cobra.Command{ + Use: "clean-cache ", + Short: "Delete app cache", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + app, err := Load(args[0]) + if err != nil { + return err + } + return cacheCleanHandler(cmd.Context(), app, forceClean) + }, + ValidArgsFunction: completion.ApplicationNames(cfg), + } + appCmd.Flags().BoolVarP(&forceClean, "force", "", false, "Forcefully clean the cache even if the app is running") + + return appCmd +} + +func cacheCleanHandler(ctx context.Context, app app.ArduinoApp, forceClean bool) error { + err := orchestrator.CleanAppCache( + ctx, + servicelocator.GetDockerClient(), + app, + orchestrator.CleanAppCacheRequest{ForceClean: forceClean}, + ) + if err != nil { + feedback.Fatal(err.Error(), feedback.ErrGeneric) + } + feedback.PrintResult(cacheCleanResult{ + AppName: app.Name, + Path: app.ProvisioningStateDir().String(), + }) + return nil +} + +type cacheCleanResult struct { + AppName string `json:"appName"` + Path string `json:"path"` +} + +func (r cacheCleanResult) String() string { + return fmt.Sprintf("✓ Cache of %q App cleaned", r.AppName) +} + +func (r cacheCleanResult) Data() interface{} { + return r +} diff --git a/cmd/arduino-app-cli/app/new.go b/cmd/arduino-app-cli/app/new.go index 066f9a7b7..fec533b90 100644 --- a/cmd/arduino-app-cli/app/new.go +++ b/cmd/arduino-app-cli/app/new.go @@ -32,7 +32,6 @@ func newCreateCmd(cfg config.Configuration) *cobra.Command { icon string description string bricks []string - noPyton bool noSketch bool fromApp string ) @@ -44,7 +43,7 @@ func newCreateCmd(cfg config.Configuration) *cobra.Command { RunE: func(cmd *cobra.Command, args []string) error { cobra.MinimumNArgs(1) name := args[0] - return createHandler(cmd.Context(), cfg, name, icon, description, noPyton, noSketch, fromApp) + return createHandler(cmd.Context(), cfg, name, icon, description, noSketch, fromApp) }, } @@ -52,14 +51,12 @@ func newCreateCmd(cfg config.Configuration) *cobra.Command { cmd.Flags().StringVarP(&description, "description", "d", "", "Description for the app") cmd.Flags().StringVarP(&fromApp, "from-app", "", "", "Create the new app from the path of an existing app") cmd.Flags().StringArrayVarP(&bricks, "bricks", "b", []string{}, "List of bricks to include in the app") - cmd.Flags().BoolVarP(&noPyton, "no-python", "", false, "Do not include Python files") cmd.Flags().BoolVarP(&noSketch, "no-sketch", "", false, "Do not include Sketch files") - cmd.MarkFlagsMutuallyExclusive("no-python", "no-sketch") return cmd } -func createHandler(ctx context.Context, cfg config.Configuration, name string, icon string, description string, noPython, noSketch bool, fromApp string) error { +func createHandler(ctx context.Context, cfg config.Configuration, name string, icon string, description string, noSketch bool, fromApp string) error { if fromApp != "" { id, err := servicelocator.GetAppIDProvider().ParseID(fromApp) if err != nil { @@ -88,7 +85,6 @@ func createHandler(ctx context.Context, cfg config.Configuration, name string, i Name: name, Icon: icon, Description: description, - SkipPython: noPython, SkipSketch: noSketch, }, servicelocator.GetAppIDProvider(), cfg) if err != nil { diff --git a/cmd/arduino-app-cli/app/ps.go b/cmd/arduino-app-cli/app/ps.go deleted file mode 100644 index 6549b2b9f..000000000 --- a/cmd/arduino-app-cli/app/ps.go +++ /dev/null @@ -1,30 +0,0 @@ -// This file is part of arduino-app-cli. -// -// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-app-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package app - -import ( - "github.com/spf13/cobra" -) - -func newPsCmd() *cobra.Command { - return &cobra.Command{ - Use: "ps", - Short: "Shows the list of running Arduino Apps", - RunE: func(cmd *cobra.Command, args []string) error { - panic("not implemented") - }, - } -} diff --git a/cmd/arduino-app-cli/app/restart.go b/cmd/arduino-app-cli/app/restart.go index 3462a9a50..892f108f9 100644 --- a/cmd/arduino-app-cli/app/restart.go +++ b/cmd/arduino-app-cli/app/restart.go @@ -16,10 +16,18 @@ package app import ( + "context" + "fmt" + "github.com/spf13/cobra" + "golang.org/x/text/cases" + "golang.org/x/text/language" "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/completion" + "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/internal/servicelocator" "github.com/arduino/arduino-app-cli/cmd/feedback" + "github.com/arduino/arduino-app-cli/internal/orchestrator" + "github.com/arduino/arduino-app-cli/internal/orchestrator/app" "github.com/arduino/arduino-app-cli/internal/orchestrator/config" ) @@ -32,17 +40,63 @@ func newRestartCmd(cfg config.Configuration) *cobra.Command { if len(args) == 0 { return cmd.Help() } - app, err := Load(args[0]) + appToStart, err := Load(args[0]) if err != nil { feedback.Fatal(err.Error(), feedback.ErrBadArgument) - return nil - } - if err := stopHandler(cmd.Context(), app); err != nil { - feedback.Warnf("failed to stop app: %s", err.Error()) } - return startHandler(cmd.Context(), cfg, app) + return restartHandler(cmd.Context(), cfg, appToStart) }, ValidArgsFunction: completion.ApplicationNames(cfg), } return cmd } + +func restartHandler(ctx context.Context, cfg config.Configuration, app app.ArduinoApp) error { + out, _, getResult := feedback.OutputStreams() + + stream := orchestrator.RestartApp( + ctx, + servicelocator.GetDockerClient(), + servicelocator.GetProvisioner(), + servicelocator.GetModelsIndex(), + servicelocator.GetBricksIndex(), + app, + cfg, + servicelocator.GetStaticStore(), + ) + for message := range stream { + switch message.GetType() { + case orchestrator.ProgressType: + fmt.Fprintf(out, "Progress[%s]: %.0f%%\n", message.GetProgress().Name, message.GetProgress().Progress) + case orchestrator.InfoType: + fmt.Fprintln(out, "[INFO]", message.GetData()) + case orchestrator.ErrorType: + errMesg := cases.Title(language.AmericanEnglish).String(message.GetError().Error()) + feedback.Fatal(fmt.Sprintf("[ERROR] %s", errMesg), feedback.ErrGeneric) + return nil + } + } + + outputResult := getResult() + feedback.PrintResult(restartAppResult{ + AppName: app.Name, + Status: "restarted", + Output: outputResult, + }) + + return nil +} + +type restartAppResult struct { + AppName string `json:"app_name"` + Status string `json:"status"` + Output *feedback.OutputStreamsResult `json:"output,omitempty"` +} + +func (r restartAppResult) String() string { + return fmt.Sprintf("✓ App %q restarted successfully", r.AppName) +} + +func (r restartAppResult) Data() interface{} { + return r +} diff --git a/cmd/arduino-app-cli/app/stop.go b/cmd/arduino-app-cli/app/stop.go index debf40e7e..eff55dbd0 100644 --- a/cmd/arduino-app-cli/app/stop.go +++ b/cmd/arduino-app-cli/app/stop.go @@ -22,6 +22,7 @@ import ( "github.com/spf13/cobra" "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/completion" + "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/internal/servicelocator" "github.com/arduino/arduino-app-cli/cmd/feedback" "github.com/arduino/arduino-app-cli/internal/orchestrator" "github.com/arduino/arduino-app-cli/internal/orchestrator/app" @@ -53,7 +54,7 @@ func newStopCmd(cfg config.Configuration) *cobra.Command { func stopHandler(ctx context.Context, app app.ArduinoApp) error { out, _, getResult := feedback.OutputStreams() - for message := range orchestrator.StopApp(ctx, app) { + for message := range orchestrator.StopApp(ctx, servicelocator.GetDockerClient(), app) { switch message.GetType() { case orchestrator.ProgressType: fmt.Fprintf(out, "Progress[%s]: %.0f%%\n", message.GetProgress().Name, message.GetProgress().Progress) diff --git a/cmd/arduino-app-cli/board/board.go b/cmd/arduino-app-cli/board/board.go deleted file mode 100644 index 98b3c04b5..000000000 --- a/cmd/arduino-app-cli/board/board.go +++ /dev/null @@ -1,306 +0,0 @@ -// This file is part of arduino-app-cli. -// -// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-app-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package board - -import ( - "context" - "fmt" - "os" - "strconv" - - "github.com/spf13/cobra" - "golang.org/x/term" - - "github.com/arduino/arduino-app-cli/cmd/feedback" - "github.com/arduino/arduino-app-cli/pkg/board" - "github.com/arduino/arduino-app-cli/pkg/board/remote" - "github.com/arduino/arduino-app-cli/pkg/board/remote/adb" -) - -type contextKey string - -const remoteConnKey contextKey = "remoteConn" -const boardsListKey contextKey = "boardsList" - -func NewBoardCmd() *cobra.Command { - var fqbn, host string - fsCmd := &cobra.Command{ - Use: "board", - Short: "Manage boards", - Long: "", - Hidden: true, - PersistentPreRunE: func(cmd *cobra.Command, args []string) error { - if host != "" { - conn, err := adb.FromHost(host, "") - if err != nil { - panic(fmt.Errorf("failed to connect to ADB host %s: %w", host, err)) - } - cmd.SetContext(context.WithValue(cmd.Context(), remoteConnKey, conn)) - return nil - } - - boards, err := board.FromFQBN(cmd.Context(), fqbn) - if err != nil { - return fmt.Errorf("failed to get boards for FQBN %s: %w", fqbn, err) - } - if len(boards) == 0 { - return fmt.Errorf("no boards found for FQBN %s", fqbn) - } - conn, err := boards[0].GetConnection() - if err != nil { - return fmt.Errorf("failed to connect to board %s: %w", boards[0].BoardName, err) - } - - cmd.SetContext(context.WithValue(cmd.Context(), remoteConnKey, conn)) - cmd.SetContext(context.WithValue(cmd.Context(), boardsListKey, boards)) - return nil - }, - } - fsCmd.PersistentFlags().StringVarP(&fqbn, "fqbn", "b", "arduino:zephyr:unoq", "fqbn of the board") - fsCmd.PersistentFlags().StringVar(&host, "host", "", "ADB host address") - - fsCmd.AddCommand(newBoardListCmd()) - fsCmd.AddCommand(newBoardSetName()) - fsCmd.AddCommand(newSetPasswordCmd()) - fsCmd.AddCommand(newEnableNetworkModeCmd()) - fsCmd.AddCommand(newDisableNetworkModeCmd()) - fsCmd.AddCommand(newNetworkModeStatusCmd()) - - fsCmd.AddCommand(listKeyboardLayouts()) - fsCmd.AddCommand(getKeyboardLayout()) - fsCmd.AddCommand(setKeyboardLayout()) - - return fsCmd -} - -func newBoardListCmd() *cobra.Command { - listCmd := &cobra.Command{ - Use: "list", - Short: "List available boards", - RunE: func(cmd *cobra.Command, args []string) error { - boards := cmd.Context().Value(boardsListKey).([]board.Board) - for _, b := range boards { - - var address, configured string - switch b.Protocol { - case board.SerialProtocol, board.LocalProtocol: - address = b.Serial - - if conn, err := b.GetConnection(); err != nil { - return fmt.Errorf("failed to connect to board %s: %w", b.BoardName, err) - } else { - if s, err := board.IsUserPasswordSet(conn); err != nil { - return fmt.Errorf("failed to check if user password is set: %w", err) - } else { - configured = "- Configured: " + strconv.FormatBool(s) - } - } - case board.NetworkProtocol: - address = b.Address - default: - panic("unreachable") - } - - feedback.Printf("%s (%s) - Connection: %s [%s] %s\n", b.BoardName, b.CustomName, b.Protocol, address, configured) - } - return nil - }, - } - - return listCmd -} - -func newBoardSetName() *cobra.Command { - setNameCmd := &cobra.Command{ - Use: "set-name ", - Short: "Set the custom name of the board", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - conn := cmd.Context().Value(remoteConnKey).(remote.RemoteConn) - name := args[0] - - if err := board.SetCustomName(cmd.Context(), conn, name); err != nil { - return fmt.Errorf("failed to set custom name: %w", err) - } - feedback.Printf("Custom name set to %q\n", name) - return nil - }, - } - - return setNameCmd -} - -func newSetPasswordCmd() *cobra.Command { - return &cobra.Command{ - Use: "set-password", - Short: "Set the user password of the board", - Args: cobra.ExactArgs(0), - RunE: func(cmd *cobra.Command, args []string) error { - conn := cmd.Context().Value(remoteConnKey).(remote.RemoteConn) - - feedback.Print("Enter new password: ") - // TODO: fix for not interactive terminal - password, err := term.ReadPassword(int(os.Stdin.Fd())) // nolint:forbidigo - if err != nil { - return fmt.Errorf("failed to read password: %w", err) - } - - if err := board.SetUserPassword(cmd.Context(), conn, string(password)); err != nil { - return fmt.Errorf("failed to set user password: %w", err) - } - - feedback.Printf("User password set\n") - return nil - }, - } -} - -func newEnableNetworkModeCmd() *cobra.Command { - return &cobra.Command{ - Use: "enable-ssh", - Short: "Enable and start the SSH service on the board", - Args: cobra.ExactArgs(0), - RunE: func(cmd *cobra.Command, args []string) error { - conn := cmd.Context().Value(remoteConnKey).(remote.RemoteConn) - - if err := board.EnableNetworkMode(cmd.Context(), conn); err != nil { - return fmt.Errorf("failed to enable SSH: %w", err) - } - - feedback.Printf("SSH service enabled and started\n") - return nil - }, - } -} - -func newDisableNetworkModeCmd() *cobra.Command { - return &cobra.Command{ - Use: "disable-ssh", - Short: "Disable and stop the SSH service on the board", - Args: cobra.ExactArgs(0), - RunE: func(cmd *cobra.Command, args []string) error { - conn := cmd.Context().Value(remoteConnKey).(remote.RemoteConn) - - if err := board.DisableNetworkMode(cmd.Context(), conn); err != nil { - return fmt.Errorf("failed to disable SSH: %w", err) - } - - feedback.Printf("SSH service disabled and stopped\n") - return nil - }, - } -} - -func newNetworkModeStatusCmd() *cobra.Command { - return &cobra.Command{ - Use: "status-ssh", - Short: "Check the status of the network mode on the board", - Args: cobra.ExactArgs(0), - RunE: func(cmd *cobra.Command, args []string) error { - conn := cmd.Context().Value(remoteConnKey).(remote.RemoteConn) - - isEnabled, err := board.NetworkModeStatus(cmd.Context(), conn) - if err != nil { - return fmt.Errorf("failed to check network mode status: %w", err) - } - - feedback.Printf("Network mode is %s\n", map[bool]string{true: "enabled", false: "disabled"}[isEnabled]) - return nil - }, - } -} - -func getKeyboardLayout() *cobra.Command { - return &cobra.Command{ - Use: "get-keyboard-layout", - Short: "Returns the current system keyboard layout code", - Args: cobra.ExactArgs(0), - RunE: func(cmd *cobra.Command, args []string) error { - conn := cmd.Context().Value(remoteConnKey).(remote.RemoteConn) - - layoutCode, err := board.GetKeyboardLayout(cmd.Context(), conn) - if err != nil { - return fmt.Errorf("failed: %w", err) - } - feedback.Printf("Layout: %s", layoutCode) - - return nil - }, - } -} - -func setKeyboardLayout() *cobra.Command { - return &cobra.Command{ - Use: "set-keyboard-layout ", - Short: "Saves and applies the current system keyboard layout", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - conn := cmd.Context().Value(remoteConnKey).(remote.RemoteConn) - layoutCode := args[0] - - err := validateKeyboardLayoutCode(conn, layoutCode) - if err != nil { - return fmt.Errorf("failed: %w", err) - } - - err = board.SetKeyboardLayout(cmd.Context(), conn, layoutCode) - if err != nil { - return fmt.Errorf("failed: %w", err) - } - - feedback.Printf("New layout applied: %s", layoutCode) - return nil - }, - } -} - -func validateKeyboardLayoutCode(conn remote.RemoteConn, layoutCode string) error { - // Make sure the input layout code is in the list of valid ones - layouts, err := board.ListKeyboardLayouts(conn) - if err != nil { - return fmt.Errorf("failed to fetch valid layouts: %w", err) - } - - for _, layout := range layouts { - if layout.LayoutId == layoutCode { - return nil - } - } - - return fmt.Errorf("invalid layout code: %s", layoutCode) -} - -func listKeyboardLayouts() *cobra.Command { - return &cobra.Command{ - Use: "list-keyboard-layouts", - Short: "Returns the list of valid keyboard layouts, with a description", - Args: cobra.ExactArgs(0), - RunE: func(cmd *cobra.Command, args []string) error { - conn := cmd.Context().Value(remoteConnKey).(remote.RemoteConn) - - layouts, err := board.ListKeyboardLayouts(conn) - if err != nil { - return fmt.Errorf("failed: %w", err) - } - - for _, layout := range layouts { - feedback.Printf("%s, %s", layout.LayoutId, layout.Description) - } - - return nil - }, - } -} diff --git a/cmd/arduino-app-cli/brick/bricks.go b/cmd/arduino-app-cli/brick/bricks.go index 692552cc3..74dd3a3af 100644 --- a/cmd/arduino-app-cli/brick/bricks.go +++ b/cmd/arduino-app-cli/brick/bricks.go @@ -17,16 +17,18 @@ package brick import ( "github.com/spf13/cobra" + + "github.com/arduino/arduino-app-cli/internal/orchestrator/config" ) -func NewBrickCmd() *cobra.Command { +func NewBrickCmd(cfg config.Configuration) *cobra.Command { appCmd := &cobra.Command{ Use: "brick", Short: "Manage Arduino Bricks", } appCmd.AddCommand(newBricksListCmd()) - appCmd.AddCommand(newBricksDetailsCmd()) + appCmd.AddCommand(newBricksDetailsCmd(cfg)) return appCmd } diff --git a/cmd/arduino-app-cli/brick/details.go b/cmd/arduino-app-cli/brick/details.go index fe0250781..e898c9a0f 100644 --- a/cmd/arduino-app-cli/brick/details.go +++ b/cmd/arduino-app-cli/brick/details.go @@ -22,24 +22,28 @@ import ( "github.com/spf13/cobra" + "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/completion" "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/internal/servicelocator" "github.com/arduino/arduino-app-cli/cmd/feedback" "github.com/arduino/arduino-app-cli/internal/orchestrator/bricks" + "github.com/arduino/arduino-app-cli/internal/orchestrator/config" ) -func newBricksDetailsCmd() *cobra.Command { +func newBricksDetailsCmd(cfg config.Configuration) *cobra.Command { return &cobra.Command{ Use: "details", Short: "Details of a specific brick", Args: cobra.ExactArgs(1), Run: func(cmd *cobra.Command, args []string) { - bricksDetailsHandler(args[0]) + bricksDetailsHandler(args[0], cfg) }, + ValidArgsFunction: completion.BrickIDs(), } } -func bricksDetailsHandler(id string) { - res, err := servicelocator.GetBrickService().BricksDetails(id) +func bricksDetailsHandler(id string, cfg config.Configuration) { + res, err := servicelocator.GetBrickService().BricksDetails(id, servicelocator.GetAppIDProvider(), + cfg) if err != nil { if errors.Is(err, bricks.ErrBrickNotFound) { feedback.Fatal(err.Error(), feedback.ErrBadArgument) diff --git a/cmd/arduino-app-cli/completion/completion.go b/cmd/arduino-app-cli/completion/completion.go index 418f9a3e0..ae2222014 100644 --- a/cmd/arduino-app-cli/completion/completion.go +++ b/cmd/arduino-app-cli/completion/completion.go @@ -24,6 +24,7 @@ import ( "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/internal/servicelocator" "github.com/arduino/arduino-app-cli/cmd/feedback" "github.com/arduino/arduino-app-cli/internal/orchestrator" + "github.com/arduino/arduino-app-cli/internal/orchestrator/bricks" "github.com/arduino/arduino-app-cli/internal/orchestrator/config" ) @@ -97,3 +98,24 @@ func ApplicationNamesWithFilterFunc(cfg config.Configuration, filter func(apps o return res, cobra.ShellCompDirectiveNoFileComp } } + +func BrickIDs() cobra.CompletionFunc { + return BrickIDsWithFilterFunc(func(_ bricks.BrickListItem) bool { return true }) +} + +func BrickIDsWithFilterFunc(filter func(apps bricks.BrickListItem) bool) cobra.CompletionFunc { + return func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + brickList, err := servicelocator.GetBrickService().List() + if err != nil { + return nil, cobra.ShellCompDirectiveError + } + + var res []string + for _, brick := range brickList.Bricks { + if filter(brick) { + res = append(res, brick.ID) + } + } + return res, cobra.ShellCompDirectiveNoFileComp + } +} diff --git a/cmd/arduino-app-cli/config/config.go b/cmd/arduino-app-cli/config/config.go index 635ad2bd7..f6367fd31 100644 --- a/cmd/arduino-app-cli/config/config.go +++ b/cmd/arduino-app-cli/config/config.go @@ -29,7 +29,7 @@ import ( func NewConfigCmd(cfg config.Configuration) *cobra.Command { appCmd := &cobra.Command{ Use: "config", - Short: "Manage arduino-app-cli config", + Short: "Manage Arduino App CLI config", } appCmd.AddCommand(newConfigGetCmd(cfg)) diff --git a/cmd/arduino-app-cli/daemon/daemon.go b/cmd/arduino-app-cli/daemon/daemon.go index f96a4e0ce..eeac105c5 100644 --- a/cmd/arduino-app-cli/daemon/daemon.go +++ b/cmd/arduino-app-cli/daemon/daemon.go @@ -38,7 +38,7 @@ import ( func NewDaemonCmd(cfg config.Configuration, version string) *cobra.Command { daemonCmd := &cobra.Command{ Use: "daemon", - Short: "Run an HTTP server to expose arduino-app-cli functionality through REST API", + Short: "Run the Arduino App CLI as an HTTP daemon", Run: func(cmd *cobra.Command, args []string) { daemonPort, _ := cmd.Flags().GetString("port") diff --git a/cmd/arduino-app-cli/internal/servicelocator/servicelocator.go b/cmd/arduino-app-cli/internal/servicelocator/servicelocator.go index edcd721dc..22cbc58b8 100644 --- a/cmd/arduino-app-cli/internal/servicelocator/servicelocator.go +++ b/cmd/arduino-app-cli/internal/servicelocator/servicelocator.go @@ -42,11 +42,11 @@ func Init(cfg config.Configuration) { var ( GetBricksIndex = sync.OnceValue(func() *bricksindex.BricksIndex { - return f.Must(bricksindex.GenerateBricksIndexFromFile(GetStaticStore().GetAssetsFolder())) + return f.Must(bricksindex.Load(GetStaticStore().GetAssetsFolder())) }) GetModelsIndex = sync.OnceValue(func() *modelsindex.ModelsIndex { - return f.Must(modelsindex.GenerateModelsIndexFromFile(GetStaticStore().GetAssetsFolder())) + return f.Must(modelsindex.Load(GetStaticStore().GetAssetsFolder())) }) GetProvisioner = sync.OnceValue(func() *orchestrator.Provision { diff --git a/cmd/arduino-app-cli/main.go b/cmd/arduino-app-cli/main.go index 4df37ca86..849e4178c 100644 --- a/cmd/arduino-app-cli/main.go +++ b/cmd/arduino-app-cli/main.go @@ -25,12 +25,12 @@ import ( "go.bug.st/cleanup" "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/app" - "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/board" "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/brick" "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/completion" "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/config" "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/daemon" "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/internal/servicelocator" + "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/monitor" "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/properties" "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/system" "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/version" @@ -49,7 +49,7 @@ func run(configuration cfg.Configuration) error { defer func() { _ = servicelocator.CloseDockerClient() }() rootCmd := &cobra.Command{ Use: "arduino-app-cli", - Short: "A CLI to manage the Python app", + Short: "A CLI to manage Arduino Apps", PersistentPreRun: func(cmd *cobra.Command, args []string) { format, ok := feedback.ParseOutputFormat(format) if !ok { @@ -72,14 +72,14 @@ func run(configuration cfg.Configuration) error { rootCmd.AddCommand( app.NewAppCmd(configuration), - brick.NewBrickCmd(), + brick.NewBrickCmd(configuration), completion.NewCompletionCommand(), daemon.NewDaemonCmd(configuration, Version), properties.NewPropertiesCmd(configuration), config.NewConfigCmd(configuration), system.NewSystemCmd(configuration), - board.NewBoardCmd(), version.NewVersionCmd(Version), + monitor.NewMonitorCmd(), ) ctx := context.Background() diff --git a/cmd/arduino-app-cli/app/monitor.go b/cmd/arduino-app-cli/monitor/monitor.go similarity index 51% rename from cmd/arduino-app-cli/app/monitor.go rename to cmd/arduino-app-cli/monitor/monitor.go index cdf057e1a..df6946e60 100644 --- a/cmd/arduino-app-cli/app/monitor.go +++ b/cmd/arduino-app-cli/monitor/monitor.go @@ -13,22 +13,51 @@ // Arduino software without disclosing the source code of your own applications. // To purchase a commercial license, send an email to license@arduino.cc. -package app +package monitor import ( + "io" + "os" + "github.com/spf13/cobra" - "github.com/arduino/arduino-app-cli/cmd/arduino-app-cli/completion" - "github.com/arduino/arduino-app-cli/internal/orchestrator/config" + "github.com/arduino/arduino-app-cli/cmd/feedback" + "github.com/arduino/arduino-app-cli/internal/monitor" ) -func newMonitorCmd(cfg config.Configuration) *cobra.Command { +func NewMonitorCmd() *cobra.Command { return &cobra.Command{ Use: "monitor", - Short: "Monitor the Arduino app", + Short: "Attach to the microcontroller serial monitor", RunE: func(cmd *cobra.Command, args []string) error { - panic("not implemented") + stdout, _, err := feedback.DirectStreams() + if err != nil { + return err + } + start, err := monitor.NewMonitorHandler(&combinedReadWrite{r: os.Stdin, w: stdout}) // nolint:forbidigo + if err != nil { + return err + } + go start() + <-cmd.Context().Done() + return nil }, - ValidArgsFunction: completion.ApplicationNames(cfg), } } + +type combinedReadWrite struct { + r io.Reader + w io.Writer +} + +func (crw *combinedReadWrite) Read(p []byte) (n int, err error) { + return crw.r.Read(p) +} + +func (crw *combinedReadWrite) Write(p []byte) (n int, err error) { + return crw.w.Write(p) +} + +func (crw *combinedReadWrite) Close() error { + return nil +} diff --git a/cmd/arduino-app-cli/system/system.go b/cmd/arduino-app-cli/system/system.go index 6297797fa..c23d5317e 100644 --- a/cmd/arduino-app-cli/system/system.go +++ b/cmd/arduino-app-cli/system/system.go @@ -37,19 +37,21 @@ import ( func NewSystemCmd(cfg config.Configuration) *cobra.Command { cmd := &cobra.Command{ - Use: "system", + Use: "system", + Short: "Manage the board’s system configuration", } - cmd.AddCommand(newDownloadImage(cfg)) + cmd.AddCommand(newDownloadImageCmd(cfg)) cmd.AddCommand(newUpdateCmd()) cmd.AddCommand(newCleanUpCmd(cfg, servicelocator.GetDockerClient())) - cmd.AddCommand(newNetworkMode()) - cmd.AddCommand(newkeyboardSet()) + cmd.AddCommand(newNetworkModeCmd()) + cmd.AddCommand(newKeyboardSetCmd()) + cmd.AddCommand(newBoardSetNameCmd()) return cmd } -func newDownloadImage(cfg config.Configuration) *cobra.Command { +func newDownloadImageCmd(cfg config.Configuration) *cobra.Command { cmd := &cobra.Command{ Use: "init", Args: cobra.ExactArgs(0), @@ -111,7 +113,13 @@ func newUpdateCmd() *cobra.Command { events := updater.Subscribe() for event := range events { - feedback.Printf("[%s] %s", event.Type.String(), event.Data) + if event.Type == update.ErrorEvent { + // TODO: add colors to error messages + err := event.GetError() + feedback.Printf("Error: %s [%s]", err.Error(), update.GetUpdateErrorCode(err)) + } else { + feedback.Printf("[%s] %s", event.Type.String(), event.GetData()) + } if event.Type == update.DoneEvent { break @@ -173,7 +181,7 @@ func newCleanUpCmd(cfg config.Configuration, docker command.Cli) *cobra.Command return cmd } -func newNetworkMode() *cobra.Command { +func newNetworkModeCmd() *cobra.Command { cmd := &cobra.Command{ Use: "network-mode ", Short: "Manage the network mode of the system", @@ -209,7 +217,7 @@ func newNetworkMode() *cobra.Command { return cmd } -func newkeyboardSet() *cobra.Command { +func newKeyboardSetCmd() *cobra.Command { cmd := &cobra.Command{ Use: "keyboard [layout]", Short: "Manage the keyboard layout of the system", @@ -250,3 +258,21 @@ func newkeyboardSet() *cobra.Command { return cmd } + +func newBoardSetNameCmd() *cobra.Command { + setNameCmd := &cobra.Command{ + Use: "set-name ", + Short: "Set the custom name of the board", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + name := args[0] + if err := board.SetCustomName(cmd.Context(), &local.LocalConnection{}, name); err != nil { + return fmt.Errorf("failed to set custom name: %w", err) + } + feedback.Printf("Custom name set to %q\n", name) + return nil + }, + } + + return setNameCmd +} diff --git a/cmd/arduino-app-cli/version/version.go b/cmd/arduino-app-cli/version/version.go index 86ed7b3c5..1cb06d05c 100644 --- a/cmd/arduino-app-cli/version/version.go +++ b/cmd/arduino-app-cli/version/version.go @@ -16,34 +16,95 @@ package version import ( + "encoding/json" "fmt" + "net" + "net/http" + "net/url" + "time" "github.com/spf13/cobra" "github.com/arduino/arduino-app-cli/cmd/feedback" ) -func NewVersionCmd(version string) *cobra.Command { +// The actual listening address for the daemon +// is defined in the installation package +const ( + DefaultHostname = "localhost" + DefaultPort = "8800" + ProgramName = "Arduino App CLI" +) + +func NewVersionCmd(clientVersion string) *cobra.Command { cmd := &cobra.Command{ Use: "version", Short: "Print the version number of Arduino App CLI", Run: func(cmd *cobra.Command, args []string) { - feedback.PrintResult(versionResult{ - AppName: "Arduino App CLI", - Version: version, - }) + port, _ := cmd.Flags().GetString("port") + + daemonVersion, err := getDaemonVersion(http.Client{}, port) + if err != nil { + feedback.Warnf("Warning: cannot get the running daemon version on %s:%s\n", DefaultHostname, port) + } + + result := versionResult{ + Name: ProgramName, + Version: clientVersion, + DaemonVersion: daemonVersion, + } + + feedback.PrintResult(result) }, } + cmd.Flags().String("port", DefaultPort, "The daemon network port") return cmd } +func getDaemonVersion(httpClient http.Client, port string) (string, error) { + + httpClient.Timeout = time.Second + + url := url.URL{ + Scheme: "http", + Host: net.JoinHostPort(DefaultHostname, port), + Path: "/v1/version", + } + + resp, err := httpClient.Get(url.String()) + if err != nil { + return "", err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return "", fmt.Errorf("unexpected status code received") + } + + var daemonResponse struct { + Version string `json:"version"` + } + if err := json.NewDecoder(resp.Body).Decode(&daemonResponse); err != nil { + return "", err + } + + return daemonResponse.Version, nil +} + type versionResult struct { - AppName string `json:"appName"` - Version string `json:"version"` + Name string `json:"name"` + Version string `json:"version"` + DaemonVersion string `json:"daemon_version,omitempty"` } func (r versionResult) String() string { - return fmt.Sprintf("%s v%s", r.AppName, r.Version) + resultMessage := fmt.Sprintf("%s version %s", ProgramName, r.Version) + + if r.DaemonVersion != "" { + resultMessage = fmt.Sprintf("%s\ndaemon version: %s", + resultMessage, r.DaemonVersion) + } + return resultMessage } func (r versionResult) Data() interface{} { diff --git a/cmd/arduino-app-cli/version/version_test.go b/cmd/arduino-app-cli/version/version_test.go new file mode 100644 index 000000000..39617968b --- /dev/null +++ b/cmd/arduino-app-cli/version/version_test.go @@ -0,0 +1,125 @@ +// This file is part of arduino-app-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-app-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package version + +import ( + "errors" + "io" + "net/http" + "strings" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestDaemonVersion(t *testing.T) { + testCases := []struct { + name string + serverStub Tripper + port string + expectedResult string + expectedErrorMessage string + }{ + { + name: "return the server version when the server is up", + serverStub: successServer, + port: "8800", + expectedResult: "3.0-server", + expectedErrorMessage: "", + }, + { + name: "return error if default server is not listening on default port", + serverStub: failureServer, + port: "8800", + expectedResult: "", + expectedErrorMessage: `Get "http://localhost:8800/v1/version": connection refused`, + }, + { + name: "return error if provided server is not listening on provided port", + serverStub: failureServer, + port: "1234", + expectedResult: "", + expectedErrorMessage: `Get "http://localhost:1234/v1/version": connection refused`, + }, + { + name: "return error for server response 500 Internal Server Error", + serverStub: failureInternalServerError, + port: "0", + expectedResult: "", + expectedErrorMessage: "unexpected status code received", + }, + + { + name: "return error for server up and wrong json response", + serverStub: successServerWrongJson, + port: "8800", + expectedResult: "", + expectedErrorMessage: "invalid character '<' looking for beginning of value", + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + // arrange + httpClient := http.Client{} + httpClient.Transport = tc.serverStub + + // act + result, err := getDaemonVersion(httpClient, tc.port) + + // assert + require.Equal(t, tc.expectedResult, result) + if err != nil { + require.Equal(t, tc.expectedErrorMessage, err.Error()) + } + }) + } +} + +// Leverage the http.Client's RoundTripper +// to return a canned response and bypass network calls. +type Tripper func(*http.Request) (*http.Response, error) + +func (t Tripper) RoundTrip(request *http.Request) (*http.Response, error) { + return t(request) +} + +var successServer = Tripper(func(*http.Request) (*http.Response, error) { + body := io.NopCloser(strings.NewReader(`{"version":"3.0-server"}`)) + return &http.Response{ + StatusCode: http.StatusOK, + Body: body, + }, nil +}) + +var successServerWrongJson = Tripper(func(*http.Request) (*http.Response, error) { + body := io.NopCloser(strings.NewReader(` +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/arduino_cloud/2_light_with_colors_monitor.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/arduino_cloud/2_light_with_colors_monitor.py similarity index 88% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/arduino_cloud/2_light_with_colors_monitor.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/arduino_cloud/2_light_with_colors_monitor.py index 40371db7a..1fce305b3 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/arduino_cloud/2_light_with_colors_monitor.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/arduino_cloud/2_light_with_colors_monitor.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/arduino_cloud/3_light_with_colors_command.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/arduino_cloud/3_light_with_colors_command.py similarity index 92% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/arduino_cloud/3_light_with_colors_command.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/arduino_cloud/3_light_with_colors_command.py index 5e730ea9f..4b8c5bf95 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/arduino_cloud/3_light_with_colors_command.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/arduino_cloud/3_light_with_colors_command.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/audio_classification/1_glass_breaking_from_mic.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/audio_classification/1_glass_breaking_from_mic.py similarity index 84% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/audio_classification/1_glass_breaking_from_mic.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/audio_classification/1_glass_breaking_from_mic.py index 36b2be12b..1eed6c3a9 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/audio_classification/1_glass_breaking_from_mic.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/audio_classification/1_glass_breaking_from_mic.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/audio_classification/2_glass_breaking_from_file.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/audio_classification/2_glass_breaking_from_file.py similarity index 60% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/audio_classification/2_glass_breaking_from_file.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/audio_classification/2_glass_breaking_from_file.py index 68bdd7108..237aaba15 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/audio_classification/2_glass_breaking_from_file.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/audio_classification/2_glass_breaking_from_file.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 @@ -6,7 +6,5 @@ # EXAMPLE_REQUIRES = "Requires an audio file with the glass breaking sound." from arduino.app_bricks.audio_classification import AudioClassification -classifier = AudioClassification() - -classification = classifier.classify_from_file("glass_breaking.wav") +classification = AudioClassification.classify_from_file("glass_breaking.wav") print("Result:", classification) diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/camera_code_detection/1_detection.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/camera_code_detection/1_detection.py similarity index 89% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/camera_code_detection/1_detection.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/camera_code_detection/1_detection.py index 6dfdb41ad..1facd3263 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/camera_code_detection/1_detection.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/camera_code_detection/1_detection.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/camera_code_detection/2_detection_list.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/camera_code_detection/2_detection_list.py similarity index 90% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/camera_code_detection/2_detection_list.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/camera_code_detection/2_detection_list.py index 6288d571b..7d63bb461 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/camera_code_detection/2_detection_list.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/camera_code_detection/2_detection_list.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/camera_code_detection/3_detection_with_overrides.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/camera_code_detection/3_detection_with_overrides.py similarity index 91% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/camera_code_detection/3_detection_with_overrides.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/camera_code_detection/3_detection_with_overrides.py index 8a6724708..d128cd96a 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/camera_code_detection/3_detection_with_overrides.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/camera_code_detection/3_detection_with_overrides.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/cloud_llm/1_simple_prompt.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/cloud_llm/1_simple_prompt.py new file mode 100644 index 000000000..7c325de88 --- /dev/null +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/cloud_llm/1_simple_prompt.py @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) +# +# SPDX-License-Identifier: MPL-2.0 + +# EXAMPLE_NAME = "Chat with an LLM" +# EXAMPLE_REQUIRES = "Requires a valid API key to a cloud LLM service." + +from arduino.app_bricks.cloud_llm import CloudLLM +from arduino.app_utils import App + +llm = CloudLLM( + api_key="YOUR_API_KEY", # Replace with your actual API key +) + + +def ask_prompt(): + prompt = input("Enter your prompt (or type 'exit' to quit): ") + if prompt.lower() == "exit": + raise StopIteration() + print(llm.chat(prompt)) + print() + + +App.run(ask_prompt) diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/cloud_llm/2_streaming_responses.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/cloud_llm/2_streaming_responses.py new file mode 100644 index 000000000..9538cbda1 --- /dev/null +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/cloud_llm/2_streaming_responses.py @@ -0,0 +1,25 @@ +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) +# +# SPDX-License-Identifier: MPL-2.0 + +# EXAMPLE_NAME = "Streaming responses from an LLM" +# EXAMPLE_REQUIRES = "Requires a valid API key to a cloud LLM service." + +from arduino.app_bricks.cloud_llm import CloudLLM +from arduino.app_utils import App + +llm = CloudLLM( + api_key="YOUR_API_KEY", # Replace with your actual API key +) + + +def ask_prompt(): + prompt = input("Enter your prompt (or type 'exit' to quit): ") + if prompt.lower() == "exit": + raise StopIteration() + for token in llm.chat_stream(prompt): + print(token, end="", flush=True) + print() + + +App.run(ask_prompt) diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/cloud_llm/3_no_memory.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/cloud_llm/3_no_memory.py new file mode 100644 index 000000000..f30419bf0 --- /dev/null +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/cloud_llm/3_no_memory.py @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) +# +# SPDX-License-Identifier: MPL-2.0 + +# EXAMPLE_NAME = "Conversation with memory" +# EXAMPLE_REQUIRES = "Requires a valid API key to a cloud LLM service." + +from arduino.app_bricks.cloud_llm import CloudLLM +from arduino.app_utils import App + +llm = CloudLLM( + api_key="YOUR_API_KEY", # Replace with your actual API key +) +llm.with_memory(0) + + +def ask_prompt(): + prompt = input("Enter your prompt (or type 'exit' to quit): ") + if prompt.lower() == "exit": + raise StopIteration() + print(llm.chat(prompt)) + + +App.run(ask_prompt) diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/dbstorage_sqlstore/store_and_read_example.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/dbstorage_sqlstore/store_and_read_example.py similarity index 85% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/dbstorage_sqlstore/store_and_read_example.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/dbstorage_sqlstore/store_and_read_example.py index e3e31edb4..54d070cd9 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/dbstorage_sqlstore/store_and_read_example.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/dbstorage_sqlstore/store_and_read_example.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/dbstorage_tsstore/1_write_read.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/dbstorage_tsstore/1_write_read.py similarity index 84% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/dbstorage_tsstore/1_write_read.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/dbstorage_tsstore/1_write_read.py index 9b4185d6c..42c19b901 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/dbstorage_tsstore/1_write_read.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/dbstorage_tsstore/1_write_read.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/dbstorage_tsstore/2_read_all_samples.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/dbstorage_tsstore/2_read_all_samples.py similarity index 93% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/dbstorage_tsstore/2_read_all_samples.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/dbstorage_tsstore/2_read_all_samples.py index 2adee9d98..21ee99a27 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/dbstorage_tsstore/2_read_all_samples.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/dbstorage_tsstore/2_read_all_samples.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/image_classification/image_classification_example.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/image_classification/image_classification_example.py similarity index 90% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/image_classification/image_classification_example.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/image_classification/image_classification_example.py index 7dd28c573..7597172e6 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/image_classification/image_classification_example.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/image_classification/image_classification_example.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/keyword_spotting/1_hello_world.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/keyword_spotting/1_hello_world.py similarity index 82% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/keyword_spotting/1_hello_world.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/keyword_spotting/1_hello_world.py index b5687f860..346cf45d4 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/keyword_spotting/1_hello_world.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/keyword_spotting/1_hello_world.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/object_detection/object_detection_example.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/object_detection/object_detection_example.py similarity index 91% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/object_detection/object_detection_example.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/object_detection/object_detection_example.py index f2ca3b9f4..166f5b7cf 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/object_detection/object_detection_example.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/object_detection/object_detection_example.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/visual_anomaly_detection/object_detection_example.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/visual_anomaly_detection/object_detection_example.py similarity index 91% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/visual_anomaly_detection/object_detection_example.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/visual_anomaly_detection/object_detection_example.py index 5dc0d2cc9..42a8864e9 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/visual_anomaly_detection/object_detection_example.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/visual_anomaly_detection/object_detection_example.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/wave_generator/01_basic_tone.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/wave_generator/01_basic_tone.py new file mode 100644 index 000000000..5acd492f0 --- /dev/null +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/wave_generator/01_basic_tone.py @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) +# +# SPDX-License-Identifier: MPL-2.0 + +""" +Basic Wave Generator Example + +Generates a simple 440Hz sine wave (A4 note) and demonstrates +basic frequency and amplitude control. +""" + +from arduino.app_bricks.wave_generator import WaveGenerator +from arduino.app_utils import App + +# Create wave generator with default settings +wave_gen = WaveGenerator( + sample_rate=16000, + wave_type="sine", + glide=0.02, # 20ms smooth frequency transitions +) + +# Start the generator +App.start_brick(wave_gen) + +# Set initial frequency and amplitude +wave_gen.set_frequency(440.0) # A4 note (440 Hz) +wave_gen.set_amplitude(0.7) # 70% amplitude +wave_gen.set_volume(80) # 80% hardware volume + +print("Playing 440Hz sine wave (A4 note)") +print("Press Ctrl+C to stop") + +# Keep the application running +App.run() diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/wave_generator/02_waveform_types.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/wave_generator/02_waveform_types.py new file mode 100644 index 000000000..320757c34 --- /dev/null +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/wave_generator/02_waveform_types.py @@ -0,0 +1,41 @@ +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) +# +# SPDX-License-Identifier: MPL-2.0 + +""" +Waveform Comparison Example + +Cycles through different waveform types to hear the difference +between sine, square, sawtooth, and triangle waves. +""" + +import time +from arduino.app_bricks.wave_generator import WaveGenerator +from arduino.app_utils import App + +wave_gen = WaveGenerator(sample_rate=16000, glide=0.02) +App.start_brick(wave_gen) + +# Set constant frequency and amplitude +wave_gen.set_frequency(440.0) +wave_gen.set_amplitude(0.6) + +waveforms = ["sine", "square", "sawtooth", "triangle"] + + +def cycle_waveforms(): + """Cycle through different waveform types.""" + for wave_type in waveforms: + print(f"Playing {wave_type} wave...") + wave_gen.set_wave_type(wave_type) + time.sleep(3) + # Silence + wave_gen.set_amplitude(0.0) + time.sleep(2) + + +print("Cycling through waveforms:") +print("sine → square → sawtooth → triangle") +print("Press Ctrl+C to stop") + +App.run(user_loop=cycle_waveforms) diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/wave_generator/03_frequency_sweep.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/wave_generator/03_frequency_sweep.py new file mode 100644 index 000000000..614d99620 --- /dev/null +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/wave_generator/03_frequency_sweep.py @@ -0,0 +1,51 @@ +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) +# +# SPDX-License-Identifier: MPL-2.0 + +""" +Frequency Sweep Example + +Demonstrates smooth frequency transitions (glide/portamento effect) +by sweeping through different frequency ranges. +""" + +import time +from arduino.app_bricks.wave_generator import WaveGenerator +from arduino.app_utils import App + +wave_gen = WaveGenerator( + wave_type="sine", + glide=0.05, # 50ms glide for noticeable portamento +) + +App.start_brick(wave_gen) +wave_gen.set_amplitude(0.7) + + +def frequency_sweep(): + """Sweep through frequency ranges.""" + + # Low to high sweep + print("Sweeping low to high (220Hz → 880Hz)...") + for freq in range(220, 881, 20): + wave_gen.set_frequency(float(freq)) + time.sleep(0.1) + + time.sleep(0.5) + + # High to low sweep + print("Sweeping high to low (880Hz → 220Hz)...") + for freq in range(880, 219, -20): + wave_gen.set_frequency(float(freq)) + time.sleep(0.1) + # Fade out + print("Fading out...") + wave_gen.set_amplitude(0.0) + time.sleep(2) + + +print("Frequency sweep demonstration") +print("Listen for smooth glide between frequencies") +print("Press Ctrl+C to stop") + +App.run(user_loop=frequency_sweep) diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/wave_generator/04_envelope_control.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/wave_generator/04_envelope_control.py new file mode 100644 index 000000000..395099fb7 --- /dev/null +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/wave_generator/04_envelope_control.py @@ -0,0 +1,63 @@ +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) +# +# SPDX-License-Identifier: MPL-2.0 + +""" +Envelope Control Example + +Demonstrates amplitude envelope control with different +attack and release times for various sonic effects. +""" + +import time +from arduino.app_bricks.wave_generator import WaveGenerator +from arduino.app_utils import App + +wave_gen = WaveGenerator(wave_type="sine") +App.start_brick(wave_gen) + +wave_gen.set_frequency(440.0) +wave_gen.set_volume(80) + + +def envelope_demo(): + """Demonstrate different envelope settings.""" + + # Fast attack, fast release (percussive) + print("1. Percussive (fast attack/release)...") + wave_gen.set_envelope_params(attack=0.001, release=0.01, glide=0.0) + wave_gen.set_amplitude(0.8) + time.sleep(0.5) + wave_gen.set_amplitude(0.0) + time.sleep(1) + + # Slow attack, fast release (pad-like) + print("2. Pad-like (slow attack, fast release)...") + wave_gen.set_envelope_params(attack=0.2, release=0.05, glide=0.0) + wave_gen.set_amplitude(0.8) + time.sleep(1) + wave_gen.set_amplitude(0.0) + time.sleep(1) + + # Fast attack, slow release (sustained) + print("3. Sustained (fast attack, slow release)...") + wave_gen.set_envelope_params(attack=0.01, release=0.3, glide=0.0) + wave_gen.set_amplitude(0.8) + time.sleep(0.5) + wave_gen.set_amplitude(0.0) + time.sleep(1.5) + + # Medium attack and release (balanced) + print("4. Balanced (medium attack/release)...") + wave_gen.set_envelope_params(attack=0.05, release=0.05, glide=0.0) + wave_gen.set_amplitude(0.8) + time.sleep(0.8) + wave_gen.set_amplitude(0.0) + time.sleep(2) + + +print("Envelope Control Demonstration") +print("Listen to different attack/release characteristics") +print("Press Ctrl+C to stop") + +App.run(user_loop=envelope_demo) diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/wave_generator/05_external_speaker.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/wave_generator/05_external_speaker.py new file mode 100644 index 000000000..715e9cc3c --- /dev/null +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/wave_generator/05_external_speaker.py @@ -0,0 +1,77 @@ +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) +# +# SPDX-License-Identifier: MPL-2.0 + +""" +Custom Speaker Configuration Example + +Demonstrates how to use a pre-configured Speaker instance with WaveGenerator. +Use this approach when you need: +- Specific USB speaker selection (USB_SPEAKER_2, etc.) +- Different audio format (S16_LE, etc.) +- Explicit device name ("plughw:CARD=Device,DEV=0") +""" + +import time +from arduino.app_bricks.wave_generator import WaveGenerator +from arduino.app_peripherals.speaker import Speaker +from arduino.app_utils import App + +# List available USB speakers +available_speakers = Speaker.list_usb_devices() +print(f"Available USB speakers: {available_speakers}") + +# Create and configure a Speaker with specific parameters +# For optimal real-time synthesis, align periodsize with WaveGenerator block_duration +block_duration = 0.03 # Default WaveGenerator block duration +sample_rate = 16000 +periodsize = int(sample_rate * block_duration) # 480 frames @ 16kHz + +speaker = Speaker( + device=Speaker.USB_SPEAKER_1, # or explicit device like "plughw:CARD=Device" + sample_rate=sample_rate, + channels=1, + format="FLOAT_LE", + periodsize=periodsize, # Align with WaveGenerator blocks (eliminates glitches) + queue_maxsize=10, # Low latency for real-time audio +) + +# Start the external Speaker manually +# WaveGenerator won't manage its lifecycle (ownership pattern) +speaker.start() + +# Create WaveGenerator with the external speaker +wave_gen = WaveGenerator( + sample_rate=sample_rate, + speaker=speaker, # Pass pre-configured speaker + wave_type="sine", + glide=0.02, +) + +# Start the WaveGenerator (speaker already started above) +App.start_brick(wave_gen) + + +def play_sequence(): + """Play a simple frequency sequence.""" + frequencies = [261.63, 293.66, 329.63, 349.23, 392.00, 440.00, 493.88, 523.25] # C4 to C5 + + for freq in frequencies: + print(f"Playing {freq:.2f} Hz") + wave_gen.set_frequency(freq) + wave_gen.set_amplitude(0.7) + time.sleep(0.5) + + # Fade out + wave_gen.set_amplitude(0.0) + time.sleep(1) + + +print("Playing musical scale with external speaker...") +print("Press Ctrl+C to stop") + +App.run(user_loop=play_sequence) + +# Stop external Speaker manually (WaveGenerator doesn't manage external lifecycle) +speaker.stop() +print("Done") diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/weather_forecast/weather_forecast_by_city_example.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/weather_forecast/weather_forecast_by_city_example.py similarity index 81% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/weather_forecast/weather_forecast_by_city_example.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/weather_forecast/weather_forecast_by_city_example.py index 44241a76f..cb9a10810 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/weather_forecast/weather_forecast_by_city_example.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/weather_forecast/weather_forecast_by_city_example.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/weather_forecast/weather_forecast_by_coords_example.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/weather_forecast/weather_forecast_by_coords_example.py similarity index 81% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/weather_forecast/weather_forecast_by_coords_example.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/weather_forecast/weather_forecast_by_coords_example.py index 740740a38..11b8ca9da 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/weather_forecast/weather_forecast_by_coords_example.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/weather_forecast/weather_forecast_by_coords_example.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/web_ui/1_serve_webapp.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/web_ui/1_serve_webapp.py similarity index 80% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/web_ui/1_serve_webapp.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/web_ui/1_serve_webapp.py index 55fb6ca7c..4d8768aa2 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/web_ui/1_serve_webapp.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/web_ui/1_serve_webapp.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/web_ui/2_serve_webapp_and_api.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/web_ui/2_serve_webapp_and_api.py similarity index 79% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/web_ui/2_serve_webapp_and_api.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/web_ui/2_serve_webapp_and_api.py index ff1c7cc0a..19afb6760 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/web_ui/2_serve_webapp_and_api.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/web_ui/2_serve_webapp_and_api.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/web_ui/3_connect_disconnect.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/web_ui/3_connect_disconnect.py similarity index 81% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/web_ui/3_connect_disconnect.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/web_ui/3_connect_disconnect.py index 0a98cd99e..749061492 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/web_ui/3_connect_disconnect.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/web_ui/3_connect_disconnect.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/web_ui/4_on_message.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/web_ui/4_on_message.py similarity index 80% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/web_ui/4_on_message.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/web_ui/4_on_message.py index cfec4c7cd..7eb1316fc 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/web_ui/4_on_message.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/web_ui/4_on_message.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/web_ui/5_send_message.py b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/web_ui/5_send_message.py similarity index 80% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/web_ui/5_send_message.py rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/web_ui/5_send_message.py index 9bb52450d..00e19bc7d 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/web_ui/5_send_message.py +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/examples/arduino/web_ui/5_send_message.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/models-list.yaml b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/models-list.yaml similarity index 94% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/models-list.yaml rename to debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/models-list.yaml index 7c511011c..cc482bdcb 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/models-list.yaml +++ b/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.6.2/models-list.yaml @@ -2,7 +2,7 @@ models: - face-detection: runner: brick name : "Lightweight-Face-Detection" - description: "Face bounding box detection. This model is trained on the WIDER FACE dataset and can detect faces in images." + description: "A small and accurate model for detecting bounding boxes for faces in images." model_configuration: "EI_OBJ_DETECTION_MODEL": "/models/ootb/ei/lw-face-det.eim" model_labels: @@ -13,12 +13,14 @@ models: metadata: source: "qualcomm-ai-hub" ei-gpu-mode: false + ei-project-id: 830703 + ei-model-url: "https://studio.edgeimpulse.com/public/830703/live" source-model-id: "face-det-lite" source-model-url: "https://aihub.qualcomm.com/models/face_det_lite" - yolox-object-detection: runner: brick name : "General purpose object detection - YoloX" - description: "General purpose object detection model based on YoloX Nano. This model is trained on the COCO dataset and can detect 80 different object classes." + description: "General purpose object detection model based on YoloX-Nano. This model is trained on the COCO dataset and can detect 80 different object classes." model_configuration: "EI_OBJ_DETECTION_MODEL": "/models/ootb/ei/yolo-x-nano.eim" model_labels: @@ -105,6 +107,7 @@ models: metadata: source: "edgeimpulse" ei-project-id: 717280 + ei-model-url: "https://studio.edgeimpulse.com/public/717280/live" source-model-id: "YOLOX-Nano" source-model-url: "https://github.com/Megvii-BaseDetection/YOLOX" bricks: @@ -1071,6 +1074,7 @@ models: metadata: source: "edgeimpulse" ei-project-id: 708500 + ei-model-url: "https://studio.edgeimpulse.com/public/708500/live" ei-gpu-mode: true source-model-id: "MobileNetV2" source-model-url: "https://www.tensorflow.org/api_docs/python/tf/keras/applications/MobileNetV2" @@ -1089,9 +1093,10 @@ models: metadata: source: "edgeimpulse" ei-project-id: 755016 + ei-model-url: "https://studio.edgeimpulse.com/public/755016/live" ei-gpu-mode: true source-model-id: "person-classification-wakevision" - source-model-url: "https://studio.edgeimpulse.com/studio/755016" + source-model-url: "https://studio.edgeimpulse.com/public/755016/live" bricks: - arduino:image_classification - arduino:video_image_classification @@ -1103,15 +1108,16 @@ models: "EI_V_ANOMALY_DETECTION_MODEL": "/models/ootb/ei/concrete-crack-anomaly-detection.eim" metadata: source: "edgeimpulse" - ei-project-id: 288658 + ei-project-id: 800941 + ei-model-url: "https://studio.edgeimpulse.com/public/800941/live" source-model-id: "concrete-crack-anomaly-detection" - source-model-url: "https://studio.edgeimpulse.com/public/288658" + source-model-url: "https://studio.edgeimpulse.com/public/800941/live" bricks: - arduino:visual_anomaly_detection - keyword-spotting-hey-arduino: runner: brick name : "Keyword spotting - Hey Arduino!" - description: "A keyword-spotting model to detect the 'Hey Arduino!' in audio recordings" + description: "A keyword-spotting model to detect the 'Hey Arduino!' in audio streams." model_configuration: "EI_KEYWORD_SPOTTING_MODEL": "/models/ootb/ei/keyword-spotting-hey-arduino.eim" model_labels: @@ -1120,12 +1126,14 @@ models: - "other" metadata: source: "edgeimpulse" - ei-project-id: 757509 + ei-project-id: 757509 + ei-model-url: "https://studio.edgeimpulse.com/studio/757509/live" ei-impulse-id: 30 source-model-id: "hey-arduino" - source-model-url: "https://studio.edgeimpulse.com/studio/757509" + source-model-url: "https://studio.edgeimpulse.com/studio/757509/live" + private: true bricks: - - arduino:keyword_spotter + - arduino:keyword_spotting - updown-wave-motion-detection: runner: brick name : "Continuous motion detection" @@ -1140,9 +1148,11 @@ models: metadata: source: "edgeimpulse" ei-project-id: 734960 + ei-model-url: "https://studio.edgeimpulse.com/public/734960/live" source-model-id: "continuous-motion-detection" - source-model-url: "https://studio.edgeimpulse.com/studio/734960" - brick: arduino:motion_detection + source-model-url: "https://studio.edgeimpulse.com/public/734960/live" + bricks: + - arduino:motion_detection - fan-anomaly-detection: runner: brick name : "Fan anomaly detection" @@ -1152,8 +1162,9 @@ models: metadata: source: "edgeimpulse" ei-project-id: 774707 + ei-model-url: "https://studio.edgeimpulse.com/public/774707/live" source-model-id: "fan-anomaly-detection" - source-model-url: "https://studio.edgeimpulse.com/studio/774707" + source-model-url: "https://studio.edgeimpulse.com/public/774707/live" bricks: - arduino:vibration_anomaly_detection - glass-breaking: @@ -1168,7 +1179,9 @@ models: metadata: source: "edgeimpulse" ei-project-id: 749446 + ei-model-url: "https://studio.edgeimpulse.com/public/749446/live" source-model-id: "glass-breaking" - source-model-url: "https://studio.edgeimpulse.com/studio/749446" + source-model-url: "https://studio.edgeimpulse.com/public/749446/live" + private: true bricks: - - arduino:audio_classifier + - arduino:audio_classification diff --git a/debian/arduino-app-cli/var/lib/arduino-app-cli/arduino-avahi-serial.sh b/debian/arduino-app-cli/var/lib/arduino-app-cli/arduino-avahi-serial.sh new file mode 100755 index 000000000..77b5a81bf --- /dev/null +++ b/debian/arduino-app-cli/var/lib/arduino-app-cli/arduino-avahi-serial.sh @@ -0,0 +1,37 @@ +#!/bin/sh +# Configure Avahi with the serial number. + + +TARGET_FILE="/etc/avahi/services/arduino.service" +SERIAL_NUMBER_PATH="/sys/devices/soc0/serial_number" + +echo "Configuring Avahi with serial number for network discovery..." + +if [ ! -f "$SERIAL_NUMBER_PATH" ]; then + echo "Error: Serial number path not found at $SERIAL_NUMBER_PATH." >&2 + exit 1 +fi + + +if [ ! -w "$TARGET_FILE" ]; then + echo "Error: Target file $TARGET_FILE not found or not writable." >&2 + exit 1 +fi + +SERIAL_NUMBER=$(cat "$SERIAL_NUMBER_PATH") + +if [ -z "$SERIAL_NUMBER" ]; then + echo "Error: Serial number file is empty." >&2 + exit 1 +fi + +if grep -q "serial_number=" "$TARGET_FILE"; then + echo "Serial number ($SERIAL_NUMBER) already configured." + exit 0 +fi + +echo "Adding serial number to $TARGET_FILE..." +sed -i "/<\/service>/i serial_number=${SERIAL_NUMBER}<\/txt-record>" "$TARGET_FILE" + +echo "Avahi configuration attempt finished." +exit 0 \ No newline at end of file diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md new file mode 100644 index 000000000..7ef47fc5b --- /dev/null +++ b/docs/CONTRIBUTING.md @@ -0,0 +1,23 @@ +# Contributor Guide + +Thanks for your interest in contributing to this project! + +There are several ways you can get involved: + +| Type of contribution | Contribution method | +| ----------------------------------------- | ----------------------------------------------- | +| - Support
- Question
- Discussion | Post on the [**Arduino Forum**][forum] | +| - Bug report
- Feature request | Issue report (see the guide [**here**][issues]) | +| Testing | PR review (see the guide [**here**][prs]) | +| - Bug fix
- Enhancement | Pull request (see the guide [**here**][prs]) | +| Monetary | [Buy official products][store] | + +[forum]: https://forum.arduino.cc +[issues]: contributor-guide/issues.md#issue-report-guide +[beta-testing]: contributor-guide/beta-testing.md#beta-testing-guide +[prs]: contributor-guide/pull-requests.md#pull-request-guide +[store]: https://store.arduino.cc + +## Resources + +- [**Development Guide**](contributor-guide/development.md#development-guide) diff --git a/docs/contributor-guide/assets/checks.png b/docs/contributor-guide/assets/checks.png new file mode 100644 index 000000000..888e711b4 Binary files /dev/null and b/docs/contributor-guide/assets/checks.png differ diff --git a/docs/contributor-guide/development.md b/docs/contributor-guide/development.md new file mode 100644 index 000000000..371ba0a27 --- /dev/null +++ b/docs/contributor-guide/development.md @@ -0,0 +1,70 @@ + + +# Development Guide + +> [!NOTE] +> The `arduino-app-cli` is designed to run on the Board and access peripherals that are not available on a development PC. +> +> For easier testing, using an **Arduino UNO Q** is recommended, as local testing is limited to functionalities that do not require board-specific features. + +## Prerequisites + +The following development tools must be available in your local environment: + +- [Go](https://go.dev/dl/) +- [Docker](https://docs.docker.com/engine/install/) +- [adb client](https://developer.android.com/tools/adb) [optionally] + +## Building the Project + +--- +❗ Building on Windows machines is not supported. +--- + +Build the project (run once): + +- `go tool task init` +- `go tool task build` +- `go tool task generate:assets` to download locally the assets of the [Arduino Bricks](https://github.com/arduino/app-bricks-py) + +Start the arduino-app-cli in daemon mode: + +- `ARDUINO_APP_CLI__DATA_DIR=debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli go tool task start` + +NOTE: only a subset of HTTP APIs are working by running the daemon mode on a development PC. To run Arduino App CLI on the board see the **Running Arduino App CLI on the board** section below. + +## Running Checks + +> [!NOTE] +> Since Arduino App CLI runs on a Debian-based OS, some tests do not work on Windows and macOS + +Checks and tests are set up to ensure the project content is functional and compliant with the established standards. + +- `go tool task fmt-check` +- `go tool task lint` +- `go tool task test` + +In particular, `go tool task test` runs the following tests + +- `test:pkg` which exposes a cross-platform API for working with the board (those should run for every platform) +- `test:internal` runs tests of the internal components, which targets only Linux + +## Running Arduino App CLI on the board + +This is reccomended way to test a local development version of Arduino App CLI on a board. + +1. Connect an [Arduino UNO Q](https://docs.arduino.cc/hardware/uno-q/) board via USB. +1. `go tool task board:install` installs the current version of Arduino App CLI on the board (`adb` is needed). The password of the `arduino` username of the board is requested. + +## Automatic Corrections + +Tools are provided to automatically bring the project into compliance with some of the required checks. + +- `go tool task fmt` + +## Generate API docs + +If a PR, change the HTTP API definitions, the following steps are needed: + +1. Open the `cmd/gendoc/docs.go` and modify/add/remove the definitions +1. Run `go tool task doc` to generate the docs (i.e., the files `internal/api/docs/openapi.yaml` and `internal/e2e/client/client.gen.go` are generated) diff --git a/docs/contributor-guide/issues.md b/docs/contributor-guide/issues.md new file mode 100644 index 000000000..c430864e0 --- /dev/null +++ b/docs/contributor-guide/issues.md @@ -0,0 +1,33 @@ + + +# Issue Report Guide + +--- + +❗ Do you need help or have a question about using this project? Support requests should be made to the [Arduino Forum](https://forum.arduino.cc). + +--- + +High quality bug reports and feature requests are valuable contributions to this project. These can be made by submitting an issue report to the project's GitHub repository: + +https://github.com/arduino/arduino-app-cli/issues/new/choose + +## Before Reporting an Issue + +- Give the latest development version t (pre-releases) a test drive to see if your issue was already resolved:
+ https://github.com/arduino/arduino-app-cli/releases?q=prerelease%3Atrue +- Search [existing pull requests and issues](https://github.com/arduino/arduino-app-cli/issues?q=) to see if it was already reported.
+ If you have additional information to provide about an existing issue, please comment there instead of creating a duplicate. You can use [GitHub's "Reactions" feature](https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) if you only want to express support 👍. + +## Qualities of an Excellent Report + +- Concise and descriptive issue title.
+ Vague titles make it difficult to decipher the purpose of the issue when looking through the list of reports, which might result in your issue not being given proper attention. +- Describe the issue and what behavior you were expecting.
+ Include the full and exact text of any relevant error or warning messages you might have encountered. +- Provide a full set of steps necessary to reproduce the issue.
+ Demonstration code or commands should be complete and simplified to the minimum necessary to reproduce the issue. +- Be responsive.
+ We may need you to provide additional information in order to investigate and resolve the issue.
+ Make sure your GitHub account is configured so that you will receive notifications of responses to your issue report. +- If you find a solution to your problem, please comment on your issue report with an explanation of how you were able to fix it, then close the issue. diff --git a/docs/contributor-guide/pull-requests.md b/docs/contributor-guide/pull-requests.md new file mode 100644 index 000000000..0adae3855 --- /dev/null +++ b/docs/contributor-guide/pull-requests.md @@ -0,0 +1,199 @@ + + +# Pull Request Guide + +A [**pull request**](https://docs.github.com/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) (PR) is the mechanism used to propose changes to the content of this project's repository. + +If you are looking for ideas of what to work on, check [the list of open issue reports](https://github.com/arduino/arduino-app-cli/issues). Pull requests addressing any of those bug reports and feature requests are welcome. + +## Contribution Workflow + +Each contribution travels through a formal process which allows it to be efficiently incorporated into the project. + +### 1. Plan + +#### Research + +Start by searching the repository for existing pull requests and issues related to your planned contribution so you can see any related conversations and proposals and avoid duplicate effort: + +https://github.com/arduino/arduino-app-cli/issues?q= + +#### Discussion + +It can sometimes be useful to get feedback from others during the planning process. There are a couple good options for discussing planned development work: + +- Talk with the user community on the [Arduino Forum](https://forum.arduino.cc/). +- Talk with Arduino developers on the [Arduino Developers Mailing List](https://groups.google.com/a/arduino.cc/g/developers). + +### 2. Fork + +Forking a GitHub repository creates a copy of it under your account. You will stage contributions in your fork of this project. + +[More information about forking repositories](https://docs.github.com/get-started/quickstart/fork-a-repo) + +#### Enabling CI in Your Fork + +The repository is configured to run automated [continuous integration](https://wikipedia.org/wiki/Continuous_integration) (CI) checks and tests. It's a good idea to enable CI in your fork so you can make sure your work will pass the checks before you submit a pull request: + +1. Open the homepage of your fork in the browser. +1. Click the "**Actions**" tab. +1. Click the **I understand my workflows, go ahead and enable them** button. +1. Some of the workflows will now need to be activated individually. Perform the following steps for each of the useful workflows listed on the left side of the page that have a "**!**" icon: + 1. Click on the workflow name. + 1. Click the **Enable workflow** button. + +### 3. Clone + +Cloning a repository creates a copy of it on your computer. + +It is possible to make simple changes to your repository using the GitHub web interface without cloning the repository. However, the GitHub web interface is quite limiting so you will likely find the need to work with a clone (using **Git** directly or your choice of [Git client software](https://git-scm.com/downloads/guis)) for any significant development work. + +[More information about cloning repositories](https://git-scm.com/docs/git-clone) + +### 4. Branch + +Create a branch in your fork to contain the changes for your contribution. You must make a separate branch in your fork for each pull request you submit. + +[More information about branches](https://docs.github.com/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches) + +### 5. Make a change + +Some things to keep in mind: + +- Make sure your change complies with the project's established style conventions. +- Remember to also update the documentation content in the repository if required by your changes. +- If the project contains a test suite, update or add tests according to your change as appropriate. + +See [the development guide](../development.md#development-guide) for more information. + +### 6. Test + +Test your change carefully to make sure it works correctly and did not break other components of the project. + +As a supplement for general testing, the project is set up with automated checks and tests to facilitate development. + +See [the development guide](../development.md#development-guide) for instructions. + +### 7. Commit + +Once the work on your change is complete, add it to the revision history of the Git repository by making a commit. + +Make sure to follow the [Commit Guidelines](#commit-guidelines). + +[More information about commits](https://git-scm.com/docs/git-commit) + +### 8. Push + +If you're working from a [clone](#3-clone), you will need to push your commit to your fork on GitHub. + +[More information about pushing commits](https://git-scm.com/docs/git-push) + +#### Checking CI Results + +If you have [enabled CI in your repository](#enabling-ci-in-your-fork), GitHub will run the relevant checks automatically every time you push a commit to your fork. + +You can see the results of these checks by doing either of the following: + +- Clicking the status icon (✔️ or ❌) shown to the right of a commit. +- Opening the repository's "**Actions**" tab. + +### 9. Pull request + +A pull request (PR) is a proposal to make a change in a repository. The repository maintainer is able to accept the changes you propose in a pull request by simply clicking a button. + +[More information about pull requests](https://docs.github.com/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) + +#### Scope + +Each pull request should address a single bug fix or enhancement. If you have multiple unrelated fixes or enhancements to contribute, submit them as separate pull requests. + +#### Description + +Pull request title and description should follow [the same guidelines as commit messages](#commit-message). + +If your pull request fixes an issue in the issue tracker, use [a closing keyword](https://docs.github.com/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword) in the body to indicate this. + +In some cases, it might make sense to request feedback on a proposal before it is ready to be merged. You can indicate this by starting the pull request title with **[WIP]** (work in progress). Once the pull request is ready to be merged, edit the title and remove the "[WIP]". + +#### Cross-repository Contributions + +Some proposals may require changes to multiple repositories. Pull requests should be submitted in parallel to each repository. + +Clearly note any dependencies on other PRs in the description so that these can be evaluated by the reviewer and the merges coordinated. + +--- + +Please check whether any changes are required to the related documentation content hosted in the separate dedicated repositories: + +- [**arduino/docs-content**](https://github.com/arduino/docs-content) +- [**arduino/help-center-content**](https://github.com/arduino/help-center-content) + +### 10. Resolve CI failures + +Relevant checks will run automatically once you have submitted the pull request. Once these checks are finished, you can see a summary of the results near the bottom of the pull request page: + +![checks](assets/checks.png) + +Failed checks will be indicated with an ❌. If any checks failed, please fix whatever caused it to fail. Click the "**Details**" link to the right of the check name to open the logs, which provide details about the failure. + +--- + +**ⓘ** In some rare cases, a CI failure may be unrelated to the changes made in your pull request. So if the information in the logs doesn't seem relevant, please comment on the pull request to ask a maintainer to take a look. + +--- + +When you push to the branch of your fork the pull request was submitted from, the commit is automatically added to the pull request. Don't create a new pull request to fix problems; update the existing pull request. + +### 11. Resolve changes requested from reviews + +Interested parties may review your pull request and suggest improvements. + +To act on general review suggestions, you can add commits to the branch you submitted the pull request from, which will automatically be added to the pull request. Don't create a new pull request to act on review suggestions; update the existing pull request. + +Reviewers may suggest specific changes, which can be applied by [clicking the **Commit suggestion** button](https://docs.github.com/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request#applying-suggested-changes). + +[More information about pull request reviews](https://docs.github.com/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews) + +### 12. Merge + +One of the repository maintainers can now choose to accept your proposed change. Once the pull request is [merged](https://docs.github.com/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request), you can delete the branch you created in your fork for the pull request and delete the fork as well if you like. + +Thanks so much for your contribution! + +--- + +It is possible that the maintainers may decide a pull request doesn't align with Arduino's goals for the project and close it rather than merging. A record of the proposed changes will always be available on GitHub for future reference. If you think your modifications will be of use to others, you are welcome to maintain your own fork of the repository. + +--- + +## Commit Guidelines + +The commit history of a repository is an important resource for developers. Repositories may accumulate thousands of commits over the course of decades. Each individual commit contributes either to the commit history being pleasant and efficient to work with, or to it being a confusing mess. For this reason, it's essential for contributors to create clean, high quality commits. + +### Scope + +Commits must be "atomic". This means that the commit completely accomplishes a single task. Each commit should result in fully functional code. Multiple tasks should not be combined in a single commit, but a single task should not be split over multiple commits (e.g., one commit per file modified is not a good practice). + +[More information about atomic commits](https://www.freshconsulting.com/insights/blog/atomic-commits/) + +### Commit Message + +The commit message documents what the change was and why it was done. A little effort now writing a good commit message can save future developers from wasted time and frustration trying to understand the purpose of a poorly documented commit. + +#### Commit Message Title + +- Use the [imperative mood](https://cbea.ms/git-commit/#imperative) in the title.
+ For example: + > Use LED_BUILTIN macro in LED pin definition +- Capitalize the title. +- Do not end the title with punctuation. +- Do not use GitHub's default commit titles (e.g., "Update examples/Foo/Foo.ino"). + +#### Commit Message Body + +- Separate title from the body with a blank line. If you're committing via GitHub or [GitHub Desktop](https://desktop.github.com/) this will be done automatically. +- Wrap body at 120 characters. +- Completely explain the purpose of the commit.
+ Include a rationale for the change, any caveats, side-effects, etc. + +[More information on commit messages](https://cbea.ms/git-commit/) diff --git a/docs/user-documentation.md b/docs/user-documentation.md new file mode 100644 index 000000000..ba6d15b5c --- /dev/null +++ b/docs/user-documentation.md @@ -0,0 +1,62 @@ +# Arduino App CLI + +## Environment Variables + +The following environment variables are used to configure Arduino App CLI: + +| Environment Variable | Default Value | Description | +| -------------------------------------- | ------------------------------------------------ | ---------------------------------------------------------------------------------- | +| `ARDUINO_APP_CLI__APPS_DIR` | `/home/arduino/ArduinoApps` | Path to the directory where Arduino Apps created by the user are stored | +| `ARDUINO_APP_CLI__DATA_DIR` | `/home/arduino/.local/share/arduino-app-cli` | Path to the directory where internal data is stored (examples, assets, properties) | +| `ARDUINO_APP_BRICKS__CUSTOM_MODEL_DIR` | `$HOME/.arduino-bricks/ei-models` | Path to the directory where custom AI models are stored | +| `ARDUINO_APP_CLI__ALLOW_ROOT` | `false` | Allow running `arduino-app-cli` as root (**Not recommended to set to true**) | +| `LIBRARIES_API_URL` | `https://api2.arduino.cc/libraries/v1/libraries` | URL of the external service used to search Arduino libraries | +| `DOCKER_REGISTRY_BASE` | `ghcr.io/arduino/` | Docker registry used to pull docker images | +| `DOCKER_PYTHON_BASE_IMAGE` | `app-bricks/python-apps-base:` | Tag of the Docker image for the Python runner | + +## Directory Structures + +Examples of user-defined Arduino Apps stored under the `ARDUINO_APP_CLI__APPS_DIR` folder. + +``` +├── my-first-app +│   ├── app.yaml +│   ├── README.md +│   ├── python +│   │   └── main.py +│   ├── sketch +│   │ ├── sketch.ino +│   │ └── sketch.yaml +| └── .cache/ # Temporary files and dependencies of the App +└── my-second-app + ├── app.yaml + ├── python +    └── main.py +``` + +Examples of the `assets` and the builtin `examples` stored under the `ARDUINO_APP_CLI__DATA_DIR` folder. + +``` +/home/arduino/.local/share/arduino-app-cli/ +├── assets +│   └── 0.5.0 # Version-specific assets +│   ├── bricks-list.yaml # Available bricks +│   ├── models-list.yaml # Available models +│   └── ... +├── bootloader_burned.flag +├── default.app # Default App +├── properties.msgpack # Variable values +├── examples # Built-in App examples +│   ├── air-quality-monitoring +│   │   ├── app.yaml +│   │   ├── assets +│   │   ├── python +│   │   ├── README.md +│   │   └── sketch +│   ├── anomaly-detection +│   │   ├── app.yaml +│   │   ├── assets +│   │   ├── python +│   │   └── README.md +│   └── ... +``` diff --git a/go.mod b/go.mod index 48ac95379..7e7a8b73c 100644 --- a/go.mod +++ b/go.mod @@ -13,12 +13,9 @@ replace ( github.com/docker/docker => github.com/docker/docker v28.3.2+incompatible ) -// Required until https://github.com/arduino/arduino-cli/pull/3019 is merged and released -replace github.com/arduino/arduino-cli => github.com/cmaglie/arduino-cli v0.0.0-20251006122726-27fe68b0a18a - require ( github.com/Andrew-M-C/go.emoji v1.1.4 - github.com/arduino/arduino-cli v1.3.1 + github.com/arduino/arduino-cli v1.4.0 github.com/arduino/go-paths-helper v1.14.0 github.com/compose-spec/compose-go/v2 v2.8.1 github.com/containerd/errdefs v1.0.0 @@ -38,7 +35,7 @@ require ( github.com/oapi-codegen/runtime v1.1.1 github.com/shirou/gopsutil/v4 v4.25.6 github.com/sirupsen/logrus v1.9.3 - github.com/spf13/cobra v1.10.1 + github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 github.com/swaggest/jsonschema-go v0.3.78 github.com/swaggest/openapi-go v0.2.58 @@ -48,10 +45,9 @@ require ( go.bug.st/cleanup v1.0.0 go.bug.st/f v0.4.0 go.bug.st/relaxed-semver v0.15.0 - golang.org/x/crypto v0.41.0 - golang.org/x/sync v0.17.0 - golang.org/x/term v0.35.0 - golang.org/x/text v0.29.0 + golang.org/x/crypto v0.45.0 + golang.org/x/sync v0.19.0 + golang.org/x/text v0.32.0 ) require ( @@ -130,10 +126,10 @@ require ( github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/fvbommel/sortorder v1.1.0 // indirect github.com/fxamacker/cbor/v2 v2.7.0 // indirect - github.com/getkin/kin-openapi v0.132.0 // indirect + github.com/getkin/kin-openapi v0.133.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.6.2 // indirect - github.com/go-git/go-git/v5 v5.16.2 // indirect + github.com/go-git/go-git/v5 v5.16.4 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect @@ -144,7 +140,7 @@ require ( github.com/go-task/task/v3 v3.44.1 // indirect github.com/go-task/template v0.2.0 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect - github.com/gofrs/uuid/v5 v5.3.2 // indirect + github.com/gofrs/uuid/v5 v5.4.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.2.2 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect @@ -207,7 +203,7 @@ require ( github.com/morikuni/aec v1.0.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect - github.com/oapi-codegen/oapi-codegen/v2 v2.5.0 // indirect + github.com/oapi-codegen/oapi-codegen/v2 v2.5.1 // indirect github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 // indirect github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect @@ -226,7 +222,7 @@ require ( github.com/prometheus/procfs v0.15.1 // indirect github.com/puzpuzpuz/xsync/v3 v3.5.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect - github.com/sagikazarmark/locafero v0.7.0 // indirect + github.com/sagikazarmark/locafero v0.11.0 // indirect github.com/sajari/fuzzy v1.0.0 // indirect github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect github.com/schollz/closestmatch v2.1.0+incompatible // indirect @@ -236,13 +232,13 @@ require ( github.com/shibumi/go-pathspec v1.3.0 // indirect github.com/skeema/knownhosts v1.3.1 // indirect github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect - github.com/sourcegraph/conc v0.3.0 // indirect + github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect github.com/speakeasy-api/jsonpath v0.6.0 // indirect github.com/speakeasy-api/openapi-overlay v0.10.2 // indirect - github.com/spf13/afero v1.12.0 // indirect - github.com/spf13/cast v1.7.1 // indirect - github.com/spf13/pflag v1.0.9 // indirect - github.com/spf13/viper v1.20.1 // indirect + github.com/spf13/afero v1.15.0 // indirect + github.com/spf13/cast v1.10.0 // indirect + github.com/spf13/pflag v1.0.10 // indirect + github.com/spf13/viper v1.21.0 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/swaggest/refl v1.4.0 // indirect @@ -258,6 +254,7 @@ require ( github.com/ulikunitz/xz v0.5.15 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/vmware-labs/yaml-jsonpath v0.3.2 // indirect + github.com/woodsbury/decimal128 v1.3.0 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect @@ -269,34 +266,34 @@ require ( github.com/zeebo/xxh3 v1.0.2 // indirect go.bug.st/downloader/v2 v2.2.0 // indirect go.bug.st/serial v1.6.4 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect - go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 // indirect - go.opentelemetry.io/otel/metric v1.37.0 // indirect - go.opentelemetry.io/otel/sdk v1.37.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect - go.opentelemetry.io/otel/trace v1.37.0 // indirect + go.opentelemetry.io/otel/metric v1.38.0 // indirect + go.opentelemetry.io/otel/sdk v1.38.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.38.0 // indirect + go.opentelemetry.io/otel/trace v1.38.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect - go.uber.org/atomic v1.9.0 // indirect go.uber.org/mock v0.5.2 // indirect - go.uber.org/multierr v1.9.0 // indirect - golang.org/x/mod v0.27.0 // indirect - golang.org/x/net v0.43.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sys v0.36.0 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/mod v0.30.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/oauth2 v0.32.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/term v0.38.0 // indirect golang.org/x/time v0.11.0 // indirect - golang.org/x/tools v0.36.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect - google.golang.org/grpc v1.75.1 // indirect - google.golang.org/protobuf v1.36.9 // indirect + golang.org/x/tools v0.39.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/grpc v1.77.0 // indirect + google.golang.org/protobuf v1.36.10 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/go.sum b/go.sum index 98b1009fb..3c34fdbea 100644 --- a/go.sum +++ b/go.sum @@ -88,6 +88,8 @@ github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7D github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= +github.com/arduino/arduino-cli v1.4.0 h1:m89vwVuY1ThglbJcS2yXCfXnmjRBQCy1eDpIp0bMR/0= +github.com/arduino/arduino-cli v1.4.0/go.mod h1:BNuInu0zs0IQXDmzK8sE4ilTIADsgJbkik04rpySt58= github.com/arduino/go-paths-helper v1.0.1/go.mod h1:HpxtKph+g238EJHq4geEPv9p+gl3v5YYu35Yb+w31Ck= github.com/arduino/go-paths-helper v1.14.0 h1:b4C8KJa7CNz2XnzTWg97M3LAmzWSWrj+m/o5/skzv3Y= github.com/arduino/go-paths-helper v1.14.0/go.mod h1:dDodKn2ZX4iwuoBMapdDO+5d0oDLBeM4BS0xS4i40Ak= @@ -170,8 +172,6 @@ github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004 h1:lkAMpLVBDaj17e github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA= github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0= github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= -github.com/cmaglie/arduino-cli v0.0.0-20251006122726-27fe68b0a18a h1:xjGwmLNEUTb+QWUmUxwrb24Awbt4/rdpFG7lVUR3skI= -github.com/cmaglie/arduino-cli v0.0.0-20251006122726-27fe68b0a18a/go.mod h1:aH/Lfub80ymf3vpF0gUWx/sckVUNB0gDoPlABAx97SE= github.com/cmaglie/pb v1.0.27 h1:ynGj8vBXR+dtj4B7Q/W/qGt31771Ux5iFfRQBnwdQiA= github.com/cmaglie/pb v1.0.27/go.mod h1:GilkKZMXYjBA4NxItWFfO+lwkp59PLHQ+IOW/b/kmZI= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= @@ -310,8 +310,8 @@ github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQ github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= -github.com/getkin/kin-openapi v0.132.0 h1:3ISeLMsQzcb5v26yeJrBcdTCEQTag36ZjaGk7MIRUwk= -github.com/getkin/kin-openapi v0.132.0/go.mod h1:3OlG51PCYNsPByuiMB0t4fjnNlIDnaEDsjiKUV8nL58= +github.com/getkin/kin-openapi v0.133.0 h1:pJdmNohVIJ97r4AUFtEXRXwESr8b0bD721u/Tz6k8PQ= +github.com/getkin/kin-openapi v0.133.0/go.mod h1:boAciF6cXk5FhPqe/NQeBTeenbjqU4LhWBf09ILVvWE= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= @@ -321,8 +321,8 @@ github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UN github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.16.2 h1:fT6ZIOjE5iEnkzKyxTHK1W4HGAsPhqEqiSAssSO77hM= -github.com/go-git/go-git/v5 v5.16.2/go.mod h1:4Ge4alE/5gPs30F2H1esi2gPd69R0C39lolkucHBOp8= +github.com/go-git/go-git/v5 v5.16.4 h1:7ajIEZHZJULcyJebDLo99bGgS0jRrOxzZG4uCk2Yb2Y= +github.com/go-git/go-git/v5 v5.16.4/go.mod h1:4Ge4alE/5gPs30F2H1esi2gPd69R0C39lolkucHBOp8= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -366,8 +366,8 @@ github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7Lk github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= -github.com/gofrs/uuid/v5 v5.3.2 h1:2jfO8j3XgSwlz/wHqemAEugfnTlikAYHhnqQ8Xh4fE0= -github.com/gofrs/uuid/v5 v5.3.2/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= +github.com/gofrs/uuid/v5 v5.4.0 h1:EfbpCTjqMuGyq5ZJwxqzn3Cbr2d0rUZU7v5ycAk/e/0= +github.com/gofrs/uuid/v5 v5.4.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -676,8 +676,8 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLA github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oapi-codegen/oapi-codegen/v2 v2.5.0 h1:iJvF8SdB/3/+eGOXEpsWkD8FQAHj6mqkb6Fnsoc8MFU= -github.com/oapi-codegen/oapi-codegen/v2 v2.5.0/go.mod h1:fwlMxUEMuQK5ih9aymrxKPQqNm2n8bdLk1ppjH+lr9w= +github.com/oapi-codegen/oapi-codegen/v2 v2.5.1 h1:5vHNY1uuPBRBWqB2Dp0G7YB03phxLQZupZTIZaeorjc= +github.com/oapi-codegen/oapi-codegen/v2 v2.5.1/go.mod h1:ro0npU1BWkcGpCgGD9QwPp44l5OIZ94tB3eabnT7DjQ= github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro= github.com/oapi-codegen/runtime v1.1.1/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg= github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 h1:G7ERwszslrBzRxj//JalHPu/3yz+De2J+4aLtSRlHiY= @@ -771,8 +771,8 @@ github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= -github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= +github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc= +github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= github.com/sajari/fuzzy v1.0.0 h1:+FmwVvJErsd0d0hAPlj4CxqxUtQY/fOoY0DwX4ykpRY= github.com/sajari/fuzzy v1.0.0/go.mod h1:OjYR6KxoWOe9+dOlXeiCJd4dIbED4Oo8wpS89o0pwOo= github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw= @@ -814,8 +814,8 @@ github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYl github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg= github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM= -github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= -github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= +github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= github.com/spdx/tools-golang v0.5.5 h1:61c0KLfAcNqAjlg6UNMdkwpMernhw3zVRwDZ2x9XOmk= github.com/spdx/tools-golang v0.5.5/go.mod h1:MVIsXx8ZZzaRWNQpUDhC4Dud34edUYJYecciXgrw5vE= github.com/speakeasy-api/jsonpath v0.6.0 h1:IhtFOV9EbXplhyRqsVhHoBmmYjblIRh5D1/g8DHMXJ8= @@ -823,26 +823,27 @@ github.com/speakeasy-api/jsonpath v0.6.0/go.mod h1:ymb2iSkyOycmzKwbEAYPJV/yi2rSm github.com/speakeasy-api/openapi-overlay v0.10.2 h1:VOdQ03eGKeiHnpb1boZCGm7x8Haj6gST0P3SGTX95GU= github.com/speakeasy-api/openapi-overlay v0.10.2/go.mod h1:n0iOU7AqKpNFfEt6tq7qYITC4f0yzVVdFw0S7hukemg= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= -github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= +github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= +github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= github.com/spf13/cast v0.0.0-20150508191742-4d07383ffe94/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= -github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= +github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v0.0.1/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/jwalterweatherman v0.0.0-20141219030609-3d60171a6431/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.0/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v0.0.0-20150530192845-be5ff3e4840c/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= -github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= -github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= +github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= +github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY= github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -909,6 +910,8 @@ github.com/warthog618/go-gpiocdev v0.9.1 h1:pwHPaqjJfhCipIQl78V+O3l9OKHivdRDdmgX github.com/warthog618/go-gpiocdev v0.9.1/go.mod h1:dN3e3t/S2aSNC+hgigGE/dBW8jE1ONk9bDSEYfoPyl8= github.com/warthog618/go-gpiosim v0.1.1 h1:MRAEv+T+itmw+3GeIGpQJBfanUVyg0l3JCTwHtwdre4= github.com/warthog618/go-gpiosim v0.1.1/go.mod h1:YXsnB+I9jdCMY4YAlMSRrlts25ltjmuIsrnoUrBLdqU= +github.com/woodsbury/decimal128 v1.3.0 h1:8pffMNWIlC0O5vbyHWFZAt5yWvWcrHA+3ovIIjVWss0= +github.com/woodsbury/decimal128 v1.3.0/go.mod h1:C5UTmyTjW3JftjUFzOVhC20BEQa2a4ZKOB5I6Zjb+ds= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= @@ -962,16 +965,16 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0 h1:0tY123n7CdWMem7MOVdKOt0YfshufLCwfE5Bob+hQuM= go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0/go.mod h1:CosX/aS4eHnG9D7nESYpV753l4j9q5j3SL/PUYd2lR8= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 h1:sbiXRNDSWJOTobXh5HyQKjq6wUC5tNybqjIqDpAY4CU= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0 h1:QcFwRrZLc82r8wODjvyCbP7Ifp3UANaBSmhDSFjnqSc= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0/go.mod h1:CXIWhUomyWBG/oY2/r/kLp6K/cmx9e/7DLpBuuGdLCA= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.35.0 h1:0NIXxOCFx+SKbhCVxwl3ETG8ClLPAa0KuKV6p3yhxP8= @@ -982,27 +985,25 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 h1:xJ2qHD0C1BeYVTLLR9sX12+Qb95kfeD/byKj6Ky1pXg= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0/go.mod h1:u5BF1xyjstDowA1R5QAO9JHzqK+ublenEW/dyqTjBVk= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/mock v0.5.2 h1:LbtPTcP8A5k9WPXj54PPPbjcI4Y6lhyOZXn+VS7wNko= go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= -go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -1017,8 +1018,8 @@ golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= +golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1055,8 +1056,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= -golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1101,8 +1102,8 @@ golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1115,8 +1116,8 @@ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1129,8 +1130,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1197,13 +1198,13 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= -golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= +golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q= +golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1214,8 +1215,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1275,8 +1276,8 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= -golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1353,10 +1354,10 @@ google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU= -google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.0.5/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -1378,8 +1379,8 @@ google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1392,8 +1393,8 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/cenkalti/backoff.v2 v2.2.1 h1:eJ9UAg01/HIHG987TwxvnzK2MgxXq97YY6rYDpY9aII= diff --git a/internal/api/api.go b/internal/api/api.go index 1d825317f..65c667712 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -56,7 +56,7 @@ func NewHTTPRouter( mux.Handle("GET /v1/version", handlers.HandlerVersion(version)) mux.Handle("GET /v1/config", handlers.HandleConfig(cfg)) mux.Handle("GET /v1/bricks", handlers.HandleBrickList(brickService)) - mux.Handle("GET /v1/bricks/{brickID}", handlers.HandleBrickDetails(brickService)) + mux.Handle("GET /v1/bricks/{brickID}", handlers.HandleBrickDetails(brickService, idProvider, cfg)) mux.Handle("GET /v1/properties", handlers.HandlePropertyKeys(cfg)) mux.Handle("GET /v1/properties/{key}", handlers.HandlePropertyGet(cfg)) @@ -81,7 +81,7 @@ func NewHTTPRouter( mux.Handle("POST /v1/apps/{appID}/start", handlers.HandleAppStart(dockerClient, provisioner, modelsIndex, bricksIndex, idProvider, cfg, staticStore)) mux.Handle("POST /v1/apps/{appID}/stop", handlers.HandleAppStop(dockerClient, idProvider)) mux.Handle("POST /v1/apps/{appID}/clone", handlers.HandleAppClone(dockerClient, idProvider, cfg)) - mux.Handle("DELETE /v1/apps/{appID}", handlers.HandleAppDelete(idProvider)) + mux.Handle("DELETE /v1/apps/{appID}", handlers.HandleAppDelete(dockerClient, idProvider)) mux.Handle("GET /v1/apps/{appID}/exposed-ports", handlers.HandleAppPorts(bricksIndex, idProvider)) mux.Handle("PUT /v1/apps/{appID}/sketch/libraries/{libRef}", handlers.HandleSketchAddLibrary(idProvider)) mux.Handle("DELETE /v1/apps/{appID}/sketch/libraries/{libRef}", handlers.HandleSketchRemoveLibrary(idProvider)) diff --git a/internal/api/docs/openapi.yaml b/internal/api/docs/openapi.yaml index 577d77d1d..2b34f1a94 100644 --- a/internal/api/docs/openapi.yaml +++ b/internal/api/docs/openapi.yaml @@ -45,12 +45,6 @@ paths: description: Creates a new app in the default app location. operationId: createApp parameters: - - description: If true, the app will not be created with the python part. - in: query - name: skip-python - schema: - description: If true, the app will not be created with the python part. - type: boolean - description: If true, the app will not be created with the sketch part. in: query name: skip-sketch @@ -302,6 +296,14 @@ paths: from the sketch project file. operationId: appSketchRemoveLibrary parameters: + - description: if set to "true", the library's dependencies will be removed + as well if not needed anymore. + in: query + name: remove_deps + schema: + description: if set to "true", the library's dependencies will be removed + as well if not needed anymore. + type: string - description: application identifier. in: path name: appID @@ -1147,6 +1149,15 @@ components: $ref: '#/components/schemas/ErrorResponse' description: Precondition Failed schemas: + AIModel: + properties: + description: + type: string + id: + type: string + name: + type: string + type: object AIModelItem: properties: brick_ids: @@ -1183,7 +1194,7 @@ components: properties: bricks: items: - $ref: '#/components/schemas/BrickInstance' + $ref: '#/components/schemas/BrickInstanceListItem' nullable: true type: array type: object @@ -1195,6 +1206,8 @@ components: type: string name: type: string + require_model: + type: boolean required: - id - name @@ -1276,6 +1289,17 @@ components: name: type: string type: object + BrickConfigVariable: + properties: + description: + type: string + name: + type: string + required: + type: boolean + value: + type: string + type: object BrickCreateUpdateRequest: properties: model: @@ -1299,6 +1323,16 @@ components: $ref: '#/components/schemas/CodeExample' nullable: true type: array + compatible_models: + items: + $ref: '#/components/schemas/AIModel' + nullable: true + type: array + config_variables: + items: + $ref: '#/components/schemas/BrickConfigVariable' + nullable: true + type: array description: type: string id: @@ -1307,6 +1341,8 @@ components: type: string readme: type: string + require_model: + type: boolean status: type: string used_by_apps: @@ -1317,6 +1353,9 @@ components: variables: additionalProperties: $ref: '#/components/schemas/BrickVariable' + description: 'Deprecated: use config_variables instead. This field is kept + for backward compatibility.' + nullable: true type: object type: object BrickInstance: @@ -1325,17 +1364,57 @@ components: type: string category: type: string + compatible_models: + items: + $ref: '#/components/schemas/AIModel' + nullable: true + type: array + config_variables: + items: + $ref: '#/components/schemas/BrickConfigVariable' + type: array + id: + type: string + model: + type: string + name: + type: string + require_model: + type: boolean + status: + type: string + variables: + additionalProperties: + type: string + description: 'Deprecated: use config_variables instead. This field is kept + for backward compatibility.' + type: object + type: object + BrickInstanceListItem: + properties: + author: + type: string + category: + type: string + config_variables: + items: + $ref: '#/components/schemas/BrickConfigVariable' + type: array id: type: string model: type: string name: type: string + require_model: + type: boolean status: type: string variables: additionalProperties: type: string + description: 'Deprecated: use config_variables instead. This field is kept + for backward compatibility.' type: object type: object BrickListItem: @@ -1348,13 +1427,10 @@ components: type: string id: type: string - models: - items: - type: string - nullable: true - type: array name: type: string + require_model: + type: boolean status: type: string type: object diff --git a/internal/api/handlers/app_create.go b/internal/api/handlers/app_create.go index ed26ee612..9e757bfe1 100644 --- a/internal/api/handlers/app_create.go +++ b/internal/api/handlers/app_create.go @@ -44,17 +44,9 @@ func HandleAppCreate( defer r.Body.Close() queryParams := r.URL.Query() - skipPythonStr := queryParams.Get("skip-python") skipSketchStr := queryParams.Get("skip-sketch") - - skipPython := queryParamsValidator(skipPythonStr) skipSketch := queryParamsValidator(skipSketchStr) - if skipPython && skipSketch { - render.EncodeResponse(w, http.StatusBadRequest, models.ErrorResponse{Details: "cannot skip both python and sketch"}) - return - } - var req CreateAppRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { slog.Error("unable to decode app create request", slog.String("error", err.Error())) @@ -68,7 +60,6 @@ func HandleAppCreate( Name: req.Name, Icon: req.Icon, Description: req.Description, - SkipPython: skipPython, SkipSketch: skipSketch, }, idProvider, diff --git a/internal/api/handlers/app_delete.go b/internal/api/handlers/app_delete.go index 864dd4059..99d72cf1a 100644 --- a/internal/api/handlers/app_delete.go +++ b/internal/api/handlers/app_delete.go @@ -19,13 +19,18 @@ import ( "log/slog" "net/http" + "github.com/docker/cli/cli/command" + "github.com/arduino/arduino-app-cli/internal/api/models" "github.com/arduino/arduino-app-cli/internal/orchestrator" "github.com/arduino/arduino-app-cli/internal/orchestrator/app" "github.com/arduino/arduino-app-cli/internal/render" ) -func HandleAppDelete(idProvider *app.IDProvider) http.HandlerFunc { +func HandleAppDelete( + dockerClient command.Cli, + idProvider *app.IDProvider, +) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { id, err := idProvider.IDFromBase64(r.PathValue("appID")) if err != nil { @@ -37,14 +42,14 @@ func HandleAppDelete(idProvider *app.IDProvider) http.HandlerFunc { return } - app, err := app.Load(id.ToPath().String()) + app, err := app.Load(id.ToPath()) if err != nil { slog.Error("Unable to parse the app.yaml", slog.String("error", err.Error()), slog.String("path", id.String())) render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to find the app"}) return } - err = orchestrator.DeleteApp(r.Context(), app) + err = orchestrator.DeleteApp(r.Context(), dockerClient, app) if err != nil { slog.Error("Unable to delete the app", slog.String("error", err.Error())) render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to delete the app"}) diff --git a/internal/api/handlers/app_details.go b/internal/api/handlers/app_details.go index 72c74bdd9..1795ae427 100644 --- a/internal/api/handlers/app_details.go +++ b/internal/api/handlers/app_details.go @@ -45,7 +45,7 @@ func HandleAppDetails( return } - app, err := app.Load(id.ToPath().String()) + app, err := app.Load(id.ToPath()) if err != nil { slog.Error("Unable to parse the app.yaml", slog.String("error", err.Error()), slog.String("path", id.String())) render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to find the app"}) @@ -81,7 +81,7 @@ func HandleAppDetailsEdits( render.EncodeResponse(w, http.StatusPreconditionFailed, models.ErrorResponse{Details: "invalid id"}) return } - appToEdit, err := app.Load(id.ToPath().String()) + appToEdit, err := app.Load(id.ToPath()) if err != nil { slog.Error("Unable to parse the app.yaml", slog.String("error", err.Error()), slog.String("path", id.String())) render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to find the app"}) diff --git a/internal/api/handlers/app_logs.go b/internal/api/handlers/app_logs.go index 2cf44c87e..0fece050b 100644 --- a/internal/api/handlers/app_logs.go +++ b/internal/api/handlers/app_logs.go @@ -43,7 +43,7 @@ func HandleAppLogs( return } - app, err := app.Load(id.ToPath().String()) + app, err := app.Load(id.ToPath()) if err != nil { slog.Error("Unable to parse the app.yaml", slog.String("error", err.Error()), slog.String("path", id.String())) render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to find the app"}) diff --git a/internal/api/handlers/app_ports.go b/internal/api/handlers/app_ports.go index 8671cd7e5..c405c3a3c 100644 --- a/internal/api/handlers/app_ports.go +++ b/internal/api/handlers/app_ports.go @@ -47,7 +47,7 @@ func HandleAppPorts( return } - app, err := app.Load(id.ToPath().String()) + app, err := app.Load(id.ToPath()) if err != nil { slog.Error("Unable to parse the app.yaml", slog.String("error", err.Error()), slog.String("path", id.String())) render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to find the app"}) diff --git a/internal/api/handlers/app_sketch_libs.go b/internal/api/handlers/app_sketch_libs.go index 43969572d..f90e14707 100644 --- a/internal/api/handlers/app_sketch_libs.go +++ b/internal/api/handlers/app_sketch_libs.go @@ -36,7 +36,7 @@ func HandleSketchAddLibrary(idProvider *app.IDProvider) http.HandlerFunc { render.EncodeResponse(w, http.StatusBadRequest, models.ErrorResponse{Details: "cannot alter examples"}) return } - app, err := app.Load(id.ToPath().String()) + app, err := app.Load(id.ToPath()) // Get query param addDeps (default false) addDeps, _ := strconv.ParseBool(r.URL.Query().Get("add_deps")) @@ -78,7 +78,7 @@ func HandleSketchRemoveLibrary(idProvider *app.IDProvider) http.HandlerFunc { render.EncodeResponse(w, http.StatusBadRequest, models.ErrorResponse{Details: "cannot alter examples"}) return } - app, err := app.Load(id.ToPath().String()) + app, err := app.Load(id.ToPath()) if err != nil { render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to find the app"}) return @@ -90,12 +90,14 @@ func HandleSketchRemoveLibrary(idProvider *app.IDProvider) http.HandlerFunc { return } - if removedLib, err := orchestrator.RemoveSketchLibrary(r.Context(), app, libRef); err != nil { - render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to remove sketch library"}) + // Get query param addDeps (default false) + removeDeps, _ := strconv.ParseBool(r.URL.Query().Get("remove_deps")) + if removedLibs, err := orchestrator.RemoveSketchLibrary(r.Context(), app, libRef, removeDeps); err != nil { + render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to remove sketch library: " + err.Error()}) return } else { render.EncodeResponse(w, http.StatusOK, SketchRemoveLibraryResponse{ - RemovedLibraries: []orchestrator.LibraryReleaseID{removedLib}, + RemovedLibraries: removedLibs, }) return } @@ -114,7 +116,7 @@ func HandleSketchListLibraries(idProvider *app.IDProvider) http.HandlerFunc { render.EncodeResponse(w, http.StatusPreconditionFailed, models.ErrorResponse{Details: "invalid id"}) return } - app, err := app.Load(id.ToPath().String()) + app, err := app.Load(id.ToPath()) if err != nil { render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to find the app"}) return @@ -122,7 +124,7 @@ func HandleSketchListLibraries(idProvider *app.IDProvider) http.HandlerFunc { libraries, err := orchestrator.ListSketchLibraries(r.Context(), app) if err != nil { - render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to clone app"}) + render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to list sketch libraries: " + err.Error()}) return } render.EncodeResponse(w, http.StatusOK, SketchListLibraryResponse{ diff --git a/internal/api/handlers/app_start.go b/internal/api/handlers/app_start.go index 0293aff0c..bfd8a0348 100644 --- a/internal/api/handlers/app_start.go +++ b/internal/api/handlers/app_start.go @@ -47,7 +47,7 @@ func HandleAppStart( return } - app, err := app.Load(id.ToPath().String()) + app, err := app.Load(id.ToPath()) if err != nil { slog.Error("Unable to parse the app.yaml", slog.String("error", err.Error()), slog.String("path", id.String())) render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to find the app"}) diff --git a/internal/api/handlers/app_stop.go b/internal/api/handlers/app_stop.go index 0b9ec8c06..a013ef9e0 100644 --- a/internal/api/handlers/app_stop.go +++ b/internal/api/handlers/app_stop.go @@ -38,7 +38,7 @@ func HandleAppStop( return } - app, err := app.Load(id.ToPath().String()) + app, err := app.Load(id.ToPath()) if err != nil { slog.Error("Unable to parse the app.yaml", slog.String("error", err.Error()), slog.String("path", id.String())) render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to find the app"}) @@ -60,7 +60,7 @@ func HandleAppStop( type log struct { Message string `json:"message"` } - for item := range orchestrator.StopApp(r.Context(), app) { + for item := range orchestrator.StopApp(r.Context(), dockerClient, app) { switch item.GetType() { case orchestrator.ProgressType: sseStream.Send(render.SSEEvent{Type: "progress", Data: progress(*item.GetProgress())}) diff --git a/internal/api/handlers/bricks.go b/internal/api/handlers/bricks.go index d21c6b3a8..f3d22c6dc 100644 --- a/internal/api/handlers/bricks.go +++ b/internal/api/handlers/bricks.go @@ -26,6 +26,7 @@ import ( "github.com/arduino/arduino-app-cli/internal/api/models" "github.com/arduino/arduino-app-cli/internal/orchestrator/app" "github.com/arduino/arduino-app-cli/internal/orchestrator/bricks" + "github.com/arduino/arduino-app-cli/internal/orchestrator/config" "github.com/arduino/arduino-app-cli/internal/render" ) @@ -54,7 +55,7 @@ func HandleAppBrickInstancesList( } appPath := appId.ToPath() - app, err := app.Load(appPath.String()) + app, err := app.Load(appPath) if err != nil { slog.Error("Unable to parse the app.yaml", slog.String("error", err.Error()), slog.String("path", appId.String())) render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to find the app"}) @@ -84,7 +85,7 @@ func HandleAppBrickInstanceDetails( } appPath := appId.ToPath() - app, err := app.Load(appPath.String()) + app, err := app.Load(appPath) if err != nil { slog.Error("Unable to parse the app.yaml", slog.String("error", err.Error()), slog.String("path", appId.String())) render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to find the app"}) @@ -119,7 +120,7 @@ func HandleBrickCreate( } appPath := appId.ToPath() - app, err := app.Load(appPath.String()) + app, err := app.Load(appPath) if err != nil { slog.Error("Unable to parse the app.yaml", slog.String("error", err.Error()), slog.String("path", appId.String())) render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to find the app"}) @@ -145,7 +146,7 @@ func HandleBrickCreate( err = brickService.BrickCreate(req, app) if err != nil { // TODO: handle specific errors - slog.Error("Unable to parse the app.yaml", slog.String("error", err.Error())) + slog.Error("Unable to create brick", slog.String("error", err.Error())) render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "error while creating or updating brick"}) return } @@ -153,14 +154,15 @@ func HandleBrickCreate( } } -func HandleBrickDetails(brickService *bricks.Service) http.HandlerFunc { +func HandleBrickDetails(brickService *bricks.Service, idProvider *app.IDProvider, + cfg config.Configuration) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { id := r.PathValue("brickID") if id == "" { render.EncodeResponse(w, http.StatusBadRequest, models.ErrorResponse{Details: "id must be set"}) return } - res, err := brickService.BricksDetails(id) + res, err := brickService.BricksDetails(id, idProvider, cfg) if err != nil { if errors.Is(err, bricks.ErrBrickNotFound) { details := fmt.Sprintf("brick with id %q not found", id) @@ -188,7 +190,7 @@ func HandleBrickUpdates( } appPath := appId.ToPath() - app, err := app.Load(appPath.String()) + app, err := app.Load(appPath) if err != nil { slog.Error("Unable to parse the app.yaml", slog.String("error", err.Error()), slog.String("path", appId.String())) render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to find the app"}) @@ -211,7 +213,7 @@ func HandleBrickUpdates( req.ID = id err = brickService.BrickUpdate(req, app) if err != nil { - slog.Error("Unable to parse the app.yaml", slog.String("error", err.Error())) + slog.Error("Unable to update the brick", slog.String("error", err.Error())) render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to update the brick"}) return @@ -234,7 +236,7 @@ func HandleBrickDelete( } appPath := appId.ToPath() - app, err := app.Load(appPath.String()) + app, err := app.Load(appPath) if err != nil { slog.Error("Unable to parse the app.yaml", slog.String("error", err.Error()), slog.String("path", appId.String())) render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to find the app"}) diff --git a/internal/api/handlers/monitor.go b/internal/api/handlers/monitor.go index e421283f5..08492cd15 100644 --- a/internal/api/handlers/monitor.go +++ b/internal/api/handlers/monitor.go @@ -16,90 +16,19 @@ package handlers import ( - "errors" "fmt" - "io" "log/slog" "net" "net/http" "strings" - "time" "github.com/gorilla/websocket" "github.com/arduino/arduino-app-cli/internal/api/models" + "github.com/arduino/arduino-app-cli/internal/monitor" "github.com/arduino/arduino-app-cli/internal/render" ) -func monitorStream(mon net.Conn, ws *websocket.Conn) { - logWebsocketError := func(msg string, err error) { - // Do not log simple close or interruption errors - if websocket.IsUnexpectedCloseError(err, websocket.CloseNormalClosure, websocket.CloseGoingAway, websocket.CloseNoStatusReceived, websocket.CloseAbnormalClosure) { - if e, ok := err.(*websocket.CloseError); ok { - slog.Error(msg, slog.String("closecause", fmt.Sprintf("%d: %s", e.Code, err))) - } else { - slog.Error(msg, slog.String("error", err.Error())) - } - } - } - logSocketError := func(msg string, err error) { - if !errors.Is(err, net.ErrClosed) && !errors.Is(err, io.EOF) { - slog.Error(msg, slog.String("error", err.Error())) - } - } - go func() { - defer mon.Close() - defer ws.Close() - for { - // Read from websocket and write to monitor - _, msg, err := ws.ReadMessage() - if err != nil { - logWebsocketError("Error reading from websocket", err) - return - } - if _, err := mon.Write(msg); err != nil { - logSocketError("Error writing to monitor", err) - return - } - } - }() - go func() { - defer mon.Close() - defer ws.Close() - buff := [1024]byte{} - for { - // Read from monitor and write to websocket - n, err := mon.Read(buff[:]) - if err != nil { - logSocketError("Error reading from monitor", err) - return - } - - if err := ws.WriteMessage(websocket.BinaryMessage, buff[:n]); err != nil { - logWebsocketError("Error writing to websocket", err) - return - } - } - }() -} - -func checkOrigin(origin string, allowedOrigins []string) bool { - for _, allowed := range allowedOrigins { - if strings.HasSuffix(allowed, "*") { - // String ends with *, match the prefix - if strings.HasPrefix(origin, strings.TrimSuffix(allowed, "*")) { - return true - } - } else { - // Exact match - if allowed == origin { - return true - } - } - } - return false -} - func HandleMonitorWS(allowedOrigins []string) http.HandlerFunc { upgrader := websocket.Upgrader{ ReadBufferSize: 1024, @@ -110,19 +39,10 @@ func HandleMonitorWS(allowedOrigins []string) http.HandlerFunc { } return func(w http.ResponseWriter, r *http.Request) { - // Connect to monitor - mon, err := net.DialTimeout("tcp", "127.0.0.1:7500", time.Second) - if err != nil { - slog.Error("Unable to connect to monitor", slog.String("error", err.Error())) - render.EncodeResponse(w, http.StatusServiceUnavailable, models.ErrorResponse{Details: "Unable to connect to monitor: " + err.Error()}) - return - } - // Upgrade the connection to websocket conn, err := upgrader.Upgrade(w, r, nil) if err != nil { // Remember to close monitor connection if websocket upgrade fails. - mon.Close() slog.Error("Failed to upgrade connection", slog.String("error", err.Error())) render.EncodeResponse(w, http.StatusInternalServerError, map[string]string{"error": "Failed to upgrade connection: " + err.Error()}) @@ -130,8 +50,102 @@ func HandleMonitorWS(allowedOrigins []string) http.HandlerFunc { } // Now the connection is managed by the websocket library, let's move the handlers in the goroutine - go monitorStream(mon, conn) + start, err := monitor.NewMonitorHandler(&wsReadWriteCloser{conn: conn}) + if err != nil { + slog.Error("Unable to start monitor handler", slog.String("error", err.Error())) + render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "Unable to start monitor handler: " + err.Error()}) + return + } + go start() // and return nothing to the http library } } + +func splitOrigin(origin string) (scheme, host, port string, err error) { + parts := strings.SplitN(origin, "://", 2) + if len(parts) != 2 { + return "", "", "", fmt.Errorf("invalid origin format: %s", origin) + } + scheme = parts[0] + hostPort := parts[1] + hostParts := strings.SplitN(hostPort, ":", 2) + host = hostParts[0] + if len(hostParts) == 2 { + port = hostParts[1] + } else { + port = "*" + } + return scheme, host, port, nil +} + +func checkOrigin(origin string, allowedOrigins []string) bool { + scheme, host, port, err := splitOrigin(origin) + if err != nil { + slog.Error("WebSocket origin check failed", slog.String("origin", origin), slog.String("error", err.Error())) + return false + } + for _, allowed := range allowedOrigins { + allowedScheme, allowedHost, allowedPort, err := splitOrigin(allowed) + if err != nil { + panic(err) + } + if allowedScheme != scheme { + continue + } + if allowedHost != host && allowedHost != "*" { + continue + } + if allowedPort != port && allowedPort != "*" { + continue + } + return true + } + slog.Error("WebSocket origin check failed", slog.String("origin", origin)) + return false +} + +type wsReadWriteCloser struct { + conn *websocket.Conn + + buff []byte +} + +func (w *wsReadWriteCloser) Read(p []byte) (n int, err error) { + if len(w.buff) > 0 { + n = copy(p, w.buff) + w.buff = w.buff[n:] + return n, nil + } + + ty, message, err := w.conn.ReadMessage() + if err != nil { + return 0, mapWebSocketErrors(err) + } + if ty != websocket.BinaryMessage && ty != websocket.TextMessage { + return + } + n = copy(p, message) + w.buff = message[n:] + return n, nil +} + +func (w *wsReadWriteCloser) Write(p []byte) (n int, err error) { + err = w.conn.WriteMessage(websocket.BinaryMessage, p) + if err != nil { + return 0, mapWebSocketErrors(err) + } + return len(p), nil +} + +func (w *wsReadWriteCloser) Close() error { + w.buff = nil + return w.conn.Close() +} + +func mapWebSocketErrors(err error) error { + if websocket.IsUnexpectedCloseError(err, websocket.CloseNormalClosure, websocket.CloseGoingAway, websocket.CloseNoStatusReceived, websocket.CloseAbnormalClosure) { + return net.ErrClosed + } + return err +} diff --git a/internal/api/handlers/monitor_test.go b/internal/api/handlers/monitor_test.go new file mode 100644 index 000000000..e54c7f24d --- /dev/null +++ b/internal/api/handlers/monitor_test.go @@ -0,0 +1,52 @@ +// This file is part of arduino-app-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-app-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package handlers + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestCheckOrigin(t *testing.T) { + origins := []string{ + "wails://wails", + "wails://wails.localhost:*", + "http://wails.localhost:*", + "http://localhost:*", + "https://localhost:*", + "http://example.com:7000", + "https://*:443", + } + + allow := func(origin string) { + require.True(t, checkOrigin(origin, origins), "Expected origin %s to be allowed", origin) + } + deny := func(origin string) { + require.False(t, checkOrigin(origin, origins), "Expected origin %s to be denied", origin) + } + allow("wails://wails") + allow("wails://wails:8000") + allow("http://wails.localhost") + allow("http://localhost") + allow("http://example.com:7000") + allow("https://blah.com:443") + deny("wails://evil.com") + deny("https://wails.localhost:8000") + deny("http://example.com:8000") + deny("http://blah.com:443") + deny("https://blah.com:8080") +} diff --git a/internal/api/handlers/update.go b/internal/api/handlers/update.go index 41ac992b2..49ec1b294 100644 --- a/internal/api/handlers/update.go +++ b/internal/api/handlers/update.go @@ -16,7 +16,6 @@ package handlers import ( - "errors" "net/http" "strings" @@ -43,14 +42,20 @@ func HandleCheckUpgradable(updater *update.Manager) http.HandlerFunc { pkgs, err := updater.ListUpgradablePackages(r.Context(), filterFunc) if err != nil { - if errors.Is(err, update.ErrOperationAlreadyInProgress) { - render.EncodeResponse(w, http.StatusConflict, models.ErrorResponse{Details: err.Error()}) + code := update.GetUpdateErrorCode(err) + if code == update.OperationInProgressCode { + render.EncodeResponse(w, http.StatusConflict, models.ErrorResponse{ + Code: string(code), + Details: err.Error(), + }) return } - render.EncodeResponse(w, http.StatusBadRequest, models.ErrorResponse{Details: "Error checking for upgradable packages: " + err.Error()}) + render.EncodeResponse(w, http.StatusBadRequest, models.ErrorResponse{ + Code: string(code), + Details: err.Error(), + }) return } - if len(pkgs) == 0 { render.EncodeResponse(w, http.StatusNoContent, nil) return @@ -79,27 +84,40 @@ func HandleUpdateApply(updater *update.Manager) http.HandlerFunc { pkgs, err := updater.ListUpgradablePackages(r.Context(), filterFunc) if err != nil { - if errors.Is(err, update.ErrOperationAlreadyInProgress) { - render.EncodeResponse(w, http.StatusConflict, models.ErrorResponse{Details: err.Error()}) + code := update.GetUpdateErrorCode(err) + if code == update.OperationInProgressCode { + render.EncodeResponse(w, http.StatusConflict, models.ErrorResponse{ + Code: string(code), + Details: err.Error(), + }) return } slog.Error("Unable to get upgradable packages", slog.String("error", err.Error())) - render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "Error checking for upgradable packages"}) + render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{ + Code: string(code), + Details: err.Error(), + }) return } - if len(pkgs) == 0 { - render.EncodeResponse(w, http.StatusNoContent, models.ErrorResponse{Details: "System is up to date, no upgradable packages found"}) + render.EncodeResponse(w, http.StatusNoContent, nil) return } err = updater.UpgradePackages(r.Context(), pkgs) if err != nil { - if errors.Is(err, update.ErrOperationAlreadyInProgress) { - render.EncodeResponse(w, http.StatusConflict, models.ErrorResponse{Details: err.Error()}) + code := update.GetUpdateErrorCode(err) + if code == update.OperationInProgressCode { + render.EncodeResponse(w, http.StatusConflict, models.ErrorResponse{ + Code: string(code), + Details: err.Error(), + }) return } - render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "Error upgrading packages"}) + render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{ + Code: string(code), + Details: err.Error(), + }) return } @@ -109,6 +127,13 @@ func HandleUpdateApply(updater *update.Manager) http.HandlerFunc { func HandleUpdateEvents(updater *update.Manager) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { + // HOTFIX: app-lab use HEAD requests to check endpoint availability + // so we need to handle them here by early return without opening SSE stream + if r.Method == http.MethodHead { + render.EncodeResponse(w, http.StatusOK, nil) + return + } + sseStream, err := render.NewSSEStream(r.Context(), w) if err != nil { slog.Error("Unable to create SSE stream", slog.String("error", err.Error())) @@ -128,14 +153,19 @@ func HandleUpdateEvents(updater *update.Manager) http.HandlerFunc { return } if event.Type == update.ErrorEvent { + err := event.GetError() + code := render.InternalServiceErr + if c := update.GetUpdateErrorCode(err); c != update.UnknownErrorCode { + code = render.SSEErrCode(string(c)) + } sseStream.SendError(render.SSEErrorData{ - Code: render.InternalServiceErr, - Message: event.Data, + Code: code, + Message: err.Error(), }) } else { sseStream.Send(render.SSEEvent{ Type: event.Type.String(), - Data: event.Data, + Data: event.GetData(), }) } diff --git a/internal/api/models/errors.go b/internal/api/models/errors.go index e87aafe17..1bbe3ec51 100644 --- a/internal/api/models/errors.go +++ b/internal/api/models/errors.go @@ -16,5 +16,6 @@ package models type ErrorResponse struct { + Code string `json:"code,omitempty"` Details string `json:"details"` } diff --git a/internal/e2e/client/client.gen.go b/internal/e2e/client/client.gen.go index 9e12c9ec5..eb1a79715 100644 --- a/internal/e2e/client/client.gen.go +++ b/internal/e2e/client/client.gen.go @@ -1,6 +1,6 @@ // Package client provides primitives to interact with the openapi HTTP API. // -// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.5.0 DO NOT EDIT. +// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.5.1 DO NOT EDIT. package client import ( @@ -41,6 +41,13 @@ const ( StarsDesc ListLibrariesParamsSort = "stars_desc" ) +// AIModel defines model for AIModel. +type AIModel struct { + Description *string `json:"description,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` +} + // AIModelItem defines model for AIModelItem. type AIModelItem struct { BrickIds *[]string `json:"brick_ids"` @@ -59,14 +66,15 @@ type AIModelsListResult struct { // AppBrickInstancesResult defines model for AppBrickInstancesResult. type AppBrickInstancesResult struct { - Bricks *[]BrickInstance `json:"bricks"` + Bricks *[]BrickInstanceListItem `json:"bricks"` } // AppDetailedBrick defines model for AppDetailedBrick. type AppDetailedBrick struct { - Category *string `json:"category,omitempty"` - Id string `json:"id"` - Name string `json:"name"` + Category *string `json:"category,omitempty"` + Id string `json:"id"` + Name string `json:"name"` + RequireModel *bool `json:"require_model,omitempty"` } // AppDetailedInfo defines model for AppDetailedInfo. @@ -119,6 +127,14 @@ type AppReference struct { Name *string `json:"name,omitempty"` } +// BrickConfigVariable defines model for BrickConfigVariable. +type BrickConfigVariable struct { + Description *string `json:"description,omitempty"` + Name *string `json:"name,omitempty"` + Required *bool `json:"required,omitempty"` + Value *string `json:"value,omitempty"` +} + // BrickCreateUpdateRequest defines model for BrickCreateUpdateRequest. type BrickCreateUpdateRequest struct { Model *string `json:"model"` @@ -127,39 +143,64 @@ type BrickCreateUpdateRequest struct { // BrickDetailsResult defines model for BrickDetailsResult. type BrickDetailsResult struct { - ApiDocsPath *string `json:"api_docs_path,omitempty"` - Author *string `json:"author,omitempty"` - Category *string `json:"category,omitempty"` - CodeExamples *[]CodeExample `json:"code_examples"` - Description *string `json:"description,omitempty"` - Id *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Readme *string `json:"readme,omitempty"` - Status *string `json:"status,omitempty"` - UsedByApps *[]AppReference `json:"used_by_apps"` - Variables *map[string]BrickVariable `json:"variables,omitempty"` + ApiDocsPath *string `json:"api_docs_path,omitempty"` + Author *string `json:"author,omitempty"` + Category *string `json:"category,omitempty"` + CodeExamples *[]CodeExample `json:"code_examples"` + CompatibleModels *[]AIModel `json:"compatible_models"` + ConfigVariables *[]BrickConfigVariable `json:"config_variables"` + Description *string `json:"description,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Readme *string `json:"readme,omitempty"` + RequireModel *bool `json:"require_model,omitempty"` + Status *string `json:"status,omitempty"` + UsedByApps *[]AppReference `json:"used_by_apps"` + + // Variables Deprecated: use config_variables instead. This field is kept for backward compatibility. + Variables *map[string]BrickVariable `json:"variables"` } // BrickInstance defines model for BrickInstance. type BrickInstance struct { - Author *string `json:"author,omitempty"` - Category *string `json:"category,omitempty"` - Id *string `json:"id,omitempty"` - Model *string `json:"model,omitempty"` - Name *string `json:"name,omitempty"` - Status *string `json:"status,omitempty"` + Author *string `json:"author,omitempty"` + Category *string `json:"category,omitempty"` + CompatibleModels *[]AIModel `json:"compatible_models"` + ConfigVariables *[]BrickConfigVariable `json:"config_variables,omitempty"` + Id *string `json:"id,omitempty"` + Model *string `json:"model,omitempty"` + Name *string `json:"name,omitempty"` + RequireModel *bool `json:"require_model,omitempty"` + Status *string `json:"status,omitempty"` + + // Variables Deprecated: use config_variables instead. This field is kept for backward compatibility. + Variables *map[string]string `json:"variables,omitempty"` +} + +// BrickInstanceListItem defines model for BrickInstanceListItem. +type BrickInstanceListItem struct { + Author *string `json:"author,omitempty"` + Category *string `json:"category,omitempty"` + ConfigVariables *[]BrickConfigVariable `json:"config_variables,omitempty"` + Id *string `json:"id,omitempty"` + Model *string `json:"model,omitempty"` + Name *string `json:"name,omitempty"` + RequireModel *bool `json:"require_model,omitempty"` + Status *string `json:"status,omitempty"` + + // Variables Deprecated: use config_variables instead. This field is kept for backward compatibility. Variables *map[string]string `json:"variables,omitempty"` } // BrickListItem defines model for BrickListItem. type BrickListItem struct { - Author *string `json:"author,omitempty"` - Category *string `json:"category,omitempty"` - Description *string `json:"description,omitempty"` - Id *string `json:"id,omitempty"` - Models *[]string `json:"models"` - Name *string `json:"name,omitempty"` - Status *string `json:"status,omitempty"` + Author *string `json:"author,omitempty"` + Category *string `json:"category,omitempty"` + Description *string `json:"description,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + RequireModel *bool `json:"require_model,omitempty"` + Status *string `json:"status,omitempty"` } // BrickListResult defines model for BrickListResult. @@ -385,9 +426,6 @@ type GetAppsParams struct { // CreateAppParams defines parameters for CreateApp. type CreateAppParams struct { - // SkipPython If true, the app will not be created with the python part. - SkipPython *bool `form:"skip-python,omitempty" json:"skip-python,omitempty"` - // SkipSketch If true, the app will not be created with the sketch part. SkipSketch *bool `form:"skip-sketch,omitempty" json:"skip-sketch,omitempty"` } @@ -1249,22 +1287,6 @@ func NewCreateAppRequestWithBody(server string, params *CreateAppParams, content if params != nil { queryValues := queryURL.Query() - if params.SkipPython != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "skip-python", runtime.ParamLocationQuery, *params.SkipPython); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - if params.SkipSketch != nil { if queryFrag, err := runtime.StyleParamWithLocation("form", true, "skip-sketch", runtime.ParamLocationQuery, *params.SkipSketch); err != nil { diff --git a/internal/e2e/daemon/app_test.go b/internal/e2e/daemon/app_test.go index bc6556e6e..86479fc99 100644 --- a/internal/e2e/daemon/app_test.go +++ b/internal/e2e/daemon/app_test.go @@ -93,7 +93,6 @@ func TestCreateApp(t *testing.T) { { name: "should return 400 bad request when icon is not a single emoji", parameters: client.CreateAppParams{ - SkipPython: f.Ptr(false), SkipSketch: f.Ptr(false), }, body: client.CreateAppRequest{ @@ -107,7 +106,6 @@ func TestCreateApp(t *testing.T) { { name: "should create app successfully when icon is empty", parameters: client.CreateAppParams{ - SkipPython: f.Ptr(false), SkipSketch: f.Ptr(false), }, body: client.CreateAppRequest{ @@ -121,7 +119,6 @@ func TestCreateApp(t *testing.T) { { name: "should return 201 Created on first successful creation", parameters: client.CreateAppParams{ - SkipPython: f.Ptr(false), SkipSketch: f.Ptr(false), }, body: defaultRequestBody, @@ -130,30 +127,15 @@ func TestCreateApp(t *testing.T) { { name: "should return 409 Conflict when creating a duplicate app", parameters: client.CreateAppParams{ - SkipPython: f.Ptr(false), SkipSketch: f.Ptr(false), }, body: defaultRequestBody, expectedStatusCode: http.StatusConflict, expectedErrorDetails: f.Ptr("app already exists"), }, - { - name: "should return 201 Created on successful creation with skip_python", - parameters: client.CreateAppParams{ - SkipPython: f.Ptr(true), - SkipSketch: f.Ptr(false), - }, - body: client.CreateAppRequest{ - Icon: f.Ptr("🌎"), - Name: "HelloWorld_2", - Description: f.Ptr("My HelloWorld_2 description"), - }, - expectedStatusCode: http.StatusCreated, - }, { name: "should return 201 Created on successful creation with skip_sketch", parameters: client.CreateAppParams{ - SkipPython: f.Ptr(false), SkipSketch: f.Ptr(true), }, body: client.CreateAppRequest{ @@ -163,16 +145,6 @@ func TestCreateApp(t *testing.T) { }, expectedStatusCode: http.StatusCreated, }, - { - name: "should return 400 Bad Request when creating an app with both filters set to true", - parameters: client.CreateAppParams{ - SkipPython: f.Ptr(true), - SkipSketch: f.Ptr(true), - }, - body: defaultRequestBody, - expectedStatusCode: http.StatusBadRequest, - expectedErrorDetails: f.Ptr("cannot skip both python and sketch"), - }, } for _, tc := range testCases { @@ -470,7 +442,7 @@ func TestDeleteApp(t *testing.T) { t.Run("DeletingExampleApp_Fail", func(t *testing.T) { var actualResponseBody models.ErrorResponse - deleteResp, err := httpClient.DeleteApp(t.Context(), noExisitingExample) + deleteResp, err := httpClient.DeleteApp(t.Context(), "ZXhhbXBsZXM6anVzdGJsaW5f") require.NoError(t, err) defer deleteResp.Body.Close() @@ -783,9 +755,10 @@ func TestAppDetails(t *testing.T) { require.Len(t, *detailsResp.JSON200.Bricks, 1) require.Equal(t, client.AppDetailedBrick{ - Id: ImageClassifactionBrickID, - Name: "Image Classification", - Category: f.Ptr("video"), + Id: ImageClassifactionBrickID, + Name: "Image Classification", + Category: f.Ptr("video"), + RequireModel: f.Ptr(true), }, (*detailsResp.JSON200.Bricks)[0], ) @@ -818,7 +791,7 @@ func TestAppPorts(t *testing.T) { respBrick, err := httpClient.UpsertAppBrickInstanceWithResponse( t.Context(), *createResp.JSON201.Id, - StreamLitUi, + "arduino:streamlit_ui", client.BrickCreateUpdateRequest{}, func(ctx context.Context, req *http.Request) error { return nil }, ) @@ -984,7 +957,6 @@ func TestAppList(t *testing.T) { expectedAppNumber := 5 for i := 0; i < expectedAppNumber; i++ { r, err := httpClient.CreateApp(t.Context(), &client.CreateAppParams{ - SkipPython: f.Ptr(false), SkipSketch: f.Ptr(false), }, client.CreateAppRequest{ Icon: f.Ptr("🌎"), @@ -1002,7 +974,6 @@ func TestAppList(t *testing.T) { t.Run("AppListDefault_success", func(t *testing.T) { r, err := httpClient.CreateApp(t.Context(), &client.CreateAppParams{ - SkipPython: f.Ptr(false), SkipSketch: f.Ptr(false), }, client.CreateAppRequest{ Icon: f.Ptr("🌎"), diff --git a/internal/e2e/daemon/brick_test.go b/internal/e2e/daemon/brick_test.go index ab04859f3..cd3361a01 100644 --- a/internal/e2e/daemon/brick_test.go +++ b/internal/e2e/daemon/brick_test.go @@ -24,13 +24,44 @@ import ( "github.com/arduino/go-paths-helper" "github.com/stretchr/testify/require" + "go.bug.st/f" "github.com/arduino/arduino-app-cli/internal/api/models" + "github.com/arduino/arduino-app-cli/internal/e2e/client" "github.com/arduino/arduino-app-cli/internal/orchestrator/bricksindex" "github.com/arduino/arduino-app-cli/internal/orchestrator/config" "github.com/arduino/arduino-app-cli/internal/store" ) +func setupTestBrick(t *testing.T) (*client.CreateAppResp, *client.ClientWithResponses) { + httpClient := GetHttpclient(t) + createResp, err := httpClient.CreateAppWithResponse( + t.Context(), + &client.CreateAppParams{SkipSketch: f.Ptr(true)}, + client.CreateAppRequest{ + Icon: f.Ptr("💻"), + Name: "test-app", + Description: f.Ptr("My app description"), + }, + func(ctx context.Context, req *http.Request) error { return nil }, + ) + require.NoError(t, err) + require.Equal(t, http.StatusCreated, createResp.StatusCode()) + require.NotNil(t, createResp.JSON201) + + resp, err := httpClient.UpsertAppBrickInstanceWithResponse( + t.Context(), + *createResp.JSON201.Id, + ImageClassifactionBrickID, + client.BrickCreateUpdateRequest{Model: f.Ptr("mobilenet-image-classification")}, + func(ctx context.Context, req *http.Request) error { return nil }, + ) + require.NoError(t, err) + require.Equal(t, http.StatusOK, resp.StatusCode()) + + return createResp, httpClient +} + func TestBricksList(t *testing.T) { httpClient := GetHttpclient(t) @@ -41,7 +72,7 @@ func TestBricksList(t *testing.T) { require.NoError(t, err) staticStore := store.NewStaticStore(paths.New("testdata", "assets", cfg.RunnerVersion).String()) - brickIndex, err := bricksindex.GenerateBricksIndexFromFile(staticStore.GetAssetsFolder()) + brickIndex, err := bricksindex.Load(staticStore.GetAssetsFolder()) require.NoError(t, err) // Compare the response with the bricks index @@ -52,12 +83,13 @@ func TestBricksList(t *testing.T) { require.Equal(t, bIdx.Description, *brick.Description) require.Equal(t, "Arduino", *brick.Author) require.Equal(t, "installed", *brick.Status) + require.Equal(t, bIdx.RequireModel, *brick.RequireModel) } } func TestBricksDetails(t *testing.T) { + _, httpClient := setupTestBrick(t) - httpClient := GetHttpclient(t) t.Run("should return 404 Not Found for an invalid brick ID", func(t *testing.T) { invalidBrickID := "notvalidBrickId" var actualBody models.ErrorResponse @@ -76,6 +108,26 @@ func TestBricksDetails(t *testing.T) { t.Run("should return 200 OK with full details for a valid brick ID", func(t *testing.T) { validBrickID := "arduino:image_classification" + expectedUsedByApps := []client.AppReference{ + { + Id: f.Ptr("dXNlcjp0ZXN0LWFwcA"), + Name: f.Ptr("test-app"), + Icon: f.Ptr("💻"), + }, + } + + expectedModelLiteInfo := []client.AIModel{ + { + Id: f.Ptr("mobilenet-image-classification"), + Name: f.Ptr("General purpose image classification"), + Description: f.Ptr("General purpose image classification model based on MobileNetV2. This model is trained on the ImageNet dataset and can classify images into 1000 categories."), + }, + { + Id: f.Ptr("person-classification"), + Name: f.Ptr("Person classification"), + Description: f.Ptr("Person classification model based on WakeVision dataset. This model is trained to classify images into two categories: person and not-person."), + }} + response, err := httpClient.GetBrickDetailsWithResponse(t.Context(), validBrickID, func(ctx context.Context, req *http.Request) error { return nil }) require.NoError(t, err) require.Equal(t, http.StatusOK, response.StatusCode(), "status code should be 200 ok") @@ -85,13 +137,14 @@ func TestBricksDetails(t *testing.T) { require.Equal(t, "Image Classification", *response.JSON200.Name) require.NotEmpty(t, *response.JSON200.Description, "description should not be empty") require.Equal(t, "video", *response.JSON200.Category) - require.Equal(t, "/home/arduino/.arduino-bricks/ei-models", *(*response.JSON200.Variables)["CUSTOM_MODEL_PATH"].DefaultValue) - require.Equal(t, "path to the custom model directory", *(*response.JSON200.Variables)["CUSTOM_MODEL_PATH"].Description) - require.Equal(t, false, *(*response.JSON200.Variables)["CUSTOM_MODEL_PATH"].Required) - require.Equal(t, "/models/ootb/ei/mobilenet-v2-224px.eim", *(*response.JSON200.Variables)["EI_CLASSIFICATION_MODEL"].DefaultValue) - require.Equal(t, "path to the model file", *(*response.JSON200.Variables)["EI_CLASSIFICATION_MODEL"].Description) - require.Equal(t, false, *(*response.JSON200.Variables)["EI_CLASSIFICATION_MODEL"].Required) require.NotEmpty(t, *response.JSON200.Readme) - require.Nil(t, response.JSON200.UsedByApps) + require.NotNil(t, response.JSON200.UsedByApps, "UsedByApps should not be nil") + require.Equal(t, expectedUsedByApps, *(response.JSON200.UsedByApps)) + require.NotNil(t, response.JSON200.CompatibleModels, "Models should not be nil") + require.Equal(t, expectedModelLiteInfo, *(response.JSON200.CompatibleModels)) + require.NotNil(t, response.JSON200.ConfigVariables, "ConfigVariables should not be nil") + // hidden variables are not returned in the details endpoint + require.Nil(t, response.JSON200.Variables) + require.Equal(t, []client.BrickConfigVariable{}, *(response.JSON200.ConfigVariables)) }) } diff --git a/internal/e2e/daemon/instance_bricks_test.go b/internal/e2e/daemon/bricks_instance_test.go similarity index 90% rename from internal/e2e/daemon/instance_bricks_test.go rename to internal/e2e/daemon/bricks_instance_test.go index 3399476c2..e64e6e2c7 100644 --- a/internal/e2e/daemon/instance_bricks_test.go +++ b/internal/e2e/daemon/bricks_instance_test.go @@ -31,6 +31,25 @@ import ( "github.com/arduino/arduino-app-cli/internal/e2e/client" ) +const ( + expectedDetailsAppInvalidAppId = "invalid app id" + expectedDetailsAppNotfound = "unable to find the app" +) + +var ( + expectedModelInfo = []client.AIModel{ + { + Id: f.Ptr("mobilenet-image-classification"), + Name: f.Ptr("General purpose image classification"), + Description: f.Ptr("General purpose image classification model based on MobileNetV2. This model is trained on the ImageNet dataset and can classify images into 1000 categories."), + }, + { + Id: f.Ptr("person-classification"), + Name: f.Ptr("Person classification"), + Description: f.Ptr("Person classification model based on WakeVision dataset. This model is trained to classify images into two categories: person and not-person."), + }} +) + func setupTestApp(t *testing.T) (*client.CreateAppResp, *client.ClientWithResponses) { httpClient := GetHttpclient(t) createResp, err := httpClient.CreateAppWithResponse( @@ -56,7 +75,6 @@ func setupTestApp(t *testing.T) (*client.CreateAppResp, *client.ClientWithRespon ) require.NoError(t, err) require.Equal(t, http.StatusOK, resp.StatusCode()) - return createResp, httpClient } @@ -68,7 +86,11 @@ func TestGetAppBrickInstances(t *testing.T) { require.NoError(t, err) require.Len(t, *brickInstances.JSON200.Bricks, 1) require.Equal(t, ImageClassifactionBrickID, *(*brickInstances.JSON200.Bricks)[0].Id) - + require.Nil(t, (*brickInstances.JSON200.Bricks)[0].ConfigVariables) + require.Equal(t, "Arduino", *(*brickInstances.JSON200.Bricks)[0].Author) + require.Equal(t, "video", *(*brickInstances.JSON200.Bricks)[0].Category) + require.True(t, *(*brickInstances.JSON200.Bricks)[0].RequireModel) + require.Nil(t, (*brickInstances.JSON200.Bricks)[0].Variables) }) t.Run("GetAppBrickInstances_InvalidAppID_Fail", func(t *testing.T) { @@ -111,6 +133,21 @@ func TestGetAppBrickInstanceById(t *testing.T) { require.NoError(t, err) require.NotEmpty(t, brickInstance.JSON200) require.Equal(t, ImageClassifactionBrickID, *brickInstance.JSON200.Id) + require.Nil(t, brickInstance.JSON200.ConfigVariables) + require.NotNil(t, brickInstance.JSON200.CompatibleModels) + require.Equal(t, expectedModelInfo, *(brickInstance.JSON200.CompatibleModels)) + }) + t.Run("GetAppBrickInstanceByBrickIDWithCompatibleModels_Success", func(t *testing.T) { + brickInstance, err := httpClient.GetAppBrickInstanceByBrickIDWithResponse( + t.Context(), + *createResp.JSON201.Id, + ImageClassifactionBrickID, + func(ctx context.Context, req *http.Request) error { return nil }) + require.NoError(t, err) + require.NotEmpty(t, brickInstance.JSON200) + require.Equal(t, ImageClassifactionBrickID, *brickInstance.JSON200.Id) + require.NotNil(t, brickInstance.JSON200.CompatibleModels) + require.Equal(t, expectedModelInfo, *(brickInstance.JSON200.CompatibleModels)) }) t.Run("GetAppBrickInstanceByBrickID_InvalidAppID_Fails", func(t *testing.T) { @@ -162,7 +199,7 @@ func TestUpsertAppBrickInstance(t *testing.T) { require.NoError(t, err) require.NotEmpty(t, brickInstance.JSON200) require.Equal(t, ImageClassifactionBrickID, *brickInstance.JSON200.Id) - require.Equal(t, "/home/arduino/.arduino-bricks/ei-models", (*brickInstance.JSON200.Variables)["CUSTOM_MODEL_PATH"]) + require.Nil(t, brickInstance.JSON200.Variables) require.Equal(t, "mobilenet-image-classification", *brickInstance.JSON200.Model) t.Run("OverrideBrickInstance", func(t *testing.T) { @@ -185,7 +222,7 @@ func TestUpsertAppBrickInstance(t *testing.T) { require.NoError(t, err) require.NotEmpty(t, brickInstance.JSON200) require.Equal(t, ImageClassifactionBrickID, *brickInstance.JSON200.Id) - require.NotEqual(t, "overidden", (*brickInstance.JSON200.Variables)["CUSTOM_MODEL_PATH"]) + require.Nil(t, brickInstance.JSON200.Variables) require.Equal(t, "mobilenet-image-classification", *brickInstance.JSON200.Model) }) @@ -311,7 +348,7 @@ func TestUpdateAppBrickInstance(t *testing.T) { require.NoError(t, err) require.NotEmpty(t, brickInstance.JSON200) require.Equal(t, ImageClassifactionBrickID, *brickInstance.JSON200.Id) - require.Equal(t, "overidden", (*brickInstance.JSON200.Variables)["CUSTOM_MODEL_PATH"]) + require.Nil(t, brickInstance.JSON200.Variables) require.Equal(t, "person-classification", *brickInstance.JSON200.Model) }) t.Run("UpdateOnlyModel", func(t *testing.T) { diff --git a/internal/e2e/daemon/const.go b/internal/e2e/daemon/const.go index f656fd0f0..3bb358991 100644 --- a/internal/e2e/daemon/const.go +++ b/internal/e2e/daemon/const.go @@ -16,11 +16,7 @@ package daemon const ( - ImageClassifactionBrickID = "arduino:image_classification" - StreamLitUi = "arduino:streamlit_ui" - expectedDetailsAppNotfound = "unable to find the app" - expectedDetailsAppInvalidAppId = "invalid app id" - noExistingApp = "dXNlcjp0ZXN0LWFwcAw" - malformedAppId = "this-is-definitely-not-base64" - noExisitingExample = "ZXhhbXBsZXM6anVzdGJsaW5f" + ImageClassifactionBrickID = "arduino:image_classification" + noExistingApp = "dXNlcjp0ZXN0LWFwcAw" + malformedAppId = "this-is-definitely-not-base64" ) diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/cloud_llm/API.md b/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/cloud_llm/API.md deleted file mode 100644 index ba9da420b..000000000 --- a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/cloud_llm/API.md +++ /dev/null @@ -1,107 +0,0 @@ -# cloud_llm API Reference - -## Index - -- Class `CloudLLM` -- Class `CloudModel` - ---- - -## `CloudLLM` class - -```python -class CloudLLM(api_key: str, model: Union[str, CloudModel], system_prompt: str, temperature: Optional[float], timeout: int) -``` - -A simplified, opinionated wrapper for common LangChain conversational patterns. - -This class provides a single interface to manage stateless chat and chat with memory. - -### Parameters - -- **api_key**: The API key for the LLM service. -- **model**: The model identifier as per LangChain specification (e.g., "anthropic:claude-3-sonnet-20240229") -or by using a CloudModels enum (e.g. CloudModels.OPENAI_GPT). Defaults to CloudModel.ANTHROPIC_CLAUDE. -- **system_prompt**: The global system-level instruction for the AI. -- **temperature**, default=0.7: The sampling temperature for response generation. Defaults to 0.7. -- **timeout**, default=30 seconds: The maximum time to wait for a response from the LLM service, in seconds. Defaults to 30 seconds. - -### Raises - -- **ValueError**: If the API key is missing. - -### Methods - -#### `with_memory(max_messages: int)` - -Enables conversational memory for this instance. - -This allows the chatbot to remember previous user and AI messages. -Calling this modifies the instance to be stateful. - -##### Parameters - -- **max_messages**: The total number of past messages (user + AI) to -keep in the conversation window. Set to 0 to disable memory. - -##### Returns - -- (*self*): The current CloudLLM instance for method chaining. - -#### `chat(message: str)` - -Sends a single message to the AI and gets a complete response synchronously. - -This is the primary way to interact. It automatically handles memory -based on how the instance was configured. - -##### Parameters - -- **message**: The user's message. - -##### Returns - --: The AI's complete response as a string. - -##### Raises - -- **RuntimeError**: If the chat model is not initialized or if text generation fails. - -#### `chat_stream(message: str)` - -Sends a single message to the AI and streams the response as a synchronous generator. - -Use this to get tokens as they are generated, perfect for a streaming UI. - -##### Parameters - -- **message**: The user's message. - -##### Returns - -- (*str*): Chunks of the AI's response as they become available. - -##### Raises - -- **RuntimeError**: If the chat model is not initialized or if text generation fails. -- **AlreadyGenerating**: If the chat model is already streaming a response. - -#### `stop_stream()` - -Signals the LLM to stop generating a response. - -#### `clear_memory()` - -Clears the conversational memory. - -This only has an effect if with_memory() has been called. - - ---- - -## `CloudModel` class - -```python -class CloudModel() -``` - diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/air_quality_monitoring/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/air_quality_monitoring/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/air_quality_monitoring/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/air_quality_monitoring/API.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/arduino_cloud/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/arduino_cloud/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/arduino_cloud/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/arduino_cloud/API.md diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/api-docs/arduino/app_bricks/audio_classification/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/audio_classification/API.md similarity index 91% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/api-docs/arduino/app_bricks/audio_classification/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/audio_classification/API.md index 87a5213e0..7573beee6 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/api-docs/arduino/app_bricks/audio_classification/API.md +++ b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/audio_classification/API.md @@ -67,7 +67,7 @@ Stop real-time audio classification. Terminates audio capture and releases any associated resources. -#### `classify_from_file(audio_path: str, confidence: int)` +#### `classify_from_file(audio_path: str, confidence: float)` Classify audio content from a WAV file. @@ -80,9 +80,8 @@ Supported sample widths: ##### Parameters - **audio_path** (*str*): Path to the `.wav` audio file to classify. -- **confidence** (*int*) (optional): Confidence threshold (0–1). If None, -the default confidence level specified during initialization -will be applied. +- **confidence** (*float*) (optional): Minimum confidence threshold (0.0–1.0) required +for a detection to be considered valid. Defaults to 0.8 (80%). ##### Returns diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/camera_code_detection/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/camera_code_detection/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/camera_code_detection/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/camera_code_detection/API.md diff --git a/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/cloud_llm/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/cloud_llm/API.md new file mode 100644 index 000000000..d2dd5903f --- /dev/null +++ b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/cloud_llm/API.md @@ -0,0 +1,120 @@ +# cloud_llm API Reference + +## Index + +- Class `CloudLLM` +- Class `CloudModel` + +--- + +## `CloudLLM` class + +```python +class CloudLLM(api_key: str, model: Union[str, CloudModel], system_prompt: str, temperature: Optional[float], timeout: int) +``` + +A Brick for interacting with cloud-based Large Language Models (LLMs). + +This class wraps LangChain functionality to provide a simplified, unified interface +for chatting with models like Claude, GPT, and Gemini. It supports both synchronous +'one-shot' responses and streaming output, with optional conversational memory. + +### Parameters + +- **api_key** (*str*): The API access key for the target LLM service. Defaults to the +'API_KEY' environment variable. +- **model** (*Union[str, CloudModel]*): The model identifier. Accepts a `CloudModel` +enum member (e.g., `CloudModel.OPENAI_GPT`) or its corresponding raw string +value (e.g., `'gpt-4o-mini'`). Defaults to `CloudModel.ANTHROPIC_CLAUDE`. +- **system_prompt** (*str*): A system-level instruction that defines the AI's persona +and constraints (e.g., "You are a helpful assistant"). Defaults to empty. +- **temperature** (*Optional[float]*): The sampling temperature between 0.0 and 1.0. +Higher values make output more random/creative; lower values make it more +deterministic. Defaults to 0.7. +- **timeout** (*int*): The maximum duration in seconds to wait for a response before +timing out. Defaults to 30. + +### Raises + +- **ValueError**: If `api_key` is not provided (empty string). + +### Methods + +#### `with_memory(max_messages: int)` + +Enables conversational memory for this instance. + +Configures the Brick to retain a window of previous messages, allowing the +AI to maintain context across multiple interactions. + +##### Parameters + +- **max_messages** (*int*): The maximum number of messages (user + AI) to keep +in history. Older messages are discarded. Set to 0 to disable memory. +Defaults to 10. + +##### Returns + +- (*CloudLLM*): The current instance, allowing for method chaining. + +#### `chat(message: str)` + +Sends a message to the AI and blocks until the complete response is received. + +This method automatically manages conversation history if memory is enabled. + +##### Parameters + +- **message** (*str*): The input text prompt from the user. + +##### Returns + +- (*str*): The complete text response generated by the AI. + +##### Raises + +- **RuntimeError**: If the internal chain is not initialized or if the API request fails. + +#### `chat_stream(message: str)` + +Sends a message to the AI and yields response tokens as they are generated. + +This allows for processing or displaying the response in real-time (streaming). +The generation can be interrupted by calling `stop_stream()`. + +##### Parameters + +- **message** (*str*): The input text prompt from the user. + +##### Returns + +- (*str*): Chunks of text (tokens) from the AI response. + +##### Raises + +- **RuntimeError**: If the internal chain is not initialized or if the API request fails. +- **AlreadyGenerating**: If a streaming session is already active. + +#### `stop_stream()` + +Signals the active streaming generation to stop. + +This sets an internal flag that causes the `chat_stream` iterator to break +early. It has no effect if no stream is currently running. + +#### `clear_memory()` + +Clears the conversational memory history. + +Resets the stored context. This is useful for starting a new conversation +topic without previous context interfering. Only applies if memory is enabled. + + +--- + +## `CloudModel` class + +```python +class CloudModel() +``` + diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/dbstorage_sqlstore/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/dbstorage_sqlstore/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/dbstorage_sqlstore/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/dbstorage_sqlstore/API.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/dbstorage_tsstore/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/dbstorage_tsstore/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/dbstorage_tsstore/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/dbstorage_tsstore/API.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/image_classification/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/image_classification/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/image_classification/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/image_classification/API.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/keyword_spotting/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/keyword_spotting/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/keyword_spotting/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/keyword_spotting/API.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/mood_detector/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/mood_detector/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/mood_detector/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/mood_detector/API.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/motion_detection/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/motion_detection/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/motion_detection/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/motion_detection/API.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/mqtt/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/mqtt/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/mqtt/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/mqtt/API.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/object_detection/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/object_detection/API.md similarity index 90% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/object_detection/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/object_detection/API.md index c8c848124..bf58415c1 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/object_detection/API.md +++ b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/object_detection/API.md @@ -19,6 +19,14 @@ This module processes an input image and returns: - Corresponding class labels - Confidence scores for each detection +### Parameters + +- **confidence** (*float*): Minimum confidence threshold for detections. Default is 0.3 (30%). + +### Raises + +- **ValueError**: If model information cannot be retrieved. + ### Methods #### `detect_from_file(image_path: str, confidence: float)` @@ -60,7 +68,7 @@ Draw bounding boxes on an image enclosing detected objects using PIL. ##### Returns -: Image with bounding boxes and key points drawn. -None if no detection or invalid image. +None if input image or detections are invalid. #### `process(item)` diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/streamlit_ui/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/streamlit_ui/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/streamlit_ui/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/streamlit_ui/API.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/vibration_anomaly_detection/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/vibration_anomaly_detection/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/vibration_anomaly_detection/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/vibration_anomaly_detection/API.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/video_imageclassification/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/video_imageclassification/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/video_imageclassification/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/video_imageclassification/API.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/video_objectdetection/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/video_objectdetection/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/video_objectdetection/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/video_objectdetection/API.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/visual_anomaly_detection/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/visual_anomaly_detection/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/visual_anomaly_detection/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/visual_anomaly_detection/API.md diff --git a/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/wave_generator/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/wave_generator/API.md new file mode 100644 index 000000000..f89777276 --- /dev/null +++ b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/wave_generator/API.md @@ -0,0 +1,151 @@ +# wave_generator API Reference + +## Index + +- Class `WaveGenerator` + +--- + +## `WaveGenerator` class + +```python +class WaveGenerator(sample_rate: int, wave_type: WaveType, block_duration: float, attack: float, release: float, glide: float, speaker: Speaker) +``` + +Continuous wave generator brick for audio synthesis. + +This brick generates continuous audio waveforms (sine, square, sawtooth, triangle) +and streams them to a USB speaker in real-time. It provides smooth transitions +between frequency and amplitude changes using configurable envelope parameters. + +The generator runs continuously in a background thread, producing audio blocks +at a steady rate with minimal latency. + +### Parameters + +- **sample_rate** (*int*): Audio sample rate in Hz (default: 16000). +- **wave_type** (*WaveType*): Initial waveform type (default: "sine"). +- **block_duration** (*float*): Duration of each audio block in seconds (default: 0.01). +- **attack** (*float*): Attack time for amplitude envelope in seconds (default: 0.01). +- **release** (*float*): Release time for amplitude envelope in seconds (default: 0.03). +- **glide** (*float*): Frequency glide time (portamento) in seconds (default: 0.02). +- **speaker** (*Speaker*) (optional): Pre-configured Speaker instance. If None, WaveGenerator +will create an internal Speaker optimized for real-time synthesis with: +- periodsize aligned to block_duration (eliminates buffer mismatch) +- queue_maxsize=8 (low latency: ~80ms max buffer) +- format=FLOAT_LE, channels=1 + +If providing an external Speaker, ensure: +- sample_rate matches WaveGenerator's sample_rate +- periodsize = int(sample_rate × block_duration) for optimal alignment +- Speaker is started/stopped manually (WaveGenerator won't manage its lifecycle) + +Example external Speaker configuration: + speaker = Speaker( + device="plughw:CARD=UH34", + sample_rate=16000, + format="FLOAT_LE", + periodsize=160, # 16000 × 0.01 = 160 frames + queue_maxsize=8 + ) + +### Raises + +- **SpeakerException**: If no USB speaker is found or device is busy. + +### Attributes + +- **sample_rate** (*int*): Audio sample rate in Hz (default: 16000). +- **wave_type** (*WaveType*): Type of waveform to generate. +- **frequency** (*float*): Current output frequency in Hz. +- **amplitude** (*float*): Current output amplitude (0.0-1.0). + +### Methods + +#### `start()` + +Start the wave generator and audio output. + +This starts the speaker device (if internally owned) and launches the producer thread +that continuously generates and streams audio blocks. + +#### `stop()` + +Stop the wave generator and audio output. + +This stops the producer thread and closes the speaker device (if internally owned). + +#### `set_frequency(frequency: float)` + +Set the target output frequency. + +The frequency will smoothly transition to the new value over the +configured glide time. + +##### Parameters + +- **frequency** (*float*): Target frequency in Hz (typically 20-8000 Hz). + +#### `set_amplitude(amplitude: float)` + +Set the target output amplitude. + +The amplitude will smoothly transition to the new value over the +configured attack/release time. + +##### Parameters + +- **amplitude** (*float*): Target amplitude in range [0.0, 1.0]. + +#### `set_wave_type(wave_type: WaveType)` + +Change the waveform type. + +##### Parameters + +- **wave_type** (*WaveType*): One of "sine", "square", "sawtooth", "triangle". + +##### Raises + +- **ValueError**: If wave_type is not valid. + +#### `set_volume(volume: int)` + +Set the speaker volume level. + +This is a wrapper that controls the hardware volume of the USB speaker device. + +##### Parameters + +- **volume** (*int*): Hardware volume level (0-100). + +##### Raises + +- **SpeakerException**: If the mixer is not available or if volume cannot be set. + +#### `get_volume()` + +Get the current speaker volume level. + +##### Returns + +- (*int*): Current hardware volume level (0-100). + +#### `set_envelope_params(attack: float, release: float, glide: float)` + +Update envelope parameters. + +##### Parameters + +- **attack** (*float*) (optional): Attack time in seconds. +- **release** (*float*) (optional): Release time in seconds. +- **glide** (*float*) (optional): Frequency glide time in seconds. + +#### `get_state()` + +Get current generator state. + +##### Returns + +- (*dict*): Dictionary containing current frequency, amplitude, wave type, etc. + diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/weather_forecast/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/weather_forecast/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_bricks/weather_forecast/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/weather_forecast/API.md diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/api-docs/arduino/app_bricks/web_ui/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/web_ui/API.md similarity index 76% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/api-docs/arduino/app_bricks/web_ui/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/web_ui/API.md index 4619aed5a..ec08afdb2 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/api-docs/arduino/app_bricks/web_ui/API.md +++ b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_bricks/web_ui/API.md @@ -9,7 +9,7 @@ ## `WebUI` class ```python -class WebUI(addr: str, port: int, ui_path_prefix: str, api_path_prefix: str, assets_dir_path: str, certs_dir_path: str, use_ssl: bool) +class WebUI(addr: str, port: int, ui_path_prefix: str, api_path_prefix: str, assets_dir_path: str, certs_dir_path: str, use_tls: bool, use_ssl: bool | None) ``` Module for deploying a web server that can host a web application and expose APIs to its clients. @@ -24,21 +24,38 @@ and support real-time communication between the client and the server. - **ui_path_prefix** (*str*) (optional), default="" (root): URL prefix for UI routes. Defaults to "" (root). - **api_path_prefix** (*str*) (optional), default="" (root): URL prefix for API routes. Defaults to "" (root). - **assets_dir_path** (*str*) (optional), default="/app/assets": Path to static assets directory. Defaults to "/app/assets". -- **certs_dir_path** (*str*) (optional), default="/app/certs": Path to SSL certificates directory. Defaults to "/app/certs". -- **use_ssl** (*bool*) (optional), default=False: Enable SSL/HTTPS. Defaults to False. +- **certs_dir_path** (*str*) (optional), default="/app/certs": Path to TLS certificates directory. Defaults to "/app/certs". +- **use_tls** (*bool*) (optional), default=False: Enable TLS/HTTPS. Defaults to False. +- **use_ssl** (*bool*) (optional), default=None: Deprecated. Use use_tls instead. Defaults to None. ### Methods +#### `local_url()` + +Get the locally addressable URL of the web server. + +##### Returns + +- (*str*): The server's URL (including protocol, address, and port). + +#### `url()` + +Get the externally addressable URL of the web server. + +##### Returns + +- (*str*): The server's URL (including protocol, address, and port). + #### `start()` Start the web server asynchronously. -This sets up static file routing and WebSocket event handlers, configures SSL if enabled, and launches the server using Uvicorn. +This sets up static file routing and WebSocket event handlers, configures TLS if enabled, and launches the server using Uvicorn. ##### Raises - **RuntimeError**: If 'index.html' is missing in the static assets directory. -- **RuntimeError**: If SSL is enabled but certificates are missing or fail to generate. +- **RuntimeError**: If TLS is enabled but certificates fail to generate. - **RuntimeWarning**: If the server is already running. #### `stop()` @@ -47,7 +64,7 @@ Stop the web server gracefully. Waits up to 5 seconds for current requests to finish before terminating. -#### `expose_api(method: str, path: str, function: callable)` +#### `expose_api(method: str, path: str, function: Callable)` Register a route with the specified HTTP method and path. @@ -57,7 +74,7 @@ The path will be prefixed with the api_path_prefix configured during initializat - **method** (*str*): HTTP method to use (e.g., "GET", "POST"). - **path** (*str*): URL path for the API endpoint (without the prefix). -- **function** (*callable*): Function to execute when the route is accessed. +- **function** (*Callable*): Function to execute when the route is accessed. #### `on_connect(callback: Callable[[str], None])` @@ -79,7 +96,7 @@ The callback should accept a single argument: the session ID (sid) of the discon - **callback** (*Callable[[str], None]*): Function to call when a client disconnects. Receives the session ID (sid) as its only argument. -#### `on_message(message_type: str, callback: Callable[[str, any], any])` +#### `on_message(message_type: str, callback: Callable[[str, Any], Any])` Register a callback function for a specific WebSocket message type received by clients. @@ -91,10 +108,10 @@ with a message type suffix "_response". ##### Parameters - **message_type** (*str*): The message type name to listen for. -- **callback** (*Callable[[str, any], any]*): Function to handle the message. Receives two arguments: +- **callback** (*Callable[[str, Any], Any]*): Function to handle the message. Receives two arguments: the session ID (sid) and the incoming message data. -#### `send_message(message_type: str, message: dict | str, room: str)` +#### `send_message(message_type: str, message: dict | str, room: str | None)` Send a message to connected WebSocket clients. diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_peripherals/microphone/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_peripherals/microphone/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_peripherals/microphone/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_peripherals/microphone/API.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_peripherals/speaker/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_peripherals/speaker/API.md similarity index 79% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_peripherals/speaker/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_peripherals/speaker/API.md index 3cddad0fd..94c64118e 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_peripherals/speaker/API.md +++ b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_peripherals/speaker/API.md @@ -21,7 +21,7 @@ Custom exception for Speaker errors. ## `Speaker` class ```python -class Speaker(device: str, sample_rate: int, channels: int, format: str) +class Speaker(device: str, sample_rate: int, channels: int, format: str, periodsize: int, queue_maxsize: int) ``` Speaker class for reproducing audio using ALSA PCM interface. @@ -32,6 +32,12 @@ Speaker class for reproducing audio using ALSA PCM interface. - **sample_rate** (*int*): Sample rate in Hz (default: 16000). - **channels** (*int*): Number of audio channels (default: 1). - **format** (*str*): Audio format (default: "S16_LE"). +- **periodsize** (*int*): ALSA period size in frames (default: None = use hardware default). +For real-time synthesis, set to match generation block size. +For streaming/file playback, leave as None for hardware-optimal value. +- **queue_maxsize** (*int*): Maximum application queue depth in blocks (default: 100). +Lower values (5-20) reduce latency for interactive audio. +Higher values (50-200) provide stability for streaming. ### Raises diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_peripherals/usb_camera/API.md b/internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_peripherals/usb_camera/API.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/api-docs/arduino/app_peripherals/usb_camera/API.md rename to internal/e2e/daemon/testdata/assets/0.6.2/api-docs/arduino/app_peripherals/usb_camera/API.md diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/bricks-list.yaml b/internal/e2e/daemon/testdata/assets/0.6.2/bricks-list.yaml similarity index 75% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/bricks-list.yaml rename to internal/e2e/daemon/testdata/assets/0.6.2/bricks-list.yaml index a4747e860..eeac7b632 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/bricks-list.yaml +++ b/internal/e2e/daemon/testdata/assets/0.6.2/bricks-list.yaml @@ -5,7 +5,6 @@ bricks: local database. require_container: false require_model: false - require_devices: false mount_devices_into_container: false ports: [] category: storage @@ -17,18 +16,23 @@ bricks: \ or with custom object detection models trained on Edge Impulse platform. \n" require_container: true require_model: true - require_devices: false mount_devices_into_container: false ports: [] category: video model_name: yolox-object-detection variables: - - name: CUSTOM_MODEL_PATH - default_value: /home/arduino/.arduino-bricks/ei-models - description: path to the custom model directory - name: EI_OBJ_DETECTION_MODEL default_value: /models/ootb/ei/yolo-x-nano.eim - description: path to the model file + description: Path to the model file + hidden: true + - name: CUSTOM_MODEL_PATH + default_value: /home/arduino/.arduino-bricks/ei-models + description: Path to the custom model directory + hidden: true + - name: BIND_ADDRESS + default_value: 127.0.0.1 + description: Bind address + hidden: true - id: arduino:mood_detector name: Mood Detection description: 'This brick analyzes text sentiment to detect the mood expressed. @@ -38,7 +42,6 @@ bricks: ' require_container: false require_model: false - require_devices: false mount_devices_into_container: false ports: [] category: text @@ -47,7 +50,6 @@ bricks: description: Scans a camera for barcodes and QR codes require_container: false require_model: false - require_devices: false mount_devices_into_container: false ports: [] category: video @@ -64,24 +66,28 @@ bricks: ' require_container: true require_model: true - require_devices: false mount_devices_into_container: false ports: [] category: audio model_name: glass-breaking variables: - - name: CUSTOM_MODEL_PATH - default_value: /home/arduino/.arduino-bricks/ei-models - description: path to the custom model directory - name: EI_AUDIO_CLASSIFICATION_MODEL default_value: /models/ootb/ei/glass-breaking.eim - description: path to the model file + description: Path to the model file + hidden: true + - name: CUSTOM_MODEL_PATH + default_value: /home/arduino/.arduino-bricks/ei-models + description: Path to the custom model directory + hidden: true + - name: BIND_ADDRESS + default_value: 127.0.0.1 + description: Bind address + hidden: true - id: arduino:arduino_cloud name: Arduino Cloud description: Connects to Arduino Cloud require_container: false require_model: false - require_devices: false mount_devices_into_container: false ports: [] category: null @@ -90,6 +96,17 @@ bricks: description: Arduino Cloud Device ID - name: ARDUINO_SECRET description: Arduino Cloud Secret +- id: arduino:wave_generator + name: Wave Generator + description: Continuous wave generator for audio synthesis. Generates sine, square, + sawtooth, and triangle waveforms with smooth frequency and amplitude transitions. + require_container: false + require_model: false + mount_devices_into_container: false + ports: [] + category: audio + required_devices: + - speaker - id: arduino:image_classification name: Image Classification description: "Brick for image classification using a pre-trained model. It processes\ @@ -98,24 +115,28 @@ bricks: \ image classification models trained on Edge Impulse platform. \n" require_container: true require_model: true - require_devices: false mount_devices_into_container: false ports: [] category: video model_name: mobilenet-image-classification variables: - - name: CUSTOM_MODEL_PATH - default_value: /home/arduino/.arduino-bricks/ei-models - description: path to the custom model directory - name: EI_CLASSIFICATION_MODEL default_value: /models/ootb/ei/mobilenet-v2-224px.eim - description: path to the model file + description: Path to the model file + hidden: true + - name: CUSTOM_MODEL_PATH + default_value: /home/arduino/.arduino-bricks/ei-models + description: Path to the custom model directory + hidden: true + - name: BIND_ADDRESS + default_value: 127.0.0.1 + description: Bind address + hidden: true - id: arduino:streamlit_ui name: WebUI - Streamlit description: A simplified user interface based on Streamlit and Python. require_container: false require_model: false - require_devices: false mount_devices_into_container: false ports: - 7000 @@ -135,27 +156,29 @@ bricks: ' require_container: true require_model: true - require_devices: false mount_devices_into_container: false ports: [] category: null model_name: fan-anomaly-detection variables: - - name: CUSTOM_MODEL_PATH - default_value: /home/arduino/.arduino-bricks/ei-models - description: path to the custom model directory - - name: CUSTOM_MODEL_PATH - default_value: /models/custom/ei/ - description: path to the custom model directory - name: EI_VIBRATION_ANOMALY_DETECTION_MODEL default_value: /models/ootb/ei/fan-anomaly-detection.eim + description: Path to the model file + hidden: true + - name: CUSTOM_MODEL_PATH + default_value: /home/arduino/.arduino-bricks/ei-models + description: Path to the custom model directory + hidden: true + - name: BIND_ADDRESS + default_value: 127.0.0.1 + description: Bind address + hidden: true - id: arduino:web_ui name: WebUI - HTML description: A user interface based on HTML and JavaScript that can rely on additional APIs and a WebSocket exposed by a web server. require_container: false require_model: false - require_devices: false mount_devices_into_container: false ports: - 7000 @@ -172,7 +195,6 @@ bricks: ' require_container: true require_model: true - require_devices: false mount_devices_into_container: false ports: [] category: audio @@ -180,12 +202,18 @@ bricks: required_devices: - microphone variables: - - name: CUSTOM_MODEL_PATH - default_value: /home/arduino/.arduino-bricks/ei-models - description: path to the custom model directory - name: EI_KEYWORD_SPOTTING_MODEL default_value: /models/ootb/ei/keyword-spotting-hey-arduino.eim - description: path to the model file + description: Path to the model file + hidden: true + - name: CUSTOM_MODEL_PATH + default_value: /home/arduino/.arduino-bricks/ei-models + description: Path to the custom model directory + hidden: true + - name: BIND_ADDRESS + default_value: 127.0.0.1 + description: Bind address + hidden: true - id: arduino:video_image_classification name: Video Image Classification description: 'This image classification brick utilizes a pre-trained model to analyze @@ -202,7 +230,6 @@ bricks: ' require_container: true require_model: true - require_devices: true mount_devices_into_container: true ports: [] category: video @@ -210,21 +237,28 @@ bricks: required_devices: - camera variables: - - name: CUSTOM_MODEL_PATH - default_value: /home/arduino/.arduino-bricks/ei-models/ - description: path to the custom model directory - name: EI_CLASSIFICATION_MODEL default_value: /models/ootb/ei/mobilenet-v2-224px.eim - description: path to the model file + description: Path to the model file + hidden: true + - name: CUSTOM_MODEL_PATH + default_value: /home/arduino/.arduino-bricks/ei-models + description: Path to the custom model directory + hidden: true + - name: BIND_ADDRESS + default_value: 0.0.0.0 + description: Bind address + hidden: true - name: VIDEO_DEVICE default_value: /dev/video1 + description: Video device path + hidden: true - id: arduino:weather_forecast name: Weather Forecast description: Online weather forecast module for Arduino using open-meteo.com geolocation and weather APIs. Requires an internet connection. require_container: false require_model: false - require_devices: false mount_devices_into_container: false ports: [] category: miscellaneous @@ -241,40 +275,46 @@ bricks: ' require_container: true require_model: true - require_devices: false mount_devices_into_container: false ports: [] category: null model_name: updown-wave-motion-detection variables: - - name: CUSTOM_MODEL_PATH - default_value: /home/arduino/.arduino-bricks/ei-models - description: path to the custom model directory - name: EI_MOTION_DETECTION_MODEL default_value: /models/ootb/ei/updown-wave-motion-detection.eim - description: path to the model file + description: Path to the model file + hidden: true + - name: CUSTOM_MODEL_PATH + default_value: /home/arduino/.arduino-bricks/ei-models + description: Path to the custom model directory + hidden: true + - name: BIND_ADDRESS + default_value: 127.0.0.1 + description: Bind address + hidden: true - id: arduino:dbstorage_tsstore name: Database - Time Series description: Simplified time series database storage layer for Arduino sensor samples built on top of InfluxDB. require_container: true require_model: false - require_devices: false mount_devices_into_container: false ports: [] category: storage variables: - - name: APP_HOME - default_value: . + - name: DB_USERNAME + default_value: admin + description: Database username - name: DB_PASSWORD default_value: Arduino15 description: Database password - - name: DB_USERNAME - default_value: admin - description: Edge Impulse project API key - name: INFLUXDB_ADMIN_TOKEN default_value: 392edbf2-b8a2-481f-979d-3f188b2c05f0 description: InfluxDB admin token + - name: BIND_ADDRESS + default_value: 127.0.0.1 + description: External container address + hidden: true - id: arduino:visual_anomaly_detection name: Visual Anomaly Detection description: "Brick for visual anomaly detection using a pre-trained model. It processes\ @@ -283,18 +323,23 @@ bricks: \ detection models trained on the Edge Impulse platform. \n" require_container: true require_model: true - require_devices: false mount_devices_into_container: false ports: [] category: image model_name: concrete-crack-anomaly-detection variables: - - name: CUSTOM_MODEL_PATH - default_value: /home/arduino/.arduino-bricks/ei-models - description: path to the custom model directory - name: EI_V_ANOMALY_DETECTION_MODEL default_value: /models/ootb/ei/concrete-crack-anomaly-detection.eim - description: path to the model file + description: Path to the model file + hidden: true + - name: CUSTOM_MODEL_PATH + default_value: /home/arduino/.arduino-bricks/ei-models + description: Path to the custom model directory + hidden: true + - name: BIND_ADDRESS + default_value: 127.0.0.1 + description: Bind address + hidden: true - id: arduino:video_object_detection name: Video Object Detection description: 'This object detection brick utilizes a pre-trained model to analyze @@ -312,7 +357,6 @@ bricks: ' require_container: true require_model: true - require_devices: true mount_devices_into_container: true ports: [] category: null @@ -320,11 +364,31 @@ bricks: required_devices: - camera variables: - - name: CUSTOM_MODEL_PATH - default_value: /home/arduino/.arduino-bricks/ei-models/ - description: path to the custom model directory - name: EI_OBJ_DETECTION_MODEL default_value: /models/ootb/ei/yolo-x-nano.eim - description: path to the model file + description: Path to the model file + hidden: true + - name: CUSTOM_MODEL_PATH + default_value: /home/arduino/.arduino-bricks/ei-models + description: Path to the custom model directory + hidden: true + - name: BIND_ADDRESS + default_value: 0.0.0.0 + description: Bind address + hidden: true - name: VIDEO_DEVICE default_value: /dev/video1 + description: Video device path + hidden: true +- id: arduino:cloud_llm + name: Cloud LLM + description: Cloud LLM Brick enables seamless integration with cloud-based Large + Language Models (LLMs) for advanced AI capabilities in your Arduino projects. + require_container: false + require_model: false + mount_devices_into_container: false + ports: [] + category: null + variables: + - name: API_KEY + description: API Key for the cloud-based LLM service diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/audio_classification/brick_compose.yaml b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/audio_classification/brick_compose.yaml similarity index 85% rename from internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/audio_classification/brick_compose.yaml rename to internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/audio_classification/brick_compose.yaml index 6dbe38e45..b51fdd22c 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/audio_classification/brick_compose.yaml +++ b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/audio_classification/brick_compose.yaml @@ -1,8 +1,6 @@ -# EI_AUDIO_CLASSIFICATION_MODEL = path to the model file -# CUSTOM_MODEL_PATH = path to the custom model directory services: ei-audio-classifier-runner: - image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.5.0 + image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.6.1 logging: driver: "json-file" options: diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/compose/arduino/dbstorage_tsstore/brick_compose.yaml b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/dbstorage_tsstore/brick_compose.yaml similarity index 74% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/compose/arduino/dbstorage_tsstore/brick_compose.yaml rename to internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/dbstorage_tsstore/brick_compose.yaml index b43f55c68..fb1488251 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/compose/arduino/dbstorage_tsstore/brick_compose.yaml +++ b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/dbstorage_tsstore/brick_compose.yaml @@ -1,8 +1,3 @@ -# BIND_ADDRESS = external container address -# BIND_PORT = container port -# DB_USERNAME = Edge Impulse project API key -# DB_PASSWORD = Database password -# INFLUXDB_ADMIN_TOKEN = InfluxDB admin token services: dbstorage-influx: image: influxdb:2.7 @@ -12,7 +7,7 @@ services: max-size: "5m" max-file: "2" ports: - - "${BIND_ADDRESS:-127.0.0.1}:${BIND_PORT:-8086}:8086" + - "${BIND_ADDRESS:-127.0.0.1}:8086:8086" volumes: - "${APP_HOME:-.}/data/influx-data:/var/lib/influxdb2" environment: diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/compose/arduino/image_classification/brick_compose.yaml b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/image_classification/brick_compose.yaml similarity index 86% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/compose/arduino/image_classification/brick_compose.yaml rename to internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/image_classification/brick_compose.yaml index d82072714..ea71c7ae4 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/compose/arduino/image_classification/brick_compose.yaml +++ b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/image_classification/brick_compose.yaml @@ -1,8 +1,6 @@ -# EI_CLASSIFICATION_MODEL = path to the model file -# CUSTOM_MODEL_PATH = path to the custom model directory services: ei-classification-runner: - image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.5.0 + image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.6.1 logging: driver: "json-file" options: diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/compose/arduino/keyword_spotting/brick_compose.yaml b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/keyword_spotting/brick_compose.yaml similarity index 86% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/compose/arduino/keyword_spotting/brick_compose.yaml rename to internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/keyword_spotting/brick_compose.yaml index b4dd79632..3a722c816 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/compose/arduino/keyword_spotting/brick_compose.yaml +++ b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/keyword_spotting/brick_compose.yaml @@ -1,8 +1,6 @@ -# EI_KEYWORD_SPOTTING_MODEL = path to the model file -# CUSTOM_MODEL_PATH = path to the custom model directory services: ei-keyword-spot-runner: - image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.5.0 + image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.6.1 logging: driver: "json-file" options: diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/motion_detection/brick_compose.yaml b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/motion_detection/brick_compose.yaml similarity index 86% rename from internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/motion_detection/brick_compose.yaml rename to internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/motion_detection/brick_compose.yaml index ef7fc7305..51d09c082 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/motion_detection/brick_compose.yaml +++ b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/motion_detection/brick_compose.yaml @@ -1,8 +1,6 @@ -# EI_MOTION_DETECTION_MODEL = path to the model file -# CUSTOM_MODEL_PATH = path to the custom model directory services: ei-motion-detection-runner: - image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.5.0 + image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.6.1 logging: driver: "json-file" options: diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/object_detection/brick_compose.yaml b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/object_detection/brick_compose.yaml similarity index 79% rename from internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/object_detection/brick_compose.yaml rename to internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/object_detection/brick_compose.yaml index 9d4189138..f185faf96 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/object_detection/brick_compose.yaml +++ b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/object_detection/brick_compose.yaml @@ -1,8 +1,6 @@ -# EI_OBJ_DETECTION_MODEL = path to the model file -# CUSTOM_MODEL_PATH = path to the custom model directory services: ei-obj-detection-runner: - image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.5.0 + image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.6.1 logging: driver: "json-file" options: @@ -13,7 +11,7 @@ services: group_add: - "render" ports: - - ${BIND_ADDRESS:-127.0.0.1}:${BIND_PORT:-1337}:1337 + - ${BIND_ADDRESS:-127.0.0.1}:1337:1337 volumes: - "${CUSTOM_MODEL_PATH:-/home/arduino/.arduino-bricks/ei-models}:${CUSTOM_MODEL_PATH:-/home/arduino/.arduino-bricks/ei-models}" command: ["--model-file", "${EI_OBJ_DETECTION_MODEL:-/models/ootb/ei/yolo-x-nano.eim}", "--run-http-server", "1337", "--dont-print-predictions"] @@ -22,3 +20,4 @@ services: interval: 2s timeout: 2s retries: 25 + \ No newline at end of file diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/vibration_anomaly_detection/brick_compose.yaml b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/vibration_anomaly_detection/brick_compose.yaml similarity index 97% rename from internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/vibration_anomaly_detection/brick_compose.yaml rename to internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/vibration_anomaly_detection/brick_compose.yaml index aca4e2a2c..8ffb400d7 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/vibration_anomaly_detection/brick_compose.yaml +++ b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/vibration_anomaly_detection/brick_compose.yaml @@ -2,7 +2,7 @@ # CUSTOM_MODEL_PATH = path to the custom model directory services: ei-anomaly-detection-runner: - image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.5.0 + image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.6.1 logging: driver: "json-file" options: diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/video_image_classification/brick_compose.yaml b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/video_image_classification/brick_compose.yaml similarity index 86% rename from internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/video_image_classification/brick_compose.yaml rename to internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/video_image_classification/brick_compose.yaml index 7e054accc..b98aeb644 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/video_image_classification/brick_compose.yaml +++ b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/video_image_classification/brick_compose.yaml @@ -1,8 +1,6 @@ -# EI_CLASSIFICATION_MODEL = path to the model file -# CUSTOM_MODEL_PATH = path to the custom model directory services: ei-video-classification-runner: - image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.5.0 + image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.6.1 logging: driver: "json-file" options: diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/compose/arduino/video_object_detection/brick_compose.yaml b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/video_object_detection/brick_compose.yaml similarity index 75% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/compose/arduino/video_object_detection/brick_compose.yaml rename to internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/video_object_detection/brick_compose.yaml index dbca63634..cde7345f6 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/compose/arduino/video_object_detection/brick_compose.yaml +++ b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/video_object_detection/brick_compose.yaml @@ -1,8 +1,6 @@ -# EI_OBJ_DETECTION_MODEL = path to the model file -# CUSTOM_MODEL_PATH = path to the custom model directory services: ei-video-obj-detection-runner: - image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.5.0 + image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.6.1 logging: driver: "json-file" options: @@ -13,7 +11,7 @@ services: volumes: - "${CUSTOM_MODEL_PATH:-/home/arduino/.arduino-bricks/ei-models/}:${CUSTOM_MODEL_PATH:-/home/arduino/.arduino-bricks/ei-models/}" - "/run/udev:/run/udev" - command: ["--model-file", "${EI_OBJ_DETECTION_MODEL:-/models/ootb/ei/yolo-x-nano.eim}", "--dont-print-predictions", "--mode", "streaming", "--force-target", "--preview-original-resolution", "--camera", "${VIDEO_DEVICE:-/dev/video1}"] + command: ["--model-file", "${EI_OBJ_DETECTION_MODEL:-/models/ootb/ei/yolo-x-nano.eim}", "--dont-print-predictions", "--mode", "streaming", "--preview-original-resolution", "--camera", "${VIDEO_DEVICE:-/dev/video1}"] healthcheck: test: [ "CMD-SHELL", "wget -q --spider http://ei-video-obj-detection-runner:4912 || exit 1" ] interval: 2s diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/visual_anomaly_detection/brick_compose.yaml b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/visual_anomaly_detection/brick_compose.yaml similarity index 86% rename from internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/visual_anomaly_detection/brick_compose.yaml rename to internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/visual_anomaly_detection/brick_compose.yaml index 0e71d75a7..5749a6b15 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/compose/arduino/visual_anomaly_detection/brick_compose.yaml +++ b/internal/e2e/daemon/testdata/assets/0.6.2/compose/arduino/visual_anomaly_detection/brick_compose.yaml @@ -1,8 +1,6 @@ -# EI_V_ANOMALY_DETECTION_MODEL = path to the model file -# CUSTOM_MODEL_PATH = path to the custom model directory services: ei-obj-video-anomalies-det-runner: - image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.5.0 + image: ${DOCKER_REGISTRY_BASE:-ghcr.io/arduino/}app-bricks/ei-models-runner:0.6.1 logging: driver: "json-file" options: diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/arduino_cloud/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/arduino_cloud/README.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/arduino_cloud/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/arduino_cloud/README.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/audio_classification/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/audio_classification/README.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/audio_classification/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/audio_classification/README.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/camera_code_detection/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/camera_code_detection/README.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/camera_code_detection/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/camera_code_detection/README.md diff --git a/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/cloud_llm/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/cloud_llm/README.md new file mode 100644 index 000000000..add84514f --- /dev/null +++ b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/cloud_llm/README.md @@ -0,0 +1,109 @@ +# Cloud LLM Brick + +The Cloud LLM Brick provides a seamless interface to interact with cloud-based Large Language Models (LLMs) such as OpenAI's GPT, Anthropic's Claude, and Google's Gemini. It abstracts the complexity of REST APIs, enabling you to send prompts, receive responses, and maintain conversational context within your Arduino projects. + +## Overview + +This Brick acts as a gateway to powerful AI models hosted in the cloud. It is designed to handle the nuances of network communication, authentication, and session management. Whether you need a simple one-off answer or a continuous conversation with memory, the Cloud LLM Brick provides a unified API for different providers. + +## Features + +- **Multi-Provider Support**: Compatible with major LLM providers including Anthropic (Claude), OpenAI (GPT), and Google (Gemini). +- **Conversational Memory**: Built-in support for windowed history, allowing the AI to remember context from previous exchanges. +- **Streaming Responses**: Receive text chunks in real-time as they are generated, ideal for responsive user interfaces. +- **Configurable Behavior**: Customize system prompts, temperature (creativity), and request timeouts. +- **Simple API**: Unified `chat` and `chat_stream` methods regardless of the underlying model provider. + +## Prerequisites + +- **Internet Connection**: The board must be connected to the internet to reach the LLM provider's API. +- **API Key**: A valid API key for the chosen service (e.g., OpenAI API Key, Anthropic API Key). +- **Python Dependencies**: The Brick relies on LangChain integration packages (`langchain-anthropic`, `langchain-openai`, `langchain-google-genai`). + +## Code Example and Usage + +### Basic Conversation + +This example initializes the Brick with an OpenAI model and performs a simple chat interaction. + +**Note:** The API key is not hardcoded. It is retrieved automatically from the **Brick Configuration** in App Lab. + +```python +import os +from arduino.app_bricks.cloud_llm import CloudLLM, CloudModel +from arduino.app_utils import App + +# Initialize the Brick (API key is loaded from configuration) +llm = CloudLLM( + model=CloudModel.OPENAI_GPT, + system_prompt="You are a helpful assistant for an IoT device." +) + +def simple_chat(): + # Send a prompt and print the response + response = llm.chat("What is the capital of Italy?") + print(f"AI: {response}") + +# Run the application +App.run(simple_chat) +``` + +### Streaming with Memory + +This example demonstrates how to enable conversational memory and process the response as a stream of tokens. + +```python +from arduino.app_bricks.cloud_llm import CloudLLM, CloudModel +from arduino.app_utils import App + +# Initialize with memory enabled (keeps last 10 messages) +# API Key is retrieved automatically from Brick Configuration +llm = CloudLLM( + model=CloudModel.ANTHROPIC_CLAUDE +).with_memory(max_messages=10) + +def chat_loop(): + while True: + user_input = input("You: ") + if user_input.lower() in ["exit", "quit"]: + break + + print("AI: ", end="", flush=True) + + # Stream the response token by token + for token in llm.chat_stream(user_input): + print(token, end="", flush=True) + print() # Newline after response + +App.run(chat_loop) +``` + +## Configuration + +The Brick is initialized with the following parameters: + +| Parameter | Type | Default | Description | +| :-------------- | :-------------------- | :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key` | `str` | `os.getenv("API_KEY")` | The authentication key for the LLM provider. **Recommended:** Set this via the **Brick Configuration** menu in App Lab instead of code. | +| `model` | `str` \| `CloudModel` | `CloudModel.ANTHROPIC_CLAUDE` | The specific model to use. Accepts a `CloudModel` enum or its string value. | +| `system_prompt` | `str` | `""` | A base instruction that defines the AI's behavior and persona. | +| `temperature` | `float` | `0.7` | Controls randomness. `0.0` is deterministic, `1.0` is creative. | +| `timeout` | `int` | `30` | Maximum time (in seconds) to wait for a response. | + +### Supported Models + +You can select a model using the `CloudModel` enum or by passing the corresponding raw string identifier. + +| Enum Constant | Raw String ID | Provider Documentation | +| :---------------------------- | :------------------------- | :-------------------------------------------------------------------------- | +| `CloudModel.ANTHROPIC_CLAUDE` | `claude-3-7-sonnet-latest` | [Anthropic Models](https://docs.anthropic.com/en/docs/about-claude/models) | +| `CloudModel.OPENAI_GPT` | `gpt-4o-mini` | [OpenAI Models](https://platform.openai.com/docs/models) | +| `CloudModel.GOOGLE_GEMINI` | `gemini-2.5-flash` | [Google Gemini Models](https://ai.google.dev/gemini-api/docs/models/gemini) | + +## Methods + +- **`chat(message)`**: Sends a message and returns the complete response string. Blocks until generation is finished. +- **`chat_stream(message)`**: Returns a generator yielding response tokens as they arrive. +- **`stop_stream()`**: Interrupts an active streaming generation. +- **`with_memory(max_messages)`**: Enables history tracking. `max_messages` defines the context window size. +- **`clear_memory()`**: Resets the conversation history. \ No newline at end of file diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/dbstorage_sqlstore/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/dbstorage_sqlstore/README.md similarity index 97% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/dbstorage_sqlstore/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/dbstorage_sqlstore/README.md index 704a9e622..53a837d09 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/dbstorage_sqlstore/README.md +++ b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/dbstorage_sqlstore/README.md @@ -35,7 +35,7 @@ db = SQLStore("example.db") # ... Do work # Close database -db.close() +db.stop() ``` To create a new table: @@ -65,4 +65,4 @@ db.store("users", data) The SQLStore automatically creates a directory structure for database storage, placing files in `data/dbstorage_sqlstore/` within your application directory. The brick supports automatic type inference when creating tables, mapping Python types (*int*, *float*, *str*, *bytes*) to corresponding SQLite column types (*INTEGER*, *REAL*, *TEXT*, *BLOB*). -The `store()` method can automatically create tables if they don't exist by analyzing the data types of the provided values. This makes it easy to get started without defining schemas upfront, while still allowing explicit table creation for more control over column definitions and constraints. \ No newline at end of file +The `store()` method can automatically create tables if they don't exist by analyzing the data types of the provided values. This makes it easy to get started without defining schemas upfront, while still allowing explicit table creation for more control over column definitions and constraints. diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/dbstorage_tsstore/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/dbstorage_tsstore/README.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/dbstorage_tsstore/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/dbstorage_tsstore/README.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/image_classification/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/image_classification/README.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/image_classification/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/image_classification/README.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/keyword_spotting/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/keyword_spotting/README.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/keyword_spotting/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/keyword_spotting/README.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/mood_detector/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/mood_detector/README.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/mood_detector/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/mood_detector/README.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/motion_detection/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/motion_detection/README.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/motion_detection/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/motion_detection/README.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/object_detection/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/object_detection/README.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/object_detection/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/object_detection/README.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/streamlit_ui/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/streamlit_ui/README.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/streamlit_ui/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/streamlit_ui/README.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/vibration_anomaly_detection/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/vibration_anomaly_detection/README.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/vibration_anomaly_detection/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/vibration_anomaly_detection/README.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/video_image_classification/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/video_image_classification/README.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/video_image_classification/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/video_image_classification/README.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/video_object_detection/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/video_object_detection/README.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/video_object_detection/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/video_object_detection/README.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/visual_anomaly_detection/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/visual_anomaly_detection/README.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/visual_anomaly_detection/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/visual_anomaly_detection/README.md diff --git a/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/wave_generator/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/wave_generator/README.md new file mode 100644 index 000000000..23a1f9f82 --- /dev/null +++ b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/wave_generator/README.md @@ -0,0 +1,119 @@ +# Wave Generator brick + +This brick provides continuous wave generation for real-time audio synthesis with multiple waveform types and smooth transitions. + +## Overview + +The Wave Generator brick allows you to: + +- Generate continuous audio waveforms in real-time +- Select between different waveform types (sine, square, sawtooth, triangle) +- Control frequency and amplitude dynamically during playback +- Configure smooth transitions with attack, release, and glide (portamento) parameters +- Stream audio to USB speakers with minimal latency + +It runs continuously in a background thread, producing audio blocks at a steady rate with configurable envelope parameters for professional-sounding synthesis. + +## Features + +- Four waveform types: sine, square, sawtooth, and triangle +- Real-time frequency and amplitude control with smooth transitions +- Configurable envelope parameters (attack, release, glide) +- Hardware volume control support +- Thread-safe operation for concurrent access +- Efficient audio generation using NumPy vectorization +- Custom speaker configuration support + +## Prerequisites + +Before using the Wave Generator brick, ensure you have the following: + +- USB-C® Hub with external power supply (5V, 3A) +- USB audio device (USB speaker or USB-C → 3.5mm adapter) +- Arduino UNO Q running in Network Mode or SBC Mode (USB-C port needed for the hub) + +## Code example and usage + +Here is a basic example for generating a 440 Hz sine wave tone: + +```python +from arduino.app_bricks.wave_generator import WaveGenerator +from arduino.app_utils import App + +wave_gen = WaveGenerator() + +App.start_brick(wave_gen) + +# Set frequency to A4 note (440 Hz) +wave_gen.set_frequency(440.0) + +# Set amplitude to 80% +wave_gen.set_amplitude(0.8) + +App.run() +``` + +You can customize the waveform type and envelope parameters: + +```python +wave_gen = WaveGenerator( + wave_type="square", + attack=0.01, + release=0.03, + glide=0.02 +) + +App.start_brick(wave_gen) + +# Change waveform during playback +wave_gen.set_wave_type("triangle") + +# Adjust envelope parameters +wave_gen.set_envelope_params(attack=0.05, release=0.1, glide=0.05) + +App.run() +``` + +For specific hardware configurations, you can provide a custom Speaker instance: + +```python +from arduino.app_bricks.wave_generator import WaveGenerator +from arduino.app_peripherals.speaker import Speaker +from arduino.app_utils import App + +# Create Speaker with optimal real-time configuration +speaker = Speaker( + device=Speaker.USB_SPEAKER_2, + sample_rate=16000, + channels=1, + format="FLOAT_LE", + periodsize=480, # 16000 Hz × 0.03s = 480 frames (eliminates buffer mismatch) + queue_maxsize=10 # Low latency configuration +) + +# Start external Speaker manually (WaveGenerator won't manage its lifecycle) +speaker.start() + +wave_gen = WaveGenerator(sample_rate=16000, speaker=speaker) + +App.start_brick(wave_gen) +wave_gen.set_frequency(440.0) +wave_gen.set_amplitude(0.7) + +App.run() + +# Stop external Speaker manually +speaker.stop() +``` + +**Note:** When providing an external Speaker, you manage its lifecycle (start/stop). WaveGenerator only validates configuration and uses it for playback. + +## Understanding Wave Generation + +The Wave Generator brick produces audio through continuous waveform synthesis. + +The `frequency` parameter controls the pitch of the output sound, measured in Hertz (Hz), where typical audible frequencies range from 20 Hz to 8000 Hz. + +The `amplitude` parameter controls the volume as a value between 0.0 (silent) and 1.0 (maximum), with smooth transitions handled by the attack and release envelope parameters. + +The `glide` parameter (also known as portamento) smoothly transitions between frequencies over time, creating sliding pitch effects similar to a theremin or synthesizer. Setting glide to 0 disables this effect but may cause audible clicks during fast frequency changes. diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/weather_forecast/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/weather_forecast/README.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/weather_forecast/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/weather_forecast/README.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/web_ui/README.md b/internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/web_ui/README.md similarity index 100% rename from internal/e2e/daemon/testdata/assets/0.5.0/docs/arduino/web_ui/README.md rename to internal/e2e/daemon/testdata/assets/0.6.2/docs/arduino/web_ui/README.md diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/arduino_cloud/1_led_blink.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/arduino_cloud/1_led_blink.py similarity index 90% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/arduino_cloud/1_led_blink.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/arduino_cloud/1_led_blink.py index 58cd94706..3a9df8ca7 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/arduino_cloud/1_led_blink.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/arduino_cloud/1_led_blink.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/arduino_cloud/2_light_with_colors_monitor.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/arduino_cloud/2_light_with_colors_monitor.py similarity index 88% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/arduino_cloud/2_light_with_colors_monitor.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/arduino_cloud/2_light_with_colors_monitor.py index 40371db7a..1fce305b3 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/arduino_cloud/2_light_with_colors_monitor.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/arduino_cloud/2_light_with_colors_monitor.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/arduino_cloud/3_light_with_colors_command.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/arduino_cloud/3_light_with_colors_command.py similarity index 92% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/arduino_cloud/3_light_with_colors_command.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/arduino_cloud/3_light_with_colors_command.py index 5e730ea9f..4b8c5bf95 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/arduino_cloud/3_light_with_colors_command.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/arduino_cloud/3_light_with_colors_command.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/audio_classification/1_glass_breaking_from_mic.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/audio_classification/1_glass_breaking_from_mic.py similarity index 84% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/audio_classification/1_glass_breaking_from_mic.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/audio_classification/1_glass_breaking_from_mic.py index 36b2be12b..1eed6c3a9 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/audio_classification/1_glass_breaking_from_mic.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/audio_classification/1_glass_breaking_from_mic.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/audio_classification/2_glass_breaking_from_file.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/audio_classification/2_glass_breaking_from_file.py similarity index 60% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/audio_classification/2_glass_breaking_from_file.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/audio_classification/2_glass_breaking_from_file.py index 68bdd7108..237aaba15 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/audio_classification/2_glass_breaking_from_file.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/audio_classification/2_glass_breaking_from_file.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 @@ -6,7 +6,5 @@ # EXAMPLE_REQUIRES = "Requires an audio file with the glass breaking sound." from arduino.app_bricks.audio_classification import AudioClassification -classifier = AudioClassification() - -classification = classifier.classify_from_file("glass_breaking.wav") +classification = AudioClassification.classify_from_file("glass_breaking.wav") print("Result:", classification) diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/camera_code_detection/1_detection.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/camera_code_detection/1_detection.py similarity index 89% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/camera_code_detection/1_detection.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/camera_code_detection/1_detection.py index 6dfdb41ad..1facd3263 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/camera_code_detection/1_detection.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/camera_code_detection/1_detection.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/camera_code_detection/2_detection_list.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/camera_code_detection/2_detection_list.py similarity index 90% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/camera_code_detection/2_detection_list.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/camera_code_detection/2_detection_list.py index 6288d571b..7d63bb461 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/camera_code_detection/2_detection_list.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/camera_code_detection/2_detection_list.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/camera_code_detection/3_detection_with_overrides.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/camera_code_detection/3_detection_with_overrides.py similarity index 91% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/camera_code_detection/3_detection_with_overrides.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/camera_code_detection/3_detection_with_overrides.py index 8a6724708..d128cd96a 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/camera_code_detection/3_detection_with_overrides.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/camera_code_detection/3_detection_with_overrides.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/cloud_llm/1_simple_prompt.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/cloud_llm/1_simple_prompt.py new file mode 100644 index 000000000..7c325de88 --- /dev/null +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/cloud_llm/1_simple_prompt.py @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) +# +# SPDX-License-Identifier: MPL-2.0 + +# EXAMPLE_NAME = "Chat with an LLM" +# EXAMPLE_REQUIRES = "Requires a valid API key to a cloud LLM service." + +from arduino.app_bricks.cloud_llm import CloudLLM +from arduino.app_utils import App + +llm = CloudLLM( + api_key="YOUR_API_KEY", # Replace with your actual API key +) + + +def ask_prompt(): + prompt = input("Enter your prompt (or type 'exit' to quit): ") + if prompt.lower() == "exit": + raise StopIteration() + print(llm.chat(prompt)) + print() + + +App.run(ask_prompt) diff --git a/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/cloud_llm/2_streaming_responses.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/cloud_llm/2_streaming_responses.py new file mode 100644 index 000000000..9538cbda1 --- /dev/null +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/cloud_llm/2_streaming_responses.py @@ -0,0 +1,25 @@ +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) +# +# SPDX-License-Identifier: MPL-2.0 + +# EXAMPLE_NAME = "Streaming responses from an LLM" +# EXAMPLE_REQUIRES = "Requires a valid API key to a cloud LLM service." + +from arduino.app_bricks.cloud_llm import CloudLLM +from arduino.app_utils import App + +llm = CloudLLM( + api_key="YOUR_API_KEY", # Replace with your actual API key +) + + +def ask_prompt(): + prompt = input("Enter your prompt (or type 'exit' to quit): ") + if prompt.lower() == "exit": + raise StopIteration() + for token in llm.chat_stream(prompt): + print(token, end="", flush=True) + print() + + +App.run(ask_prompt) diff --git a/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/cloud_llm/3_no_memory.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/cloud_llm/3_no_memory.py new file mode 100644 index 000000000..f30419bf0 --- /dev/null +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/cloud_llm/3_no_memory.py @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) +# +# SPDX-License-Identifier: MPL-2.0 + +# EXAMPLE_NAME = "Conversation with memory" +# EXAMPLE_REQUIRES = "Requires a valid API key to a cloud LLM service." + +from arduino.app_bricks.cloud_llm import CloudLLM +from arduino.app_utils import App + +llm = CloudLLM( + api_key="YOUR_API_KEY", # Replace with your actual API key +) +llm.with_memory(0) + + +def ask_prompt(): + prompt = input("Enter your prompt (or type 'exit' to quit): ") + if prompt.lower() == "exit": + raise StopIteration() + print(llm.chat(prompt)) + + +App.run(ask_prompt) diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/dbstorage_sqlstore/store_and_read_example.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/dbstorage_sqlstore/store_and_read_example.py similarity index 85% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/dbstorage_sqlstore/store_and_read_example.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/dbstorage_sqlstore/store_and_read_example.py index e3e31edb4..54d070cd9 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/dbstorage_sqlstore/store_and_read_example.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/dbstorage_sqlstore/store_and_read_example.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/dbstorage_tsstore/1_write_read.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/dbstorage_tsstore/1_write_read.py similarity index 84% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/dbstorage_tsstore/1_write_read.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/dbstorage_tsstore/1_write_read.py index 9b4185d6c..42c19b901 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/dbstorage_tsstore/1_write_read.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/dbstorage_tsstore/1_write_read.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/dbstorage_tsstore/2_read_all_samples.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/dbstorage_tsstore/2_read_all_samples.py similarity index 93% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/dbstorage_tsstore/2_read_all_samples.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/dbstorage_tsstore/2_read_all_samples.py index 2adee9d98..21ee99a27 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/dbstorage_tsstore/2_read_all_samples.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/dbstorage_tsstore/2_read_all_samples.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/image_classification/image_classification_example.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/image_classification/image_classification_example.py similarity index 90% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/image_classification/image_classification_example.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/image_classification/image_classification_example.py index 7dd28c573..7597172e6 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/image_classification/image_classification_example.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/image_classification/image_classification_example.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/keyword_spotting/1_hello_world.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/keyword_spotting/1_hello_world.py similarity index 82% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/keyword_spotting/1_hello_world.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/keyword_spotting/1_hello_world.py index b5687f860..346cf45d4 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/keyword_spotting/1_hello_world.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/keyword_spotting/1_hello_world.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/object_detection/object_detection_example.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/object_detection/object_detection_example.py similarity index 91% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/object_detection/object_detection_example.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/object_detection/object_detection_example.py index f2ca3b9f4..166f5b7cf 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/object_detection/object_detection_example.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/object_detection/object_detection_example.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/visual_anomaly_detection/object_detection_example.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/visual_anomaly_detection/object_detection_example.py similarity index 91% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/visual_anomaly_detection/object_detection_example.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/visual_anomaly_detection/object_detection_example.py index 5dc0d2cc9..42a8864e9 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/visual_anomaly_detection/object_detection_example.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/visual_anomaly_detection/object_detection_example.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/wave_generator/01_basic_tone.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/wave_generator/01_basic_tone.py new file mode 100644 index 000000000..5acd492f0 --- /dev/null +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/wave_generator/01_basic_tone.py @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) +# +# SPDX-License-Identifier: MPL-2.0 + +""" +Basic Wave Generator Example + +Generates a simple 440Hz sine wave (A4 note) and demonstrates +basic frequency and amplitude control. +""" + +from arduino.app_bricks.wave_generator import WaveGenerator +from arduino.app_utils import App + +# Create wave generator with default settings +wave_gen = WaveGenerator( + sample_rate=16000, + wave_type="sine", + glide=0.02, # 20ms smooth frequency transitions +) + +# Start the generator +App.start_brick(wave_gen) + +# Set initial frequency and amplitude +wave_gen.set_frequency(440.0) # A4 note (440 Hz) +wave_gen.set_amplitude(0.7) # 70% amplitude +wave_gen.set_volume(80) # 80% hardware volume + +print("Playing 440Hz sine wave (A4 note)") +print("Press Ctrl+C to stop") + +# Keep the application running +App.run() diff --git a/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/wave_generator/02_waveform_types.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/wave_generator/02_waveform_types.py new file mode 100644 index 000000000..320757c34 --- /dev/null +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/wave_generator/02_waveform_types.py @@ -0,0 +1,41 @@ +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) +# +# SPDX-License-Identifier: MPL-2.0 + +""" +Waveform Comparison Example + +Cycles through different waveform types to hear the difference +between sine, square, sawtooth, and triangle waves. +""" + +import time +from arduino.app_bricks.wave_generator import WaveGenerator +from arduino.app_utils import App + +wave_gen = WaveGenerator(sample_rate=16000, glide=0.02) +App.start_brick(wave_gen) + +# Set constant frequency and amplitude +wave_gen.set_frequency(440.0) +wave_gen.set_amplitude(0.6) + +waveforms = ["sine", "square", "sawtooth", "triangle"] + + +def cycle_waveforms(): + """Cycle through different waveform types.""" + for wave_type in waveforms: + print(f"Playing {wave_type} wave...") + wave_gen.set_wave_type(wave_type) + time.sleep(3) + # Silence + wave_gen.set_amplitude(0.0) + time.sleep(2) + + +print("Cycling through waveforms:") +print("sine → square → sawtooth → triangle") +print("Press Ctrl+C to stop") + +App.run(user_loop=cycle_waveforms) diff --git a/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/wave_generator/03_frequency_sweep.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/wave_generator/03_frequency_sweep.py new file mode 100644 index 000000000..614d99620 --- /dev/null +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/wave_generator/03_frequency_sweep.py @@ -0,0 +1,51 @@ +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) +# +# SPDX-License-Identifier: MPL-2.0 + +""" +Frequency Sweep Example + +Demonstrates smooth frequency transitions (glide/portamento effect) +by sweeping through different frequency ranges. +""" + +import time +from arduino.app_bricks.wave_generator import WaveGenerator +from arduino.app_utils import App + +wave_gen = WaveGenerator( + wave_type="sine", + glide=0.05, # 50ms glide for noticeable portamento +) + +App.start_brick(wave_gen) +wave_gen.set_amplitude(0.7) + + +def frequency_sweep(): + """Sweep through frequency ranges.""" + + # Low to high sweep + print("Sweeping low to high (220Hz → 880Hz)...") + for freq in range(220, 881, 20): + wave_gen.set_frequency(float(freq)) + time.sleep(0.1) + + time.sleep(0.5) + + # High to low sweep + print("Sweeping high to low (880Hz → 220Hz)...") + for freq in range(880, 219, -20): + wave_gen.set_frequency(float(freq)) + time.sleep(0.1) + # Fade out + print("Fading out...") + wave_gen.set_amplitude(0.0) + time.sleep(2) + + +print("Frequency sweep demonstration") +print("Listen for smooth glide between frequencies") +print("Press Ctrl+C to stop") + +App.run(user_loop=frequency_sweep) diff --git a/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/wave_generator/04_envelope_control.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/wave_generator/04_envelope_control.py new file mode 100644 index 000000000..395099fb7 --- /dev/null +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/wave_generator/04_envelope_control.py @@ -0,0 +1,63 @@ +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) +# +# SPDX-License-Identifier: MPL-2.0 + +""" +Envelope Control Example + +Demonstrates amplitude envelope control with different +attack and release times for various sonic effects. +""" + +import time +from arduino.app_bricks.wave_generator import WaveGenerator +from arduino.app_utils import App + +wave_gen = WaveGenerator(wave_type="sine") +App.start_brick(wave_gen) + +wave_gen.set_frequency(440.0) +wave_gen.set_volume(80) + + +def envelope_demo(): + """Demonstrate different envelope settings.""" + + # Fast attack, fast release (percussive) + print("1. Percussive (fast attack/release)...") + wave_gen.set_envelope_params(attack=0.001, release=0.01, glide=0.0) + wave_gen.set_amplitude(0.8) + time.sleep(0.5) + wave_gen.set_amplitude(0.0) + time.sleep(1) + + # Slow attack, fast release (pad-like) + print("2. Pad-like (slow attack, fast release)...") + wave_gen.set_envelope_params(attack=0.2, release=0.05, glide=0.0) + wave_gen.set_amplitude(0.8) + time.sleep(1) + wave_gen.set_amplitude(0.0) + time.sleep(1) + + # Fast attack, slow release (sustained) + print("3. Sustained (fast attack, slow release)...") + wave_gen.set_envelope_params(attack=0.01, release=0.3, glide=0.0) + wave_gen.set_amplitude(0.8) + time.sleep(0.5) + wave_gen.set_amplitude(0.0) + time.sleep(1.5) + + # Medium attack and release (balanced) + print("4. Balanced (medium attack/release)...") + wave_gen.set_envelope_params(attack=0.05, release=0.05, glide=0.0) + wave_gen.set_amplitude(0.8) + time.sleep(0.8) + wave_gen.set_amplitude(0.0) + time.sleep(2) + + +print("Envelope Control Demonstration") +print("Listen to different attack/release characteristics") +print("Press Ctrl+C to stop") + +App.run(user_loop=envelope_demo) diff --git a/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/wave_generator/05_external_speaker.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/wave_generator/05_external_speaker.py new file mode 100644 index 000000000..715e9cc3c --- /dev/null +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/wave_generator/05_external_speaker.py @@ -0,0 +1,77 @@ +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) +# +# SPDX-License-Identifier: MPL-2.0 + +""" +Custom Speaker Configuration Example + +Demonstrates how to use a pre-configured Speaker instance with WaveGenerator. +Use this approach when you need: +- Specific USB speaker selection (USB_SPEAKER_2, etc.) +- Different audio format (S16_LE, etc.) +- Explicit device name ("plughw:CARD=Device,DEV=0") +""" + +import time +from arduino.app_bricks.wave_generator import WaveGenerator +from arduino.app_peripherals.speaker import Speaker +from arduino.app_utils import App + +# List available USB speakers +available_speakers = Speaker.list_usb_devices() +print(f"Available USB speakers: {available_speakers}") + +# Create and configure a Speaker with specific parameters +# For optimal real-time synthesis, align periodsize with WaveGenerator block_duration +block_duration = 0.03 # Default WaveGenerator block duration +sample_rate = 16000 +periodsize = int(sample_rate * block_duration) # 480 frames @ 16kHz + +speaker = Speaker( + device=Speaker.USB_SPEAKER_1, # or explicit device like "plughw:CARD=Device" + sample_rate=sample_rate, + channels=1, + format="FLOAT_LE", + periodsize=periodsize, # Align with WaveGenerator blocks (eliminates glitches) + queue_maxsize=10, # Low latency for real-time audio +) + +# Start the external Speaker manually +# WaveGenerator won't manage its lifecycle (ownership pattern) +speaker.start() + +# Create WaveGenerator with the external speaker +wave_gen = WaveGenerator( + sample_rate=sample_rate, + speaker=speaker, # Pass pre-configured speaker + wave_type="sine", + glide=0.02, +) + +# Start the WaveGenerator (speaker already started above) +App.start_brick(wave_gen) + + +def play_sequence(): + """Play a simple frequency sequence.""" + frequencies = [261.63, 293.66, 329.63, 349.23, 392.00, 440.00, 493.88, 523.25] # C4 to C5 + + for freq in frequencies: + print(f"Playing {freq:.2f} Hz") + wave_gen.set_frequency(freq) + wave_gen.set_amplitude(0.7) + time.sleep(0.5) + + # Fade out + wave_gen.set_amplitude(0.0) + time.sleep(1) + + +print("Playing musical scale with external speaker...") +print("Press Ctrl+C to stop") + +App.run(user_loop=play_sequence) + +# Stop external Speaker manually (WaveGenerator doesn't manage external lifecycle) +speaker.stop() +print("Done") diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/weather_forecast/weather_forecast_by_city_example.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/weather_forecast/weather_forecast_by_city_example.py similarity index 81% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/weather_forecast/weather_forecast_by_city_example.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/weather_forecast/weather_forecast_by_city_example.py index 44241a76f..cb9a10810 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/weather_forecast/weather_forecast_by_city_example.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/weather_forecast/weather_forecast_by_city_example.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/weather_forecast/weather_forecast_by_coords_example.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/weather_forecast/weather_forecast_by_coords_example.py similarity index 81% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/weather_forecast/weather_forecast_by_coords_example.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/weather_forecast/weather_forecast_by_coords_example.py index 740740a38..11b8ca9da 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/weather_forecast/weather_forecast_by_coords_example.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/weather_forecast/weather_forecast_by_coords_example.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/web_ui/1_serve_webapp.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/web_ui/1_serve_webapp.py similarity index 80% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/web_ui/1_serve_webapp.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/web_ui/1_serve_webapp.py index 55fb6ca7c..4d8768aa2 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/web_ui/1_serve_webapp.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/web_ui/1_serve_webapp.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/web_ui/2_serve_webapp_and_api.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/web_ui/2_serve_webapp_and_api.py similarity index 79% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/web_ui/2_serve_webapp_and_api.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/web_ui/2_serve_webapp_and_api.py index ff1c7cc0a..19afb6760 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/web_ui/2_serve_webapp_and_api.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/web_ui/2_serve_webapp_and_api.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/web_ui/3_connect_disconnect.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/web_ui/3_connect_disconnect.py similarity index 81% rename from internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/web_ui/3_connect_disconnect.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/web_ui/3_connect_disconnect.py index 0a98cd99e..749061492 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/examples/arduino/web_ui/3_connect_disconnect.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/web_ui/3_connect_disconnect.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/web_ui/4_on_message.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/web_ui/4_on_message.py similarity index 80% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/web_ui/4_on_message.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/web_ui/4_on_message.py index cfec4c7cd..7eb1316fc 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/web_ui/4_on_message.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/web_ui/4_on_message.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/web_ui/5_send_message.py b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/web_ui/5_send_message.py similarity index 80% rename from debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/web_ui/5_send_message.py rename to internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/web_ui/5_send_message.py index 9bb52450d..00e19bc7d 100644 --- a/debian/arduino-app-cli/home/arduino/.local/share/arduino-app-cli/assets/0.5.0/examples/arduino/web_ui/5_send_message.py +++ b/internal/e2e/daemon/testdata/assets/0.6.2/examples/arduino/web_ui/5_send_message.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (C) 2025 ARDUINO SA +# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc) # # SPDX-License-Identifier: MPL-2.0 diff --git a/internal/e2e/daemon/testdata/assets/0.5.0/models-list.yaml b/internal/e2e/daemon/testdata/assets/0.6.2/models-list.yaml similarity index 94% rename from internal/e2e/daemon/testdata/assets/0.5.0/models-list.yaml rename to internal/e2e/daemon/testdata/assets/0.6.2/models-list.yaml index 7c511011c..cc482bdcb 100644 --- a/internal/e2e/daemon/testdata/assets/0.5.0/models-list.yaml +++ b/internal/e2e/daemon/testdata/assets/0.6.2/models-list.yaml @@ -2,7 +2,7 @@ models: - face-detection: runner: brick name : "Lightweight-Face-Detection" - description: "Face bounding box detection. This model is trained on the WIDER FACE dataset and can detect faces in images." + description: "A small and accurate model for detecting bounding boxes for faces in images." model_configuration: "EI_OBJ_DETECTION_MODEL": "/models/ootb/ei/lw-face-det.eim" model_labels: @@ -13,12 +13,14 @@ models: metadata: source: "qualcomm-ai-hub" ei-gpu-mode: false + ei-project-id: 830703 + ei-model-url: "https://studio.edgeimpulse.com/public/830703/live" source-model-id: "face-det-lite" source-model-url: "https://aihub.qualcomm.com/models/face_det_lite" - yolox-object-detection: runner: brick name : "General purpose object detection - YoloX" - description: "General purpose object detection model based on YoloX Nano. This model is trained on the COCO dataset and can detect 80 different object classes." + description: "General purpose object detection model based on YoloX-Nano. This model is trained on the COCO dataset and can detect 80 different object classes." model_configuration: "EI_OBJ_DETECTION_MODEL": "/models/ootb/ei/yolo-x-nano.eim" model_labels: @@ -105,6 +107,7 @@ models: metadata: source: "edgeimpulse" ei-project-id: 717280 + ei-model-url: "https://studio.edgeimpulse.com/public/717280/live" source-model-id: "YOLOX-Nano" source-model-url: "https://github.com/Megvii-BaseDetection/YOLOX" bricks: @@ -1071,6 +1074,7 @@ models: metadata: source: "edgeimpulse" ei-project-id: 708500 + ei-model-url: "https://studio.edgeimpulse.com/public/708500/live" ei-gpu-mode: true source-model-id: "MobileNetV2" source-model-url: "https://www.tensorflow.org/api_docs/python/tf/keras/applications/MobileNetV2" @@ -1089,9 +1093,10 @@ models: metadata: source: "edgeimpulse" ei-project-id: 755016 + ei-model-url: "https://studio.edgeimpulse.com/public/755016/live" ei-gpu-mode: true source-model-id: "person-classification-wakevision" - source-model-url: "https://studio.edgeimpulse.com/studio/755016" + source-model-url: "https://studio.edgeimpulse.com/public/755016/live" bricks: - arduino:image_classification - arduino:video_image_classification @@ -1103,15 +1108,16 @@ models: "EI_V_ANOMALY_DETECTION_MODEL": "/models/ootb/ei/concrete-crack-anomaly-detection.eim" metadata: source: "edgeimpulse" - ei-project-id: 288658 + ei-project-id: 800941 + ei-model-url: "https://studio.edgeimpulse.com/public/800941/live" source-model-id: "concrete-crack-anomaly-detection" - source-model-url: "https://studio.edgeimpulse.com/public/288658" + source-model-url: "https://studio.edgeimpulse.com/public/800941/live" bricks: - arduino:visual_anomaly_detection - keyword-spotting-hey-arduino: runner: brick name : "Keyword spotting - Hey Arduino!" - description: "A keyword-spotting model to detect the 'Hey Arduino!' in audio recordings" + description: "A keyword-spotting model to detect the 'Hey Arduino!' in audio streams." model_configuration: "EI_KEYWORD_SPOTTING_MODEL": "/models/ootb/ei/keyword-spotting-hey-arduino.eim" model_labels: @@ -1120,12 +1126,14 @@ models: - "other" metadata: source: "edgeimpulse" - ei-project-id: 757509 + ei-project-id: 757509 + ei-model-url: "https://studio.edgeimpulse.com/studio/757509/live" ei-impulse-id: 30 source-model-id: "hey-arduino" - source-model-url: "https://studio.edgeimpulse.com/studio/757509" + source-model-url: "https://studio.edgeimpulse.com/studio/757509/live" + private: true bricks: - - arduino:keyword_spotter + - arduino:keyword_spotting - updown-wave-motion-detection: runner: brick name : "Continuous motion detection" @@ -1140,9 +1148,11 @@ models: metadata: source: "edgeimpulse" ei-project-id: 734960 + ei-model-url: "https://studio.edgeimpulse.com/public/734960/live" source-model-id: "continuous-motion-detection" - source-model-url: "https://studio.edgeimpulse.com/studio/734960" - brick: arduino:motion_detection + source-model-url: "https://studio.edgeimpulse.com/public/734960/live" + bricks: + - arduino:motion_detection - fan-anomaly-detection: runner: brick name : "Fan anomaly detection" @@ -1152,8 +1162,9 @@ models: metadata: source: "edgeimpulse" ei-project-id: 774707 + ei-model-url: "https://studio.edgeimpulse.com/public/774707/live" source-model-id: "fan-anomaly-detection" - source-model-url: "https://studio.edgeimpulse.com/studio/774707" + source-model-url: "https://studio.edgeimpulse.com/public/774707/live" bricks: - arduino:vibration_anomaly_detection - glass-breaking: @@ -1168,7 +1179,9 @@ models: metadata: source: "edgeimpulse" ei-project-id: 749446 + ei-model-url: "https://studio.edgeimpulse.com/public/749446/live" source-model-id: "glass-breaking" - source-model-url: "https://studio.edgeimpulse.com/studio/749446" + source-model-url: "https://studio.edgeimpulse.com/public/749446/live" + private: true bricks: - - arduino:audio_classifier + - arduino:audio_classification diff --git a/internal/e2e/updatetest/helpers.go b/internal/e2e/updatetest/helpers.go new file mode 100644 index 000000000..410a99999 --- /dev/null +++ b/internal/e2e/updatetest/helpers.go @@ -0,0 +1,331 @@ +package updatetest + +import ( + "bufio" + "bytes" + "context" + "encoding/json" + "fmt" + "iter" + "log" + "net" + "net/http" + "os" + "os/exec" + "path/filepath" + "strconv" + "strings" + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +func fetchDebPackageLatest(t *testing.T, path, repo string) string { + t.Helper() + + repo = fmt.Sprintf("github.com/arduino/%s", repo) + cmd := exec.Command( + "gh", "release", "list", + "--repo", repo, + "--exclude-pre-releases", + "--limit", "1", + ) + + output, err := cmd.CombinedOutput() + if err != nil { + log.Fatalf("command failed: %v\nOutput: %s", err, output) + } + + fmt.Println(string(output)) + + fields := strings.Fields(string(output)) + if len(fields) == 0 { + log.Fatal("could not parse tag from gh release list output") + } + tag := fields[0] + + fmt.Println("Detected tag:", tag) + cmd2 := exec.Command( + "gh", "release", "download", + tag, + "--repo", repo, + "--pattern", "*.deb", + "--dir", path, + ) + + out, err := cmd2.CombinedOutput() + if err != nil { + log.Fatalf("download failed: %v\nOutput: %s", err, out) + } + + return tag + +} + +func buildDebVersion(t *testing.T, storePath, tagVersion, arch string) { + t.Helper() + cwd, err := os.Getwd() + if err != nil { + panic(err) + } + outputDir := filepath.Join(cwd, storePath) + + tagVersion = fmt.Sprintf("VERSION=%s", tagVersion) + arch = fmt.Sprintf("ARCH=%s", arch) + outputDir = fmt.Sprintf("OUTPUT=%s", outputDir) + + cmd := exec.Command( + "go", "tool", "task", "build-deb", + tagVersion, + arch, + outputDir, + ) + + if err := cmd.Run(); err != nil { + log.Fatalf("failed to run build command: %v", err) + } +} + +func genMajorTag(t *testing.T, tag string) string { + t.Helper() + + parts := strings.Split(tag, ".") + last := parts[len(parts)-1] + + lastNum, _ := strconv.Atoi(strings.TrimPrefix(last, "v")) + lastNum++ + + parts[len(parts)-1] = strconv.Itoa(lastNum) + newTag := strings.Join(parts, ".") + + return newTag +} + +func genMinorTag(t *testing.T, tag string) string { + t.Helper() + + parts := strings.Split(tag, ".") + last := parts[len(parts)-1] + + lastNum, _ := strconv.Atoi(strings.TrimPrefix(last, "v")) + if lastNum > 0 { + lastNum-- + } + + parts[len(parts)-1] = strconv.Itoa(lastNum) + newTag := strings.Join(parts, ".") + + if !strings.HasPrefix(newTag, "v") { + newTag = "v" + newTag + } + return newTag +} + +func buildDockerImage(t *testing.T, dockerfile, name, arch string) { + t.Helper() + + arch = fmt.Sprintf("ARCH=%s", arch) + + cmd := exec.Command("docker", "build", "--build-arg", arch, "-t", name, "-f", dockerfile, ".") + // Capture both stdout and stderr + var out bytes.Buffer + var stderr bytes.Buffer + cmd.Stdout = &out + cmd.Stderr = &stderr + + err := cmd.Run() + if err != nil { + fmt.Printf("❌ Docker build failed: %v\n", err) + fmt.Printf("---- STDERR ----\n%s\n", stderr.String()) + fmt.Printf("---- STDOUT ----\n%s\n", out.String()) + return + } + + fmt.Println("✅ Docker build succeeded!") +} + +func startDockerContainer(t *testing.T, containerName string, containerImageName string) { + t.Helper() + + cmd := exec.Command( + "docker", "run", "--rm", "-d", + "-p", "8800:8800", + "--privileged", + "--cgroupns=host", + "--network", "host", + "-v", "/sys/fs/cgroup:/sys/fs/cgroup:rw", + "-v", "/var/run/docker.sock:/var/run/docker.sock", + "-e", "DOCKER_HOST=unix:///var/run/docker.sock", + "--name", containerName, + containerImageName, + ) + + if err := cmd.Run(); err != nil { + t.Fatalf("failed to run container: %v", err) + } + +} + +func getAppCliVersion(t *testing.T, containerName string) string { + t.Helper() + + cmd := exec.Command( + "docker", "exec", + "--user", "arduino", + containerName, + "arduino-app-cli", "version", "--format", "json", + ) + output, err := cmd.CombinedOutput() + if err != nil { + log.Fatalf("command failed: %v\nOutput: %s", err, output) + } + + var version struct { + Version string `json:"version"` + DaemonVersion string `json:"daemon_version"` + } + err = json.Unmarshal(output, &version) + require.NoError(t, err) + // TODO to enable after 0.6.7 + // require.Equal(t, version.Version, version.DaemonVersion, "client and daemon versions should match") + require.NotEmpty(t, version.Version) + return version.Version + +} + +func runSystemUpdate(t *testing.T, containerName string) { + t.Helper() + + cmd := exec.Command( + "docker", "exec", + "--user", "arduino", + containerName, + "arduino-app-cli", "system", "update", "--yes", + ) + output, err := cmd.CombinedOutput() + require.NoError(t, err, "system update failed: %s", output) + t.Logf("system update output: %s", output) +} + +func stopDockerContainer(t *testing.T, containerName string) { + t.Helper() + + cleanupCmd := exec.Command("docker", "rm", "-f", containerName) + + fmt.Println("🧹 Removing Docker container " + containerName) + if err := cleanupCmd.Run(); err != nil { + fmt.Printf("⚠️ Warning: could not remove container (might not exist): %v\n", err) + } + +} + +func putUpdateRequest(t *testing.T, host string) { + + t.Helper() + + url := fmt.Sprintf("http://%s/v1/system/update/apply", host) + + req, err := http.NewRequest(http.MethodPut, url, nil) + if err != nil { + log.Fatalf("Error creating request: %v", err) + } + + req.Header.Set("Content-Type", "application/json") + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + log.Fatalf("Error sending request: %v", err) + } + defer resp.Body.Close() + + require.Equal(t, 202, resp.StatusCode) + +} + +func NewSSEClient(ctx context.Context, method, url string) iter.Seq2[Event, error] { + return func(yield func(Event, error) bool) { + req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) + if err != nil { + _ = yield(Event{}, err) + return + } + + resp, err := http.DefaultClient.Do(req) + if err != nil { + _ = yield(Event{}, err) + return + } + defer resp.Body.Close() + + if resp.StatusCode != 200 { + _ = yield(Event{}, fmt.Errorf("got response status code %d", resp.StatusCode)) + return + } + + reader := bufio.NewReader(resp.Body) + + evt := Event{} + for { + line, err := reader.ReadString('\n') + if err != nil { + _ = yield(Event{}, err) + return + } + switch { + case strings.HasPrefix(line, "data:"): + evt.Data = []byte(strings.TrimSpace(strings.TrimPrefix(line, "data:"))) + case strings.HasPrefix(line, "event:"): + evt.Event = strings.TrimSpace(strings.TrimPrefix(line, "event:")) + case strings.HasPrefix(line, "id:"): + evt.ID = strings.TrimSpace(strings.TrimPrefix(line, "id:")) + case strings.HasPrefix(line, "\n"): + if !yield(evt, nil) { + return + } + evt = Event{} + default: + _ = yield(Event{}, fmt.Errorf("unknown line: '%s'", line)) + return + } + } + } +} + +type Event struct { + ID string + Event string + Data []byte // json +} + +func waitForPort(t *testing.T, host string, timeout time.Duration) { // nolint:unparam + t.Helper() + deadline := time.Now().Add(timeout) + for time.Now().Before(deadline) { + conn, err := net.DialTimeout("tcp", host, 500*time.Millisecond) + if err == nil { + _ = conn.Close() + t.Logf("Server is up on %s", host) + return + } + time.Sleep(200 * time.Millisecond) + } + t.Fatalf("Server at %s did not start within %v", host, timeout) +} + +func waitForUpgrade(t *testing.T, host string) { + t.Helper() + + url := fmt.Sprintf("http://%s/v1/system/update/events", host) + + itr := NewSSEClient(t.Context(), "GET", url) + for event, err := range itr { + require.NoError(t, err) + t.Logf("Received event: ID=%s, Event=%s, Data=%s\n", event.ID, event.Event, string(event.Data)) + if event.Event == "restarting" { + break + } + } + +} diff --git a/internal/e2e/updatetest/test.Dockerfile b/internal/e2e/updatetest/test.Dockerfile new file mode 100644 index 000000000..578e71c0a --- /dev/null +++ b/internal/e2e/updatetest/test.Dockerfile @@ -0,0 +1,33 @@ +FROM debian:trixie + +RUN apt update && \ + apt install -y systemd systemd-sysv dbus \ + sudo docker.io ca-certificates curl gnupg \ + dpkg-dev apt-utils adduser gzip && \ + rm -rf /var/lib/apt/lists/* + +ARG ARCH=amd64 + +COPY build/stable/arduino-app-cli*_${ARCH}.deb /tmp/stable.deb +COPY build/arduino-app-cli*_${ARCH}.deb /tmp/unstable.deb +COPY build/stable/arduino-router*_${ARCH}.deb /tmp/router.deb + +RUN apt update && apt install -y /tmp/stable.deb /tmp/router.deb \ + && rm /tmp/stable.deb /tmp/router.deb \ + && mkdir -p /var/www/html/myrepo/dists/trixie/main/binary-${ARCH} \ + && mv /tmp/unstable.deb /var/www/html/myrepo/dists/trixie/main/binary-${ARCH}/ + +WORKDIR /var/www/html/myrepo +RUN dpkg-scanpackages dists/trixie/main/binary-${ARCH} /dev/null | gzip -9c > dists/trixie/main/binary-${ARCH}/Packages.gz +WORKDIR / + +RUN usermod -s /bin/bash arduino || true +RUN mkdir -p /home/arduino && chown -R arduino:arduino /home/arduino +RUN usermod -aG docker arduino + +RUN echo "deb [trusted=yes arch=${ARCH}] file:/var/www/html/myrepo trixie main" \ + > /etc/apt/sources.list.d/my-mock-repo.list + +EXPOSE 8800 +# CMD: systemd must be PID 1 +CMD ["/sbin/init"] diff --git a/internal/e2e/updatetest/update_test.go b/internal/e2e/updatetest/update_test.go new file mode 100644 index 000000000..061a8ff6d --- /dev/null +++ b/internal/e2e/updatetest/update_test.go @@ -0,0 +1,122 @@ +package updatetest + +import ( + "fmt" + "os" + "runtime" + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +var arch = runtime.GOARCH + +const dockerFile = "test.Dockerfile" +const daemonHost = "127.0.0.1:8800" + +func TestUpdatePackage(t *testing.T) { + fmt.Printf("***** ARCH %s ***** \n", arch) + + t.Run("Stable To Current", func(t *testing.T) { + t.Cleanup(func() { os.RemoveAll("build") }) + + tagAppCli := fetchDebPackageLatest(t, "build/stable", "arduino-app-cli") + fetchDebPackageLatest(t, "build/stable", "arduino-router") + majorTag := genMajorTag(t, tagAppCli) + + fmt.Printf("Updating from stable version %s to unstable version %s \n", tagAppCli, majorTag) + fmt.Printf("Building local deb version %s \n", majorTag) + buildDebVersion(t, "build", majorTag, arch) + + const dockerImageName = "apt-test-update-image" + fmt.Println("**** BUILD docker image *****") + buildDockerImage(t, dockerFile, dockerImageName, arch) + //TODO: t cleanup remove docker image + + t.Run("CLI Command", func(t *testing.T) { + const containerName = "apt-test-update" + t.Cleanup(func() { stopDockerContainer(t, containerName) }) + + fmt.Println("**** RUN docker image *****") + startDockerContainer(t, containerName, dockerImageName) + waitForPort(t, daemonHost, 5*time.Second) + + preUpdateVersion := getAppCliVersion(t, containerName) + require.Equal(t, "v"+preUpdateVersion, tagAppCli) + runSystemUpdate(t, containerName) + postUpdateVersion := getAppCliVersion(t, containerName) + require.Equal(t, "v"+postUpdateVersion, majorTag) + }) + + t.Run("HTTP Request", func(t *testing.T) { + const containerName = "apt-test-update-http" + t.Cleanup(func() { stopDockerContainer(t, containerName) }) + + startDockerContainer(t, containerName, dockerImageName) + waitForPort(t, daemonHost, 5*time.Second) + + preUpdateVersion := getAppCliVersion(t, containerName) + require.Equal(t, "v"+preUpdateVersion, tagAppCli) + + putUpdateRequest(t, daemonHost) + waitForUpgrade(t, daemonHost) + + postUpdateVersion := getAppCliVersion(t, containerName) + require.Equal(t, "v"+postUpdateVersion, majorTag) + }) + + }) + + t.Run("CurrentToStable", func(t *testing.T) { + t.Cleanup(func() { os.RemoveAll("build") }) + + tagAppCli := fetchDebPackageLatest(t, "build", "arduino-app-cli") + fetchDebPackageLatest(t, "build/stable", "arduino-router") + minorTag := genMinorTag(t, tagAppCli) + + fmt.Printf("Updating from unstable version %s to stable version %s \n", minorTag, tagAppCli) + fmt.Printf("Building local deb version %s \n", minorTag) + buildDebVersion(t, "build/stable", minorTag, arch) + + fmt.Println("**** BUILD docker image *****") + const dockerImageName = "test-apt-update-unstable-image" + + buildDockerImage(t, dockerFile, dockerImageName, arch) + //TODO: t cleanup remove docker image + + t.Run("CLI Command", func(t *testing.T) { + const containerName = "apt-test-update-unstable" + t.Cleanup(func() { stopDockerContainer(t, containerName) }) + + fmt.Println("**** RUN docker image *****") + startDockerContainer(t, containerName, dockerImageName) + waitForPort(t, daemonHost, 5*time.Second) + + preUpdateVersion := getAppCliVersion(t, containerName) + require.Equal(t, "v"+preUpdateVersion, minorTag) + runSystemUpdate(t, containerName) + postUpdateVersion := getAppCliVersion(t, containerName) + require.Equal(t, "v"+postUpdateVersion, tagAppCli) + }) + + t.Run("HTTP Request", func(t *testing.T) { + const containerName = "apt-test-update--unstable-http" + t.Cleanup(func() { stopDockerContainer(t, containerName) }) + + startDockerContainer(t, containerName, dockerImageName) + waitForPort(t, daemonHost, 5*time.Second) + + preUpdateVersion := getAppCliVersion(t, containerName) + require.Equal(t, "v"+preUpdateVersion, minorTag) + + putUpdateRequest(t, daemonHost) + waitForUpgrade(t, daemonHost) + + postUpdateVersion := getAppCliVersion(t, containerName) + require.Equal(t, "v"+postUpdateVersion, tagAppCli) + }) + + }) + +} diff --git a/internal/monitor/monitor.go b/internal/monitor/monitor.go new file mode 100644 index 000000000..1c4a33b05 --- /dev/null +++ b/internal/monitor/monitor.go @@ -0,0 +1,90 @@ +// This file is part of arduino-app-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-app-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package monitor + +import ( + "errors" + "io" + "log/slog" + "net" + "time" + + "go.bug.st/f" +) + +const defaultArduinoRouterMonitorAddress = "127.0.0.1:7500" + +func NewMonitorHandler(rw io.ReadWriteCloser, address ...string) (func(), error) { + f.Assert(len(address) <= 1, "NewMonitorHandler accepts at most one address argument") + + addr := defaultArduinoRouterMonitorAddress + if len(address) == 1 { + addr = address[0] + } + + // Connect to monitor + monitor, err := net.DialTimeout("tcp", addr, time.Second) + if err != nil { + return nil, err + } + + return func() { + monitorStream(monitor, rw) + }, nil +} + +func monitorStream(mon net.Conn, rw io.ReadWriteCloser) { + logSocketError := func(msg string, err error) { + if !errors.Is(err, net.ErrClosed) && !errors.Is(err, io.EOF) { + slog.Error(msg, slog.String("error", err.Error())) + } + } + go func() { + defer mon.Close() + defer rw.Close() + buff := [1024]byte{} + for { + // Read from reader and write to monitor + n, err := rw.Read(buff[:]) + if err != nil { + logSocketError("Error reading from websocket", err) + return + } + if _, err := mon.Write(buff[:n]); err != nil { + logSocketError("Error writing to monitor", err) + return + } + } + }() + go func() { + defer mon.Close() + defer rw.Close() + buff := [1024]byte{} + for { + // Read from monitor and write to writer + n, err := mon.Read(buff[:]) + if err != nil { + logSocketError("Error reading from monitor", err) + return + } + + if _, err := rw.Write(buff[:n]); err != nil { + logSocketError("Error writing to buffer", err) + return + } + } + }() +} diff --git a/internal/monitor/monitor_test.go b/internal/monitor/monitor_test.go new file mode 100644 index 000000000..2906a3477 --- /dev/null +++ b/internal/monitor/monitor_test.go @@ -0,0 +1,79 @@ +package monitor + +import ( + "fmt" + "io" + "net" + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/arduino/arduino-app-cli/pkg/x/ports" +) + +func TestMonitorHandler(t *testing.T) { + addr := startEcoMonitor(t) + + rIn, wIn, rwOut := getReadWriteCloser() + + handler, err := NewMonitorHandler(rwOut, addr.String()) + assert.NoError(t, err) + go handler() + + // Write data to the pipe writer + message := "Hello, Monitor!" + n, err := wIn.Write([]byte(message)) + assert.NoError(t, err) + assert.Equal(t, len(message), n) + + // Read data from the pipe reader + buf := [128]byte{} + n, err = rIn.Read(buf[:]) + assert.NoError(t, err) + assert.Equal(t, len(message), n) + assert.Equal(t, message, string(buf[:n])) +} + +func getReadWriteCloser() (io.Reader, io.Writer, io.ReadWriteCloser) { + rOut, wIn := io.Pipe() + rIn, wOut := io.Pipe() + + type pipeReadWriteCloser struct { + io.Reader + io.Writer + io.Closer + } + pr := &pipeReadWriteCloser{ + Reader: rOut, + Writer: wOut, + Closer: io.NopCloser(nil), + } + return rIn, wIn, pr +} + +func startEcoMonitor(t *testing.T) net.Addr { + t.Helper() + + port, err := ports.GetAvailable() + assert.NoError(t, err) + + ln, err := net.Listen("tcp", fmt.Sprintf("localhost:%d", port)) + assert.NoError(t, err) + t.Cleanup(func() { _ = ln.Close() }) + + go func() { + for { + conn, err := ln.Accept() + if err != nil { + return + } + + go func() { + defer conn.Close() + _, _ = io.Copy(conn, conn) // Echo server + }() + } + }() + + return ln.Addr() +} diff --git a/internal/orchestrator/app/app.go b/internal/orchestrator/app/app.go index 165b0062f..dff16ed3a 100644 --- a/internal/orchestrator/app/app.go +++ b/internal/orchestrator/app/app.go @@ -30,33 +30,32 @@ import ( type ArduinoApp struct { Name string MainPythonFile *paths.Path - MainSketchPath *paths.Path + mainSketchPath *paths.Path FullPath *paths.Path // FullPath is the path to the App folder Descriptor AppDescriptor } // Load creates an App instance by reading all the files composing an app and grouping them // by file type. -func Load(appPath string) (ArduinoApp, error) { - path := paths.New(appPath) - if path == nil { +func Load(appPath *paths.Path) (ArduinoApp, error) { + if appPath == nil { return ArduinoApp{}, errors.New("empty app path") } - exist, err := path.IsDirCheck() + exist, err := appPath.IsDirCheck() if err != nil { return ArduinoApp{}, fmt.Errorf("app path is not valid: %w", err) } if !exist { - return ArduinoApp{}, fmt.Errorf("no such file or directory: %s", path) + return ArduinoApp{}, fmt.Errorf("app path must be a directory: %s", appPath) } - path, err = path.Abs() + appPath, err = appPath.Abs() if err != nil { return ArduinoApp{}, fmt.Errorf("cannot get absolute path for app: %w", err) } app := ArduinoApp{ - FullPath: path, + FullPath: appPath, Descriptor: AppDescriptor{}, } @@ -71,16 +70,16 @@ func Load(appPath string) (ArduinoApp, error) { return ArduinoApp{}, errors.New("descriptor app.yaml file missing from app") } - if path.Join("python", "main.py").Exist() { - app.MainPythonFile = path.Join("python", "main.py") + if appPath.Join("python", "main.py").Exist() { + app.MainPythonFile = appPath.Join("python", "main.py") } - if path.Join("sketch", "sketch.ino").Exist() { + if appPath.Join("sketch", "sketch.ino").Exist() { // TODO: check sketch casing? - app.MainSketchPath = path.Join("sketch") + app.mainSketchPath = appPath.Join("sketch") } - if app.MainPythonFile == nil && app.MainSketchPath == nil { + if app.MainPythonFile == nil && app.mainSketchPath == nil { return ArduinoApp{}, errors.New("main python file and sketch file missing from app") } @@ -92,6 +91,13 @@ func Load(appPath string) (ArduinoApp, error) { return app, nil } +func (a *ArduinoApp) GetSketchPath() (*paths.Path, bool) { + if a == nil || a.mainSketchPath == nil { + return nil, false + } + return a.mainSketchPath, true +} + // GetDescriptorPath returns the path to the app descriptor file (app.yaml or app.yml) func (a *ArduinoApp) GetDescriptorPath() *paths.Path { descriptorFile := a.FullPath.Join("app.yaml") diff --git a/internal/orchestrator/app/app_test.go b/internal/orchestrator/app/app_test.go index 1256c6487..d8b36eef0 100644 --- a/internal/orchestrator/app/app_test.go +++ b/internal/orchestrator/app/app_test.go @@ -25,22 +25,55 @@ import ( ) func TestLoad(t *testing.T) { - t.Run("empty", func(t *testing.T) { - app, err := Load("") + t.Run("it fails if the app path is nil", func(t *testing.T) { + app, err := Load(nil) assert.Error(t, err) assert.Empty(t, app) + assert.Contains(t, err.Error(), "empty app path") }) - t.Run("AppSimple", func(t *testing.T) { - app, err := Load("testdata/AppSimple") + t.Run("it fails if the app path is empty", func(t *testing.T) { + app, err := Load(paths.New("")) + assert.Error(t, err) + assert.Empty(t, app) + assert.Contains(t, err.Error(), "empty app path") + }) + + t.Run("it fails if the app path exist but it's a file", func(t *testing.T) { + _, err := Load(paths.New("testdata/app.yaml")) + assert.Error(t, err) + assert.Contains(t, err.Error(), "app path must be a directory") + }) + + t.Run("it fails if the app path does not exist", func(t *testing.T) { + _, err := Load(paths.New("testdata/this-folder-does-not-exist")) + assert.Error(t, err) + assert.Contains(t, err.Error(), "app path is not valid") + }) + + t.Run("it loads an app correctly", func(t *testing.T) { + app, err := Load(paths.New("testdata/AppSimple")) assert.NoError(t, err) assert.NotEmpty(t, app) assert.NotNil(t, app.MainPythonFile) assert.Equal(t, f.Must(filepath.Abs("testdata/AppSimple/python/main.py")), app.MainPythonFile.String()) + sketchPath, ok := app.GetSketchPath() + assert.True(t, ok) + assert.NotNil(t, sketchPath) + assert.Equal(t, f.Must(filepath.Abs("testdata/AppSimple/sketch")), sketchPath.String()) + }) + + t.Run("it loads an app with misssing sketch folder", func(t *testing.T) { + app, err := Load(paths.New("testdata/MissingSketch")) + assert.NoError(t, err) + assert.NotEmpty(t, app) + + assert.NotNil(t, app.MainPythonFile) - assert.NotNil(t, app.MainSketchPath) - assert.Equal(t, f.Must(filepath.Abs("testdata/AppSimple/sketch")), app.MainSketchPath.String()) + sketchPath, ok := app.GetSketchPath() + assert.False(t, ok) + assert.Nil(t, sketchPath) }) } @@ -48,7 +81,7 @@ func TestMissingDescriptor(t *testing.T) { appFolderPath := paths.New("testdata", "MissingDescriptor") // Load app - app, err := Load(appFolderPath.String()) + app, err := Load(appFolderPath) assert.Error(t, err) assert.ErrorContains(t, err, "descriptor app.yaml file missing from app") assert.Empty(t, app) @@ -58,7 +91,7 @@ func TestMissingMains(t *testing.T) { appFolderPath := paths.New("testdata", "MissingMains") // Load app - app, err := Load(appFolderPath.String()) + app, err := Load(appFolderPath) assert.Error(t, err) assert.ErrorContains(t, err, "main python file and sketch file missing from app") assert.Empty(t, app) diff --git a/internal/orchestrator/app/generator/app_generator.go b/internal/orchestrator/app/generator/app_generator.go index 3dab7e533..e77a48f77 100644 --- a/internal/orchestrator/app/generator/app_generator.go +++ b/internal/orchestrator/app/generator/app_generator.go @@ -33,85 +33,124 @@ import ( const templateRoot = "app_template" -type Opts int - -const ( - None Opts = 0 - SkipSketch Opts = 1 << iota - SkipPython -) - -//go:embed app_template +//go:embed all:app_template var fsApp embed.FS -func GenerateApp(basePath *paths.Path, app app.AppDescriptor, options Opts) error { +func GenerateApp(basePath *paths.Path, app app.AppDescriptor, skipSketch bool) error { if err := basePath.MkdirAll(); err != nil { return fmt.Errorf("failed to create app directory: %w", err) } - isSkipSketchSet := options&SkipSketch != 0 - isSkipPythonSet := options&SkipPython != 0 - if !isSkipSketchSet { + if !skipSketch { if err := generateSketch(basePath); err != nil { return fmt.Errorf("failed to create sketch: %w", err) } } - if !isSkipPythonSet { - if err := generatePython(basePath); err != nil { - return fmt.Errorf("failed to create python: %w", err) - } - } - if err := generateReadme(basePath, app); err != nil { - slog.Warn("error generating readme for app %q: %w", app.Name, err) + + if err := generatePython(basePath); err != nil { + return fmt.Errorf("failed to create python: %w", err) } - if err := generateAppYaml(basePath, app); err != nil { - return fmt.Errorf("failed to create app content: %w", err) + if err := generateApp(basePath, app); err != nil { + return fmt.Errorf("failed to create app.yaml: %w", err) } return nil } -func generateAppYaml(basePath *paths.Path, app app.AppDescriptor) error { - appYamlTmpl := template.Must( - template.New("app.yaml"). - Funcs(template.FuncMap{"joinInts": formatPorts}). - ParseFS(fsApp, path.Join(templateRoot, "app.yaml.template")), - ) +func generateApp(basePath *paths.Path, appDesc app.AppDescriptor) error { + generateAppYaml := func(basePath *paths.Path, app app.AppDescriptor) error { + appYamlTmpl := template.Must( + template.New("app.yaml"). + Funcs(template.FuncMap{"joinInts": formatPorts}). + ParseFS(fsApp, path.Join(templateRoot, "app.yaml.template")), + ) - outputPath := basePath.Join("app.yaml") - file, err := os.Create(outputPath.String()) - if err != nil { - return fmt.Errorf("failed to create file %s: %w", outputPath.String(), err) - } - defer file.Close() + outputPath := basePath.Join("app.yaml") + file, err := os.Create(outputPath.String()) + if err != nil { + return fmt.Errorf("failed to create file %s: %w", outputPath.String(), err) + } + defer file.Close() + + return appYamlTmpl.ExecuteTemplate(file, "app.yaml.template", app) + } + + generateReadme := func(basePath *paths.Path, app app.AppDescriptor) error { + readmeTmpl := template.Must(template.ParseFS(fsApp, path.Join(templateRoot, "README.md.template"))) + data := struct { + Title string + Icon string + Description string + Ports string + }{ + Title: app.Name, + Icon: app.Icon, + Description: app.Description, + } - return appYamlTmpl.ExecuteTemplate(file, "app.yaml.template", app) -} + if len(app.Ports) > 0 { + data.Ports = "Available application ports: " + formatPorts(app.Ports) + } + + outputPath := basePath.Join("README.md") + file, err := os.Create(outputPath.String()) + if err != nil { + return fmt.Errorf("failed to create file %s: %w", outputPath.String(), err) + } + defer file.Close() + + return readmeTmpl.Execute(file, data) + } -func generateReadme(basePath *paths.Path, app app.AppDescriptor) error { - readmeTmpl := template.Must(template.ParseFS(fsApp, path.Join(templateRoot, "README.md.template"))) - data := struct { - Title string - Icon string - Description string - Ports string - }{ - Title: app.Name, - Icon: app.Icon, - Description: app.Description, + copyRootFiles := func() error { + fileList, err := fsApp.ReadDir(templateRoot) + if err != nil { + return fmt.Errorf("read template directory: %w", err) + } + for _, filePath := range fileList { + if filePath.IsDir() { + continue + } + if path.Ext(filePath.Name()) == ".template" { + continue + } + + srcPath := path.Join(templateRoot, filePath.Name()) + destPath := basePath.Join(filePath.Name()) + + if err := func() error { + srcFile, err := fsApp.Open(srcPath) + if err != nil { + return err + } + defer srcFile.Close() + + destFile, err := destPath.Create() + if err != nil { + return fmt.Errorf("create %q file: %w", destPath, err) + } + defer destFile.Close() + + _, err = io.Copy(destFile, srcFile) + return err + }(); err != nil { + return fmt.Errorf("copy file %s: %w", filePath.Name(), err) + } + } + return nil } - if len(app.Ports) > 0 { - data.Ports = "Available application ports: " + formatPorts(app.Ports) + if err := copyRootFiles(); err != nil { + slog.Warn("error copying root files for app %q: %w", appDesc.Name, err) + } + if err := generateReadme(basePath, appDesc); err != nil { + slog.Warn("error generating readme for app %q: %w", appDesc.Name, err) } - outputPath := basePath.Join("README.md") - file, err := os.Create(outputPath.String()) - if err != nil { - return fmt.Errorf("failed to create file %s: %w", outputPath.String(), err) + if err := generateAppYaml(basePath, appDesc); err != nil { + return fmt.Errorf("generate app.yaml: %w", err) } - defer file.Close() - return readmeTmpl.Execute(file, data) + return nil } func generatePython(basePath *paths.Path) error { diff --git a/internal/orchestrator/app/generator/app_generator_test.go b/internal/orchestrator/app/generator/app_generator_test.go index 5763d386a..729ce9506 100644 --- a/internal/orchestrator/app/generator/app_generator_test.go +++ b/internal/orchestrator/app/generator/app_generator_test.go @@ -40,31 +40,25 @@ func TestGenerateApp(t *testing.T) { testCases := []struct { name string - options Opts + skipSketch bool goldenPath string }{ { name: "generate complete app", - options: None, goldenPath: "testdata/app-all.golden", }, { name: "skip sketch", - options: SkipSketch, + skipSketch: true, goldenPath: "testdata/app-no-sketch.golden", }, - { - name: "skip python", - options: SkipPython, - goldenPath: "testdata/app-no-python.golden", - }, } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { tempDir := t.TempDir() - err := GenerateApp(paths.New(tempDir), baseApp, tc.options) + err := GenerateApp(paths.New(tempDir), baseApp, tc.skipSketch) require.NoError(t, err) if os.Getenv("UPDATE_GOLDEN") == "true" { diff --git a/internal/orchestrator/app/generator/app_template/.gitignore b/internal/orchestrator/app/generator/app_template/.gitignore new file mode 100644 index 000000000..90ae0403d --- /dev/null +++ b/internal/orchestrator/app/generator/app_template/.gitignore @@ -0,0 +1,2 @@ +# ignore app cache folder +.cache/ diff --git a/internal/orchestrator/app/generator/app_template/python/main.py b/internal/orchestrator/app/generator/app_template/python/main.py index 9ef98b137..fb56fb23a 100644 --- a/internal/orchestrator/app/generator/app_template/python/main.py +++ b/internal/orchestrator/app/generator/app_template/python/main.py @@ -1,6 +1,15 @@ -def main(): - print("Hello World!") +import time +from arduino.app_utils import App -if __name__ == "__main__": - main() +print("Hello world!") + + +def loop(): + """This function is called repeatedly by the App framework.""" + # You can replace this with any code you want your App to run repeatedly. + time.sleep(10) + + +# See: https://docs.arduino.cc/software/app-lab/tutorials/getting-started/#app-run +App.run(user_loop=loop) diff --git a/internal/orchestrator/app/generator/app_template/sketch/sketch.ino b/internal/orchestrator/app/generator/app_template/sketch/sketch.ino index 612c51b8a..95c2b6eb0 100644 --- a/internal/orchestrator/app/generator/app_template/sketch/sketch.ino +++ b/internal/orchestrator/app/generator/app_template/sketch/sketch.ino @@ -1,3 +1,9 @@ -void setup() {} +void setup() { + // put your setup code here, to run once: -void loop() {} \ No newline at end of file +} + +void loop() { + // put your main code here, to run repeatedly: + +} diff --git a/internal/orchestrator/app/generator/app_template/sketch/sketch.yaml b/internal/orchestrator/app/generator/app_template/sketch/sketch.yaml index d9fe917ef..079fe1ae1 100644 --- a/internal/orchestrator/app/generator/app_template/sketch/sketch.yaml +++ b/internal/orchestrator/app/generator/app_template/sketch/sketch.yaml @@ -1,6 +1,5 @@ profiles: default: - fqbn: arduino:zephyr:unoq platforms: - platform: arduino:zephyr libraries: diff --git a/internal/orchestrator/app/generator/testdata/app-all.golden/.gitignore b/internal/orchestrator/app/generator/testdata/app-all.golden/.gitignore new file mode 100644 index 000000000..90ae0403d --- /dev/null +++ b/internal/orchestrator/app/generator/testdata/app-all.golden/.gitignore @@ -0,0 +1,2 @@ +# ignore app cache folder +.cache/ diff --git a/internal/orchestrator/app/generator/testdata/app-all.golden/python/main.py b/internal/orchestrator/app/generator/testdata/app-all.golden/python/main.py index 9ef98b137..fb56fb23a 100644 --- a/internal/orchestrator/app/generator/testdata/app-all.golden/python/main.py +++ b/internal/orchestrator/app/generator/testdata/app-all.golden/python/main.py @@ -1,6 +1,15 @@ -def main(): - print("Hello World!") +import time +from arduino.app_utils import App -if __name__ == "__main__": - main() +print("Hello world!") + + +def loop(): + """This function is called repeatedly by the App framework.""" + # You can replace this with any code you want your App to run repeatedly. + time.sleep(10) + + +# See: https://docs.arduino.cc/software/app-lab/tutorials/getting-started/#app-run +App.run(user_loop=loop) diff --git a/internal/orchestrator/app/generator/testdata/app-all.golden/sketch/sketch.ino b/internal/orchestrator/app/generator/testdata/app-all.golden/sketch/sketch.ino index 612c51b8a..95c2b6eb0 100644 --- a/internal/orchestrator/app/generator/testdata/app-all.golden/sketch/sketch.ino +++ b/internal/orchestrator/app/generator/testdata/app-all.golden/sketch/sketch.ino @@ -1,3 +1,9 @@ -void setup() {} +void setup() { + // put your setup code here, to run once: -void loop() {} \ No newline at end of file +} + +void loop() { + // put your main code here, to run repeatedly: + +} diff --git a/internal/orchestrator/app/generator/testdata/app-all.golden/sketch/sketch.yaml b/internal/orchestrator/app/generator/testdata/app-all.golden/sketch/sketch.yaml index d9fe917ef..079fe1ae1 100644 --- a/internal/orchestrator/app/generator/testdata/app-all.golden/sketch/sketch.yaml +++ b/internal/orchestrator/app/generator/testdata/app-all.golden/sketch/sketch.yaml @@ -1,6 +1,5 @@ profiles: default: - fqbn: arduino:zephyr:unoq platforms: - platform: arduino:zephyr libraries: diff --git a/internal/orchestrator/app/generator/testdata/app-no-python.golden/README.md b/internal/orchestrator/app/generator/testdata/app-no-python.golden/README.md deleted file mode 100644 index d1bf5cced..000000000 --- a/internal/orchestrator/app/generator/testdata/app-no-python.golden/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 🚀 test app all - -### Description - -test description. - -Available application ports: 8080, 9000, 90 diff --git a/internal/orchestrator/app/generator/testdata/app-no-python.golden/app.yaml b/internal/orchestrator/app/generator/testdata/app-no-python.golden/app.yaml deleted file mode 100644 index 7d1f98685..000000000 --- a/internal/orchestrator/app/generator/testdata/app-no-python.golden/app.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# app.yaml: The main configuration file for your Arduino App. -# This file describes the application's metadata and properties. - -# The user-visible name of the application. -name: test app all - -# A brief description of what the application does. -description: "test description." - -# The icon for the application, can be an emoji or a short string. -icon: 🚀 - -# A list of network ports that the application exposes. -# Example: [80, 443] -ports: [8080, 9000, 90] - -# A list of bricks used by this application. -bricks: [] diff --git a/internal/orchestrator/app/generator/testdata/app-no-python.golden/sketch/sketch.ino b/internal/orchestrator/app/generator/testdata/app-no-python.golden/sketch/sketch.ino deleted file mode 100644 index 612c51b8a..000000000 --- a/internal/orchestrator/app/generator/testdata/app-no-python.golden/sketch/sketch.ino +++ /dev/null @@ -1,3 +0,0 @@ -void setup() {} - -void loop() {} \ No newline at end of file diff --git a/internal/orchestrator/app/generator/testdata/app-no-python.golden/sketch/sketch.yaml b/internal/orchestrator/app/generator/testdata/app-no-python.golden/sketch/sketch.yaml deleted file mode 100644 index d9fe917ef..000000000 --- a/internal/orchestrator/app/generator/testdata/app-no-python.golden/sketch/sketch.yaml +++ /dev/null @@ -1,11 +0,0 @@ -profiles: - default: - fqbn: arduino:zephyr:unoq - platforms: - - platform: arduino:zephyr - libraries: - - MsgPack (0.4.2) - - DebugLog (0.8.4) - - ArxContainer (0.7.0) - - ArxTypeTraits (0.3.1) -default_profile: default diff --git a/internal/orchestrator/app/generator/testdata/app-no-sketch.golden/.gitignore b/internal/orchestrator/app/generator/testdata/app-no-sketch.golden/.gitignore new file mode 100644 index 000000000..90ae0403d --- /dev/null +++ b/internal/orchestrator/app/generator/testdata/app-no-sketch.golden/.gitignore @@ -0,0 +1,2 @@ +# ignore app cache folder +.cache/ diff --git a/internal/orchestrator/app/generator/testdata/app-no-sketch.golden/python/main.py b/internal/orchestrator/app/generator/testdata/app-no-sketch.golden/python/main.py index 9ef98b137..fb56fb23a 100644 --- a/internal/orchestrator/app/generator/testdata/app-no-sketch.golden/python/main.py +++ b/internal/orchestrator/app/generator/testdata/app-no-sketch.golden/python/main.py @@ -1,6 +1,15 @@ -def main(): - print("Hello World!") +import time +from arduino.app_utils import App -if __name__ == "__main__": - main() +print("Hello world!") + + +def loop(): + """This function is called repeatedly by the App framework.""" + # You can replace this with any code you want your App to run repeatedly. + time.sleep(10) + + +# See: https://docs.arduino.cc/software/app-lab/tutorials/getting-started/#app-run +App.run(user_loop=loop) diff --git a/internal/orchestrator/app/parser_test.go b/internal/orchestrator/app/parser_test.go index 123d38f41..fe8c8f59c 100644 --- a/internal/orchestrator/app/parser_test.go +++ b/internal/orchestrator/app/parser_test.go @@ -115,7 +115,7 @@ bricks: err = os.WriteFile(appYaml.String(), []byte(appDescriptor), 0600) require.NoError(t, err) - app, err := Load(tempDir) + app, err := Load(paths.New(tempDir)) require.NoError(t, err) require.Equal(t, "Test App", app.Name) require.Equal(t, 1, len(app.Descriptor.Bricks)) diff --git a/internal/orchestrator/app/testdata/MissingSketch/app.yaml b/internal/orchestrator/app/testdata/MissingSketch/app.yaml new file mode 100644 index 000000000..adabfa899 --- /dev/null +++ b/internal/orchestrator/app/testdata/MissingSketch/app.yaml @@ -0,0 +1,2 @@ +name: "An app with only python" +description: "An app with only python" diff --git a/internal/orchestrator/app/testdata/MissingSketch/python/main.py b/internal/orchestrator/app/testdata/MissingSketch/python/main.py new file mode 100644 index 000000000..f353b1456 --- /dev/null +++ b/internal/orchestrator/app/testdata/MissingSketch/python/main.py @@ -0,0 +1,2 @@ + +print("Hello world!") \ No newline at end of file diff --git a/internal/orchestrator/app/validator.go b/internal/orchestrator/app/validator.go new file mode 100644 index 000000000..fde50548f --- /dev/null +++ b/internal/orchestrator/app/validator.go @@ -0,0 +1,45 @@ +package app + +import ( + "errors" + "fmt" + "log/slog" + + "github.com/arduino/arduino-app-cli/internal/orchestrator/bricksindex" +) + +// ValidateBricks checks that all bricks referenced in the given AppDescriptor exist in the provided BricksIndex, +// It collects and returns all validation errors as a single joined error, allowing the caller to see all issues at once rather than stopping at the first error. +func ValidateBricks(a AppDescriptor, index *bricksindex.BricksIndex) error { + if index == nil { + return fmt.Errorf("bricks index cannot be nil") + } + + var allErrors error + + for _, appBrick := range a.Bricks { + indexBrick, found := index.FindBrickByID(appBrick.ID) + if !found { + allErrors = errors.Join(allErrors, fmt.Errorf("brick %q not found", appBrick.ID)) + continue // Skip further validation for this brick since it doesn't exist + } + + for appBrickVariableName := range appBrick.Variables { + _, exist := indexBrick.GetVariable(appBrickVariableName) + if !exist { + // TODO: we should return warnings + slog.Warn("[skip] variable does not exist into the brick definition", "variable", appBrickVariableName, "brick", indexBrick.ID) + } + } + + // Check that all required brick variables are provided by app + for _, indexBrickVariable := range indexBrick.Variables { + if indexBrickVariable.IsRequired() { + if _, exist := appBrick.Variables[indexBrickVariable.Name]; !exist { + allErrors = errors.Join(allErrors, fmt.Errorf("variable %q is required by brick %q", indexBrickVariable.Name, indexBrick.ID)) + } + } + } + } + return allErrors +} diff --git a/internal/orchestrator/app/validator_test.go b/internal/orchestrator/app/validator_test.go new file mode 100644 index 000000000..13e3e9d31 --- /dev/null +++ b/internal/orchestrator/app/validator_test.go @@ -0,0 +1,163 @@ +package app + +import ( + "errors" + "os" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/arduino/go-paths-helper" + + "github.com/arduino/arduino-app-cli/internal/orchestrator/bricksindex" +) + +func TestValidateAppDescriptorBricks(t *testing.T) { + bricksIndex := &bricksindex.BricksIndex{ + Bricks: []bricksindex.Brick{ + { + ID: "arduino:arduino_cloud", + Name: "Arduino Cloud", + Description: "Connects to Arduino Cloud", + Variables: []bricksindex.BrickVariable{ + { + Name: "ARDUINO_DEVICE_ID", + Description: "Arduino Cloud Device ID", + DefaultValue: "", // Required (no default value) + }, + { + Name: "ARDUINO_SECRET", + Description: "Arduino Cloud Secret", + DefaultValue: "", // Required (no default value) + }, + }, + }, + }, + } + + testCases := []struct { + name string + yamlContent string + expectedError error + }{ + { + name: "valid with all required filled", + yamlContent: ` +name: App ok +description: App ok +bricks: + - arduino:arduino_cloud: + variables: + ARDUINO_DEVICE_ID: "my-device-id" + ARDUINO_SECRET: "my-secret" +`, + expectedError: nil, + }, + { + name: "valid with missing bricks", + yamlContent: ` +name: App with no bricks +description: App with no bricks description +`, + expectedError: nil, + }, + { + name: "valid with empty list of bricks", + yamlContent: ` +name: App with empty bricks +description: App with empty bricks + +bricks: [] +`, + expectedError: nil, + }, + { + name: "valid if required variable is empty string", + yamlContent: ` +name: App with an empty variable +description: App with an empty variable +bricks: + - arduino:arduino_cloud: + variables: + ARDUINO_DEVICE_ID: "my-device-id" + ARDUINO_SECRET: +`, + expectedError: nil, + }, + { + name: "invalid if required variable is omitted", + yamlContent: ` +name: App with no required variables +description: App with no required variables +bricks: + - arduino:arduino_cloud +`, + expectedError: errors.Join( + errors.New("variable \"ARDUINO_DEVICE_ID\" is required by brick \"arduino:arduino_cloud\""), + errors.New("variable \"ARDUINO_SECRET\" is required by brick \"arduino:arduino_cloud\""), + ), + }, + { + name: "invalid if a required variable among two is omitted", + yamlContent: ` +name: App only one required variable filled +description: App only one required variable filled +bricks: + - arduino:arduino_cloud: + variables: + ARDUINO_DEVICE_ID: "my-device-id" +`, + expectedError: errors.New("variable \"ARDUINO_SECRET\" is required by brick \"arduino:arduino_cloud\""), + }, + { + name: "invalid if brick id not found", + yamlContent: ` +name: App no existing brick +description: App no existing brick +bricks: + - arduino:not_existing_brick: + variables: + ARDUINO_DEVICE_ID: "my-device-id" + ARDUINO_SECRET: "LAKDJ" +`, + expectedError: errors.New("brick \"arduino:not_existing_brick\" not found"), + }, + { + name: "log a warning if variable does not exist in the brick", + yamlContent: ` +name: App with non existing variable +description: App with non existing variable +bricks: + - arduino:arduino_cloud: + variables: + NOT_EXISTING_VARIABLE: "this-is-a-not-existing-variable-for-the-brick" + ARDUINO_DEVICE_ID: "my-device-id" + ARDUINO_SECRET: "my-secret" +`, + expectedError: nil, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + tempDir := t.TempDir() + err := paths.New(tempDir).MkdirAll() + require.NoError(t, err) + appYaml := paths.New(tempDir, "app.yaml") + err = os.WriteFile(appYaml.String(), []byte(tc.yamlContent), 0600) + require.NoError(t, err) + + appDescriptor, err := ParseDescriptorFile(appYaml) + require.NoError(t, err) + + err = ValidateBricks(appDescriptor, bricksIndex) + if tc.expectedError == nil { + assert.NoError(t, err, "Expected no validation errors") + } else { + require.Error(t, err, "Expected validation error") + assert.Equal(t, tc.expectedError.Error(), err.Error(), "Error message should match") + } + }) + } +} diff --git a/internal/orchestrator/app_status.go b/internal/orchestrator/app_status.go index 481e240f1..7e9c32fc7 100644 --- a/internal/orchestrator/app_status.go +++ b/internal/orchestrator/app_status.go @@ -97,7 +97,7 @@ func parseDockerStatusEvent(ctx context.Context, cfg config.Configuration, docke } // FIXME: create an helper function to transform an app.ArduinoApp into an ortchestrator.AppInfo - app, err := app.Load(appStatus.AppPath.String()) + app, err := app.Load(appStatus.AppPath) if err != nil { slog.Warn("error loading app", "appPath", appStatus.AppPath.String(), "error", err) return AppInfo{}, err diff --git a/internal/orchestrator/bricks/bricks.go b/internal/orchestrator/bricks/bricks.go index 4e08b2c27..3248d129c 100644 --- a/internal/orchestrator/bricks/bricks.go +++ b/internal/orchestrator/bricks/bricks.go @@ -18,7 +18,7 @@ package bricks import ( "errors" "fmt" - "maps" + "log/slog" "slices" "github.com/arduino/go-paths-helper" @@ -26,6 +26,7 @@ import ( "github.com/arduino/arduino-app-cli/internal/orchestrator/app" "github.com/arduino/arduino-app-cli/internal/orchestrator/bricksindex" + "github.com/arduino/arduino-app-cli/internal/orchestrator/config" "github.com/arduino/arduino-app-cli/internal/orchestrator/modelsindex" "github.com/arduino/arduino-app-cli/internal/store" ) @@ -57,36 +58,40 @@ func (s *Service) List() (BrickListResult, error) { res := BrickListResult{Bricks: make([]BrickListItem, len(s.bricksIndex.Bricks))} for i, brick := range s.bricksIndex.Bricks { res.Bricks[i] = BrickListItem{ - ID: brick.ID, - Name: brick.Name, - Author: "Arduino", // TODO: for now we only support our bricks - Description: brick.Description, - Category: brick.Category, - Status: "installed", - Models: f.Map(s.modelsIndex.GetModelsByBrick(brick.ID), func(m modelsindex.AIModel) string { - return m.ID - }), + ID: brick.ID, + Name: brick.Name, + Author: "Arduino", // TODO: for now we only support our bricks + Description: brick.Description, + Category: brick.Category, + Status: "installed", + RequireModel: brick.RequireModel, } } return res, nil } func (s *Service) AppBrickInstancesList(a *app.ArduinoApp) (AppBrickInstancesResult, error) { - res := AppBrickInstancesResult{BrickInstances: make([]BrickInstance, len(a.Descriptor.Bricks))} + res := AppBrickInstancesResult{BrickInstances: make([]BrickInstanceListItem, len(a.Descriptor.Bricks))} for i, brickInstance := range a.Descriptor.Bricks { brick, found := s.bricksIndex.FindBrickByID(brickInstance.ID) if !found { return AppBrickInstancesResult{}, fmt.Errorf("brick not found with id %s", brickInstance.ID) } - res.BrickInstances[i] = BrickInstance{ - ID: brick.ID, - Name: brick.Name, - Author: "Arduino", // TODO: for now we only support our bricks - Category: brick.Category, - Status: "installed", - ModelID: brickInstance.Model, // TODO: in case is not set by the user, should we return the default model? - Variables: brickInstance.Variables, // TODO: do we want to show also the default value of not explicitly set variables? + + variablesMap, configVariables := getInstanceBrickConfigVariableDetails(brick, brickInstance.Variables) + + res.BrickInstances[i] = BrickInstanceListItem{ + ID: brick.ID, + Name: brick.Name, + Author: "Arduino", // TODO: for now we only support our bricks + Category: brick.Category, + Status: "installed", + RequireModel: brick.RequireModel, + ModelID: brickInstance.Model, // TODO: in case is not set by the user, should we return the default model? + Variables: variablesMap, // TODO: do we want to show also the default value of not explicitly set variables? + ConfigVariables: configVariables, } + } return res, nil } @@ -102,12 +107,7 @@ func (s *Service) AppBrickInstanceDetails(a *app.ArduinoApp, brickID string) (Br return BrickInstance{}, fmt.Errorf("brick %s not added in the app", brickID) } - variables := make(map[string]string, len(brick.Variables)) - for _, v := range brick.Variables { - variables[v.Name] = v.DefaultValue - } - // Add/Update the variables with the ones from the app descriptor - maps.Copy(variables, a.Descriptor.Bricks[brickIndex].Variables) + variables, configVariables := getInstanceBrickConfigVariableDetails(brick, a.Descriptor.Bricks[brickIndex].Variables) modelID := a.Descriptor.Bricks[brickIndex].Model if modelID == "" { @@ -115,29 +115,59 @@ func (s *Service) AppBrickInstanceDetails(a *app.ArduinoApp, brickID string) (Br } return BrickInstance{ - ID: brickID, - Name: brick.Name, - Author: "Arduino", // TODO: for now we only support our bricks - Category: brick.Category, - Status: "installed", // For now every Arduino brick are installed - Variables: variables, - ModelID: modelID, + ID: brickID, + Name: brick.Name, + Author: "Arduino", // TODO: for now we only support our bricks + Category: brick.Category, + Status: "installed", // For now every Arduino brick are installed + RequireModel: brick.RequireModel, + Variables: variables, + ConfigVariables: configVariables, + ModelID: modelID, + CompatibleModels: f.Map(s.modelsIndex.GetModelsByBrick(brick.ID), func(m modelsindex.AIModel) AIModel { + return AIModel{ + ID: m.ID, + Name: m.Name, + Description: m.ModuleDescription, + } + }), }, nil } -func (s *Service) BricksDetails(id string) (BrickDetailsResult, error) { - brick, found := s.bricksIndex.FindBrickByID(id) - if !found { - return BrickDetailsResult{}, ErrBrickNotFound - } +func getInstanceBrickConfigVariableDetails( + brick *bricksindex.Brick, userVariables map[string]string, +) (map[string]string, []BrickConfigVariable) { + variablesMap := make(map[string]string, len(brick.Variables)) + variableDetails := make([]BrickConfigVariable, 0, len(brick.Variables)) - variables := make(map[string]BrickVariable, len(brick.Variables)) for _, v := range brick.Variables { - variables[v.Name] = BrickVariable{ - DefaultValue: v.DefaultValue, - Description: v.Description, - Required: v.IsRequired(), + if v.Hidden { + continue + } + finalValue := v.DefaultValue + + userValue, ok := userVariables[v.Name] + if ok { + finalValue = userValue } + variablesMap[v.Name] = finalValue + + variableDetails = append(variableDetails, BrickConfigVariable{ + Name: v.Name, + Value: finalValue, + Description: v.Description, + Required: v.IsRequired(), + }) + } + + return variablesMap, variableDetails +} + +func (s *Service) BricksDetails(id string, idProvider *app.IDProvider, + cfg config.Configuration) (BrickDetailsResult, error) { + brick, found := s.bricksIndex.FindBrickByID(id) + if !found { + return BrickDetailsResult{}, ErrBrickNotFound } readme, err := s.staticStore.GetBrickReadmeFromID(brick.ID) @@ -160,20 +190,116 @@ func (s *Service) BricksDetails(id string) (BrickDetailsResult, error) { } }) + usedByApps, err := getUsedByApps(cfg, brick.ID, idProvider) + if err != nil { + return BrickDetailsResult{}, fmt.Errorf("unable to get used by apps: %w", err) + } + + variables, configVariables := getBrickConfigVariableDetails(brick) + return BrickDetailsResult{ ID: id, Name: brick.Name, Author: "Arduino", // TODO: for now we only support our bricks Description: brick.Description, Category: brick.Category, + RequireModel: brick.RequireModel, Status: "installed", // For now every Arduino brick are installed Variables: variables, Readme: readme, ApiDocsPath: apiDocsPath, CodeExamples: codeExamples, + UsedByApps: usedByApps, + CompatibleModels: f.Map(s.modelsIndex.GetModelsByBrick(brick.ID), func(m modelsindex.AIModel) AIModel { + return AIModel{ + ID: m.ID, + Name: m.Name, + Description: m.ModuleDescription, + } + }), + ConfigVariables: configVariables, }, nil } +func getBrickConfigVariableDetails( + brick *bricksindex.Brick) (map[string]BrickVariable, []BrickConfigVariable) { + variablesMap := make(map[string]BrickVariable, len(brick.Variables)) + variableDetails := make([]BrickConfigVariable, 0, len(brick.Variables)) + + for _, v := range brick.Variables { + if v.Hidden { + continue + } + variablesMap[v.Name] = BrickVariable{ + DefaultValue: v.DefaultValue, + Description: v.Description, + Required: v.IsRequired(), + } + + variableDetails = append(variableDetails, BrickConfigVariable{ + Name: v.Name, + Value: v.DefaultValue, + Description: v.Description, + Required: v.IsRequired(), + }) + } + + return variablesMap, variableDetails +} + +func getUsedByApps( + cfg config.Configuration, brickId string, idProvider *app.IDProvider) ([]AppReference, error) { + var ( + pathsToExplore paths.PathList + appPaths paths.PathList + ) + pathsToExplore.Add(cfg.ExamplesDir()) + pathsToExplore.Add(cfg.AppsDir()) + usedByApps := []AppReference{} + + for _, p := range pathsToExplore { + res, err := p.ReadDirRecursiveFiltered(func(file *paths.Path) bool { + if file.Base() == ".cache" { + return false + } + if file.Join("app.yaml").NotExist() && file.Join("app.yml").NotExist() { + return true + } + return false + }, paths.FilterDirectories(), paths.FilterOutNames("python", "sketch", ".cache")) + if err != nil { + slog.Error("unable to list apps", slog.String("error", err.Error())) + return usedByApps, err + } + appPaths.AddAllMissing(res) + } + + for _, file := range appPaths { + app, err := app.Load(file) + if err != nil { + // we are not considering the broken apps + slog.Warn("unable to parse app.yaml, skipping", "path", file.String(), "error", err.Error()) + continue + } + + for _, b := range app.Descriptor.Bricks { + if b.ID == brickId { + id, err := idProvider.IDFromPath(app.FullPath) + if err != nil { + return usedByApps, fmt.Errorf("failed to get app ID for %s: %w", app.FullPath, err) + } + usedByApps = append(usedByApps, AppReference{ + Name: app.Name, + ID: id.String(), + Icon: app.Descriptor.Icon, + }) + break + } + } + } + return usedByApps, nil +} + type BrickCreateUpdateRequest struct { ID string `json:"-"` Model *string `json:"model"` @@ -186,25 +312,24 @@ func (s *Service) BrickCreate( ) error { brick, present := s.bricksIndex.FindBrickByID(req.ID) if !present { - return fmt.Errorf("brick not found with id %s", req.ID) + return fmt.Errorf("brick %q not found", req.ID) } for name, reqValue := range req.Variables { value, exist := brick.GetVariable(name) if !exist { - return errors.New("variable does not exist") + return fmt.Errorf("variable %q does not exist on brick %q", name, brick.ID) } - if value.DefaultValue == "" && reqValue == "" { - return errors.New("variable default value cannot be empty") + if value.IsRequired() && reqValue == "" { + return fmt.Errorf("required variable %q cannot be empty", name) } } for _, brickVar := range brick.Variables { - if brickVar.DefaultValue == "" { + if brickVar.IsRequired() { if _, exist := req.Variables[brickVar.Name]; !exist { - return errors.New("variable does not exist") + slog.Warn("[Skip] a required variable is not set by user", "variable", brickVar.Name, "brick", brickVar.Name) } - return errors.New("variable default value cannot be empty") } } @@ -227,25 +352,20 @@ func (s *Service) BrickCreate( if idx == -1 { return fmt.Errorf("model %s does not exsist", *req.Model) } - brickInstance.Model = models[idx].ID } brickInstance.Variables = req.Variables if brickIndex == -1 { - appCurrent.Descriptor.Bricks = append(appCurrent.Descriptor.Bricks, brickInstance) - } else { appCurrent.Descriptor.Bricks[brickIndex] = brickInstance - } err := appCurrent.Save() if err != nil { return fmt.Errorf("cannot save brick instance with id %s", req.ID) } - return nil } @@ -253,16 +373,21 @@ func (s *Service) BrickUpdate( req BrickCreateUpdateRequest, appCurrent app.ArduinoApp, ) error { - index := slices.IndexFunc(appCurrent.Descriptor.Bricks, func(b app.Brick) bool { return b.ID == req.ID }) - if index == -1 { - return fmt.Errorf("brick not found with id %s", req.ID) + brickFromIndex, present := s.bricksIndex.FindBrickByID(req.ID) + if !present { + return fmt.Errorf("brick %q not found into the brick index", req.ID) } - brickID := appCurrent.Descriptor.Bricks[index].ID - brickVariables := appCurrent.Descriptor.Bricks[index].Variables + + brickPosition := slices.IndexFunc(appCurrent.Descriptor.Bricks, func(b app.Brick) bool { return b.ID == req.ID }) + if brickPosition == -1 { + return fmt.Errorf("brick %q not found into the bricks of the app", req.ID) + } + + brickVariables := appCurrent.Descriptor.Bricks[brickPosition].Variables if len(brickVariables) == 0 { brickVariables = make(map[string]string) } - brickModel := appCurrent.Descriptor.Bricks[index].Model + brickModel := appCurrent.Descriptor.Bricks[brickPosition].Model if req.Model != nil && *req.Model != brickModel { models := s.modelsIndex.GetModelsByBrick(req.ID) @@ -272,17 +397,14 @@ func (s *Service) BrickUpdate( } brickModel = *req.Model } - brick, present := s.bricksIndex.FindBrickByID(brickID) - if !present { - return fmt.Errorf("brick not found with id %s", brickID) - } + for name, updateValue := range req.Variables { - value, exist := brick.GetVariable(name) + value, exist := brickFromIndex.GetVariable(name) if !exist { - return errors.New("variable does not exist") + return fmt.Errorf("variable %q does not exist on brick %q", name, brickFromIndex.ID) } - if value.DefaultValue == "" && updateValue == "" { - return errors.New("variable default value cannot be empty") + if value.IsRequired() && updateValue == "" { + return fmt.Errorf("required variable %q cannot be empty", name) } updated := false for _, v := range brickVariables { @@ -292,14 +414,13 @@ func (s *Service) BrickUpdate( break } } - if !updated { brickVariables[name] = updateValue } } - appCurrent.Descriptor.Bricks[index].Model = brickModel - appCurrent.Descriptor.Bricks[index].Variables = brickVariables + appCurrent.Descriptor.Bricks[brickPosition].Model = brickModel + appCurrent.Descriptor.Bricks[brickPosition].Variables = brickVariables err := appCurrent.Save() if err != nil { diff --git a/internal/orchestrator/bricks/bricks_test.go b/internal/orchestrator/bricks/bricks_test.go new file mode 100644 index 000000000..332f5cb1d --- /dev/null +++ b/internal/orchestrator/bricks/bricks_test.go @@ -0,0 +1,903 @@ +// This file is part of arduino-app-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-app-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package bricks + +import ( + "os" + "path/filepath" + "testing" + + "github.com/arduino/go-paths-helper" + "github.com/stretchr/testify/require" + "go.bug.st/f" + + "github.com/arduino/arduino-app-cli/internal/orchestrator/app" + "github.com/arduino/arduino-app-cli/internal/orchestrator/bricksindex" + "github.com/arduino/arduino-app-cli/internal/orchestrator/config" + "github.com/arduino/arduino-app-cli/internal/orchestrator/modelsindex" + "github.com/arduino/arduino-app-cli/internal/store" +) + +func TestBrickCreate(t *testing.T) { + bricksIndex, err := bricksindex.Load(paths.New("testdata")) + require.Nil(t, err) + brickService := NewService(nil, bricksIndex, nil) + + t.Run("fails if brick id does not exist", func(t *testing.T) { + err = brickService.BrickCreate(BrickCreateUpdateRequest{ID: "not-existing-id"}, f.Must(app.Load(paths.New("testdata/dummy-app")))) + require.Error(t, err) + require.Equal(t, "brick \"not-existing-id\" not found", err.Error()) + }) + + t.Run("fails if the requestes variable is not present in the brick definition", func(t *testing.T) { + req := BrickCreateUpdateRequest{ID: "arduino:arduino_cloud", Variables: map[string]string{ + "NON_EXISTING_VARIABLE": "some-value", + }} + err = brickService.BrickCreate(req, f.Must(app.Load(paths.New("testdata/dummy-app")))) + require.Error(t, err) + require.Equal(t, "variable \"NON_EXISTING_VARIABLE\" does not exist on brick \"arduino:arduino_cloud\"", err.Error()) + }) + + t.Run("fails if a required variable is set empty", func(t *testing.T) { + req := BrickCreateUpdateRequest{ID: "arduino:arduino_cloud", Variables: map[string]string{ + "ARDUINO_DEVICE_ID": "", + "ARDUINO_SECRET": "a-secret-a", + }} + err = brickService.BrickCreate(req, f.Must(app.Load(paths.New("testdata/dummy-app")))) + require.Error(t, err) + require.Equal(t, "required variable \"ARDUINO_DEVICE_ID\" cannot be empty", err.Error()) + }) + + t.Run("do not fail if a mandatory variable is not present", func(t *testing.T) { + tempDummyApp := paths.New("testdata/dummy-app.temp") + err := tempDummyApp.RemoveAll() + require.Nil(t, err) + require.Nil(t, paths.New("testdata/dummy-app").CopyDirTo(tempDummyApp)) + + req := BrickCreateUpdateRequest{ID: "arduino:arduino_cloud", Variables: map[string]string{ + "ARDUINO_SECRET": "a-secret-a", + }} + err = brickService.BrickCreate(req, f.Must(app.Load(tempDummyApp))) + require.NoError(t, err) + + after, err := app.Load(tempDummyApp) + require.Nil(t, err) + require.Len(t, after.Descriptor.Bricks, 1) + require.Equal(t, "arduino:arduino_cloud", after.Descriptor.Bricks[0].ID) + require.Equal(t, "", after.Descriptor.Bricks[0].Variables["ARDUINO_DEVICE_ID"]) + require.Equal(t, "a-secret-a", after.Descriptor.Bricks[0].Variables["ARDUINO_SECRET"]) + }) + + t.Run("the brick is added if it does not exist in the app", func(t *testing.T) { + tempDummyApp := paths.New("testdata/dummy-app.temp") + err := tempDummyApp.RemoveAll() + require.Nil(t, err) + require.Nil(t, paths.New("testdata/dummy-app").CopyDirTo(tempDummyApp)) + + req := BrickCreateUpdateRequest{ID: "arduino:dbstorage_sqlstore"} + err = brickService.BrickCreate(req, f.Must(app.Load(tempDummyApp))) + require.Nil(t, err) + after, err := app.Load(tempDummyApp) + require.Nil(t, err) + require.Len(t, after.Descriptor.Bricks, 2) + require.Equal(t, "arduino:dbstorage_sqlstore", after.Descriptor.Bricks[1].ID) + }) + + t.Run("the variables of a brick are updated", func(t *testing.T) { + tempDummyApp := paths.New("testdata/dummy-app.brick-override.temp") + err := tempDummyApp.RemoveAll() + require.Nil(t, err) + err = paths.New("testdata/dummy-app").CopyDirTo(tempDummyApp) + require.Nil(t, err) + bricksIndex, err := bricksindex.Load(paths.New("testdata")) + require.Nil(t, err) + brickService := NewService(nil, bricksIndex, nil) + + deviceID := "this-is-a-device-id" + secret := "this-is-a-secret" + req := BrickCreateUpdateRequest{ + ID: "arduino:arduino_cloud", + Variables: map[string]string{ + "ARDUINO_DEVICE_ID": deviceID, + "ARDUINO_SECRET": secret, + }, + } + + err = brickService.BrickCreate(req, f.Must(app.Load(tempDummyApp))) + require.Nil(t, err) + + after, err := app.Load(tempDummyApp) + require.Nil(t, err) + require.Len(t, after.Descriptor.Bricks, 1) + require.Equal(t, "arduino:arduino_cloud", after.Descriptor.Bricks[0].ID) + require.Equal(t, deviceID, after.Descriptor.Bricks[0].Variables["ARDUINO_DEVICE_ID"]) + require.Equal(t, secret, after.Descriptor.Bricks[0].Variables["ARDUINO_SECRET"]) + }) +} + +func TestUpdateBrick(t *testing.T) { + bricksIndex, err := bricksindex.Load(paths.New("testdata")) + require.Nil(t, err) + brickService := NewService(nil, bricksIndex, nil) + + t.Run("fails if brick id does not exist into brick index", func(t *testing.T) { + err = brickService.BrickUpdate(BrickCreateUpdateRequest{ID: "not-existing-id"}, f.Must(app.Load(paths.New("testdata/dummy-app")))) + require.Error(t, err) + require.Equal(t, "brick \"not-existing-id\" not found into the brick index", err.Error()) + }) + + t.Run("fails if brick is present into the index but not in the app ", func(t *testing.T) { + err = brickService.BrickUpdate(BrickCreateUpdateRequest{ID: "arduino:dbstorage_sqlstore"}, f.Must(app.Load(paths.New("testdata/dummy-app")))) + require.Error(t, err) + require.Equal(t, "brick \"arduino:dbstorage_sqlstore\" not found into the bricks of the app", err.Error()) + }) + + t.Run("fails if the updated variable is not present in the brick definition", func(t *testing.T) { + req := BrickCreateUpdateRequest{ID: "arduino:arduino_cloud", Variables: map[string]string{ + "NON_EXISTING_VARIABLE": "some-value", + }} + err = brickService.BrickUpdate(req, f.Must(app.Load(paths.New("testdata/dummy-app")))) + require.Error(t, err) + require.Equal(t, "variable \"NON_EXISTING_VARIABLE\" does not exist on brick \"arduino:arduino_cloud\"", err.Error()) + }) + + // TODO: allow to set an empty "" variable + t.Run("fails if a required variable is set empty", func(t *testing.T) { + req := BrickCreateUpdateRequest{ID: "arduino:arduino_cloud", Variables: map[string]string{ + "ARDUINO_DEVICE_ID": "", + "ARDUINO_SECRET": "a-secret-a", + }} + err = brickService.BrickUpdate(req, f.Must(app.Load(paths.New("testdata/dummy-app")))) + require.Error(t, err) + require.Equal(t, "required variable \"ARDUINO_DEVICE_ID\" cannot be empty", err.Error()) + }) + + t.Run("allow updating only one mandatory variable among two", func(t *testing.T) { + tempDummyApp := paths.New("testdata/dummy-app.temp") + err := tempDummyApp.RemoveAll() + require.Nil(t, err) + require.Nil(t, paths.New("testdata/dummy-app").CopyDirTo(tempDummyApp)) + + req := BrickCreateUpdateRequest{ID: "arduino:arduino_cloud", Variables: map[string]string{ + "ARDUINO_SECRET": "a-secret-a", + }} + err = brickService.BrickUpdate(req, f.Must(app.Load(tempDummyApp))) + require.NoError(t, err) + + after, err := app.Load(tempDummyApp) + require.Nil(t, err) + require.Len(t, after.Descriptor.Bricks, 1) + require.Equal(t, "arduino:arduino_cloud", after.Descriptor.Bricks[0].ID) + require.Equal(t, "", after.Descriptor.Bricks[0].Variables["ARDUINO_DEVICE_ID"]) + require.Equal(t, "a-secret-a", after.Descriptor.Bricks[0].Variables["ARDUINO_SECRET"]) + }) + + t.Run("update a single variables of a brick correctly", func(t *testing.T) { + tempDummyApp := paths.New("testdata/dummy-app.temp") + require.Nil(t, tempDummyApp.RemoveAll()) + require.Nil(t, paths.New("testdata/dummy-app").CopyDirTo(tempDummyApp)) + bricksIndex, err := bricksindex.Load(paths.New("testdata")) + require.Nil(t, err) + brickService := NewService(nil, bricksIndex, nil) + + deviceID := "updated-device-id" + secret := "updated-secret" + req := BrickCreateUpdateRequest{ + ID: "arduino:arduino_cloud", + Variables: map[string]string{ + "ARDUINO_DEVICE_ID": deviceID, + "ARDUINO_SECRET": secret, + }, + } + + err = brickService.BrickUpdate(req, f.Must(app.Load(tempDummyApp))) + require.Nil(t, err) + + after, err := app.Load(tempDummyApp) + require.Nil(t, err) + require.Len(t, after.Descriptor.Bricks, 1) + require.Equal(t, "arduino:arduino_cloud", after.Descriptor.Bricks[0].ID) + require.Equal(t, deviceID, after.Descriptor.Bricks[0].Variables["ARDUINO_DEVICE_ID"]) + require.Equal(t, secret, after.Descriptor.Bricks[0].Variables["ARDUINO_SECRET"]) + }) + + t.Run("update a single variable correctly", func(t *testing.T) { + tempDummyApp := paths.New("testdata/dummy-app-for-update.temp") + require.Nil(t, tempDummyApp.RemoveAll()) + require.Nil(t, paths.New("testdata/dummy-app-for-update").CopyDirTo(tempDummyApp)) + bricksIndex, err := bricksindex.Load(paths.New("testdata")) + require.Nil(t, err) + brickService := NewService(nil, bricksIndex, nil) + + secret := "updated-the-secret" + req := BrickCreateUpdateRequest{ + ID: "arduino:arduino_cloud", + Variables: map[string]string{ + // the ARDUINO_DEVICE_ID is already configured int the app.yaml + "ARDUINO_SECRET": secret, + }, + } + + err = brickService.BrickUpdate(req, f.Must(app.Load(tempDummyApp))) + require.Nil(t, err) + + after, err := app.Load(tempDummyApp) + require.Nil(t, err) + require.Len(t, after.Descriptor.Bricks, 1) + require.Equal(t, "arduino:arduino_cloud", after.Descriptor.Bricks[0].ID) + require.Equal(t, "i-am-a-device-id", after.Descriptor.Bricks[0].Variables["ARDUINO_DEVICE_ID"]) + require.Equal(t, secret, after.Descriptor.Bricks[0].Variables["ARDUINO_SECRET"]) + }) + +} + +func TestGetBrickInstanceVariableDetails(t *testing.T) { + tests := []struct { + name string + brick *bricksindex.Brick + userVariables map[string]string + expectedConfigVariables []BrickConfigVariable + expectedVariableMap map[string]string + }{ + { + name: "variable is present in the map", + brick: &bricksindex.Brick{ + Variables: []bricksindex.BrickVariable{ + {Name: "VAR1", Description: "desc"}, + }, + }, + userVariables: map[string]string{"VAR1": "value1"}, + expectedConfigVariables: []BrickConfigVariable{ + {Name: "VAR1", Value: "value1", Description: "desc", Required: true}, + }, + expectedVariableMap: map[string]string{"VAR1": "value1"}, + }, + { + name: "variable not present in the map", + brick: &bricksindex.Brick{ + Variables: []bricksindex.BrickVariable{ + {Name: "VAR1", Description: "desc"}, + }, + }, + userVariables: map[string]string{}, + expectedConfigVariables: []BrickConfigVariable{ + {Name: "VAR1", Value: "", Description: "desc", Required: true}, + }, + expectedVariableMap: map[string]string{"VAR1": ""}, + }, + { + name: "variable with default value", + brick: &bricksindex.Brick{ + Variables: []bricksindex.BrickVariable{ + {Name: "VAR1", DefaultValue: "default", Description: "desc"}, + }, + }, + userVariables: map[string]string{}, + expectedConfigVariables: []BrickConfigVariable{ + {Name: "VAR1", Value: "default", Description: "desc", Required: false}, + }, + expectedVariableMap: map[string]string{"VAR1": "default"}, + }, + { + name: "multiple variables", + brick: &bricksindex.Brick{ + Variables: []bricksindex.BrickVariable{ + {Name: "VAR1", Description: "desc1"}, + {Name: "VAR2", DefaultValue: "def2", Description: "desc2"}, + }, + }, + userVariables: map[string]string{"VAR1": "v1"}, + expectedConfigVariables: []BrickConfigVariable{ + {Name: "VAR1", Value: "v1", Description: "desc1", Required: true}, + {Name: "VAR2", Value: "def2", Description: "desc2", Required: false}, + }, + expectedVariableMap: map[string]string{"VAR1": "v1", "VAR2": "def2"}, + }, + { + name: "no variables", + brick: &bricksindex.Brick{Variables: []bricksindex.BrickVariable{}}, + userVariables: map[string]string{}, + expectedConfigVariables: []BrickConfigVariable{}, + expectedVariableMap: map[string]string{}, + }, + { + name: "hidden variables", + brick: &bricksindex.Brick{Variables: []bricksindex.BrickVariable{ + {Name: "HIDDEN_VAR", DefaultValue: "i-am-hidden", Description: "a-hidden-variable", Hidden: true}, + {Name: "VISIBLE_VAR", DefaultValue: "i-am-visible", Description: "a-visible-variable", Hidden: false}, + {Name: "VISIBLE_VAR_WITH_MISSING", DefaultValue: "i-am-visible-if-missing-hidden", Description: "a-visible-variable"}, + }}, + userVariables: map[string]string{}, + expectedConfigVariables: []BrickConfigVariable{ + {Name: "VISIBLE_VAR", Value: "i-am-visible", Description: "a-visible-variable", Required: false}, + {Name: "VISIBLE_VAR_WITH_MISSING", Value: "i-am-visible-if-missing-hidden", Description: "a-visible-variable", Required: false}, + }, + expectedVariableMap: map[string]string{"VISIBLE_VAR": "i-am-visible", "VISIBLE_VAR_WITH_MISSING": "i-am-visible-if-missing-hidden"}, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + actualVariableMap, actualConfigVariables := getInstanceBrickConfigVariableDetails(tt.brick, tt.userVariables) + require.Equal(t, tt.expectedVariableMap, actualVariableMap) + require.Equal(t, tt.expectedConfigVariables, actualConfigVariables) + }) + } +} + +func TestBricksDetails(t *testing.T) { + tmpDir := t.TempDir() + appsDir := filepath.Join(tmpDir, "ArduinoApps") + dataDir := filepath.Join(tmpDir, "Data") + assetsDir := filepath.Join(dataDir, "assets") + + require.NoError(t, os.MkdirAll(appsDir, 0755)) + require.NoError(t, os.MkdirAll(assetsDir, 0755)) + + t.Setenv("ARDUINO_APP_CLI__APPS_DIR", appsDir) + t.Setenv("ARDUINO_APP_CLI__DATA_DIR", dataDir) + + cfg, err := config.NewFromEnv() + require.NoError(t, err) + + for _, brick := range []string{"object_detection", "weather_forecast", "one_model_brick"} { + createFakeBrickAssets(t, assetsDir, brick) + } + createFakeApp(t, appsDir) + + bIndex := &bricksindex.BricksIndex{ + Bricks: []bricksindex.Brick{ + { + ID: "arduino:object_detection", + Name: "Object Detection", + Category: "video", + ModelName: "yolox-object-detection", // Default model + Variables: []bricksindex.BrickVariable{ + {Name: "EI_OBJ_DETECTION_MODEL", DefaultValue: "default_path", Description: "path to the model file"}, + {Name: "CUSTOM_MODEL_PATH", DefaultValue: "/home/arduino/.arduino-bricks/ei-models", Description: "path to the custom model directory"}, + }, + }, + { + ID: "arduino:weather_forecast", + Name: "Weather Forecast", + Category: "miscellaneous", + ModelName: "", + }, + { + ID: "arduino:one_model_brick", + Name: "one model brick", + Category: "video", + ModelName: "face-detection", // Default model + Variables: []bricksindex.BrickVariable{}, + }, + }, + } + mIndex := &modelsindex.ModelsIndex{ + Models: []modelsindex.AIModel{ + + { + ID: "yolox-object-detection", + Name: "General purpose object detection - YoloX", + ModuleDescription: "General purpose object detection...", + Bricks: []string{"arduino:object_detection", "arduino:video_object_detection"}, + }, + { + ID: "face-detection", + Name: "Lightweight-Face-Detection", + Bricks: []string{"arduino:object_detection", "arduino:video_object_detection", "arduino:one_model_brick"}, + }, + }} + + svc := &Service{ + bricksIndex: bIndex, + modelsIndex: mIndex, + staticStore: store.NewStaticStore(assetsDir), + } + idProvider := app.NewAppIDProvider(cfg) + + t.Run("Brick Not Found", func(t *testing.T) { + res, err := svc.BricksDetails("arduino:non_existing", idProvider, cfg) + require.Error(t, err) + require.Equal(t, ErrBrickNotFound, err) + require.Empty(t, res.ID) + }) + + t.Run("Success - Full Details - multiple models", func(t *testing.T) { + expectConfigVariables := []BrickConfigVariable{ + { + Name: "EI_OBJ_DETECTION_MODEL", + Value: "default_path", + Description: "path to the model file", + Required: false, + }, + { + Name: "CUSTOM_MODEL_PATH", + Value: "/home/arduino/.arduino-bricks/ei-models", + Description: "path to the custom model directory", + Required: false, + }, + } + + res, err := svc.BricksDetails("arduino:object_detection", idProvider, cfg) + require.NoError(t, err) + + require.Equal(t, "arduino:object_detection", res.ID) + require.Equal(t, "Object Detection", res.Name) + require.Equal(t, "Arduino", res.Author) + require.Equal(t, "installed", res.Status) + require.Contains(t, res.Variables, "EI_OBJ_DETECTION_MODEL") + require.Equal(t, "default_path", res.Variables["EI_OBJ_DETECTION_MODEL"].DefaultValue) + require.Equal(t, "# Documentation", res.Readme) + require.Contains(t, res.ApiDocsPath, filepath.Join("arduino", "app_bricks", "object_detection", "API.md")) + require.Len(t, res.CodeExamples, 1) + require.Contains(t, res.CodeExamples[0].Path, "blink.ino") + require.Len(t, res.UsedByApps, 1) + require.Equal(t, "My App", res.UsedByApps[0].Name) + require.NotEmpty(t, res.UsedByApps[0].ID) + require.Len(t, res.CompatibleModels, 2) + require.Equal(t, "yolox-object-detection", res.CompatibleModels[0].ID) + require.Equal(t, "General purpose object detection - YoloX", res.CompatibleModels[0].Name) + require.Equal(t, "General purpose object detection...", res.CompatibleModels[0].Description) + require.Equal(t, "face-detection", res.CompatibleModels[1].ID) + require.Equal(t, "Lightweight-Face-Detection", res.CompatibleModels[1].Name) + require.Equal(t, "", res.CompatibleModels[1].Description) + require.Len(t, res.ConfigVariables, 2) + require.Equal(t, expectConfigVariables, res.ConfigVariables) + }) + + t.Run("Success - Full Details - no models", func(t *testing.T) { + res, err := svc.BricksDetails("arduino:weather_forecast", idProvider, cfg) + require.NoError(t, err) + + require.Equal(t, "arduino:weather_forecast", res.ID) + require.Equal(t, "Weather Forecast", res.Name) + require.Equal(t, "Arduino", res.Author) + require.Equal(t, "installed", res.Status) + require.Empty(t, res.Variables) + require.Equal(t, "# Documentation", res.Readme) + require.Contains(t, res.ApiDocsPath, filepath.Join("arduino", "app_bricks", "weather_forecast", "API.md")) + require.Len(t, res.CodeExamples, 1) + require.Contains(t, res.CodeExamples[0].Path, "blink.ino") + require.Len(t, res.UsedByApps, 1) + require.Equal(t, "My App", res.UsedByApps[0].Name) + require.NotEmpty(t, res.UsedByApps[0].ID) + require.Len(t, res.CompatibleModels, 0) + require.Empty(t, res.ConfigVariables) + }) + + t.Run("Success - Full Details - one model", func(t *testing.T) { + res, err := svc.BricksDetails("arduino:one_model_brick", idProvider, cfg) + require.NoError(t, err) + + require.Equal(t, "arduino:one_model_brick", res.ID) + require.Equal(t, "one model brick", res.Name) + require.Len(t, res.CompatibleModels, 1) + require.Equal(t, "face-detection", res.CompatibleModels[0].ID) + require.Equal(t, "Lightweight-Face-Detection", res.CompatibleModels[0].Name) + require.Equal(t, "", res.CompatibleModels[0].Description) + require.Empty(t, res.ConfigVariables) + require.Empty(t, res.Variables) + }) +} + +func createFakeBrickAssets(t *testing.T, assetsDir, brick string) { + t.Helper() + + brickDocDir := filepath.Join(assetsDir, "docs", "arduino", brick) + require.NoError(t, os.MkdirAll(brickDocDir, 0755)) + require.NoError(t, os.WriteFile(filepath.Join(brickDocDir, "README.md"), + []byte("# Documentation"), 0600)) + + brickExDir := filepath.Join(assetsDir, "examples", "arduino", brick) + require.NoError(t, os.MkdirAll(brickExDir, 0755)) + require.NoError(t, os.WriteFile(filepath.Join(brickExDir, "blink.ino"), + []byte("void setup() {}"), 0600)) +} + +func createFakeApp(t *testing.T, appsDir string) { + t.Helper() + myAppDir := filepath.Join(appsDir, "MyApp") + require.NoError(t, os.MkdirAll(myAppDir, 0755)) + + appYamlContent := ` +name: My App +bricks: + - arduino:object_detection: + - arduino:weather_forecast: +` + require.NoError(t, os.WriteFile(filepath.Join(myAppDir, "app.yaml"), []byte(appYamlContent), 0600)) + pythonDir := filepath.Join(myAppDir, "python") + require.NoError(t, os.MkdirAll(pythonDir, 0755)) + require.NoError(t, os.WriteFile(filepath.Join(pythonDir, "main.py"), []byte("print('hello')"), 0600)) +} + +func TestAppBrickInstanceModelsDetails(t *testing.T) { + + bIndex := &bricksindex.BricksIndex{ + Bricks: []bricksindex.Brick{ + { + ID: "arduino:object_detection", + Name: "Object Detection", + Category: "video", + ModelName: "yolox-object-detection", // Default model + Variables: []bricksindex.BrickVariable{ + {Name: "EI_OBJ_DETECTION_MODEL", DefaultValue: "default_path", Description: "path to the model file"}, + {Name: "CUSTOM_MODEL_PATH", DefaultValue: "/home/arduino/.arduino-bricks/ei-models", Description: "path to the custom model directory"}, + }, + RequireModel: true, + }, + { + ID: "arduino:weather_forecast", + Name: "Weather Forecast", + Category: "miscellaneous", + ModelName: "", + RequireModel: false, + }, + }, + } + + mIndex := &modelsindex.ModelsIndex{ + Models: []modelsindex.AIModel{ + + { + ID: "yolox-object-detection", + Name: "General purpose object detection - YoloX", + ModuleDescription: "General purpose object detection...", + Bricks: []string{"arduino:object_detection", "arduino:video_object_detection"}, + }, + { + ID: "face-detection", + Name: "Lightweight-Face-Detection", + Bricks: []string{"arduino:object_detection", "arduino:video_object_detection"}, + }, + }} + + svc := &Service{ + bricksIndex: bIndex, + modelsIndex: mIndex, + } + + tests := []struct { + name string + app *app.ArduinoApp + brickID string + expectedError string + validate func(*testing.T, BrickInstance) + }{ + { + name: "Brick not found in global Index", + brickID: "arduino:non_existent_brick", + app: &app.ArduinoApp{ + Descriptor: app.AppDescriptor{Bricks: []app.Brick{}}, + }, + expectedError: "brick not found", + }, + { + name: "Brick found in Index but not added to App", + brickID: "arduino:object_detection", + app: &app.ArduinoApp{ + Descriptor: app.AppDescriptor{ + Bricks: []app.Brick{ + {ID: "arduino:weather_forecast"}, + }, + }, + }, + expectedError: "brick arduino:object_detection not added in the app", + }, + { + name: "Success - Standard Brick without Model", + brickID: "arduino:weather_forecast", + app: &app.ArduinoApp{ + Descriptor: app.AppDescriptor{ + Bricks: []app.Brick{ + {ID: "arduino:weather_forecast"}, + }, + }, + }, + validate: func(t *testing.T, res BrickInstance) { + require.Equal(t, "arduino:weather_forecast", res.ID) + require.Equal(t, "Weather Forecast", res.Name) + require.Equal(t, "installed", res.Status) + require.Empty(t, res.ModelID) + require.Empty(t, res.CompatibleModels) + require.False(t, res.RequireModel) + }, + }, + { + name: "Success - Brick with Default Model", + brickID: "arduino:object_detection", + app: &app.ArduinoApp{ + Descriptor: app.AppDescriptor{ + Bricks: []app.Brick{ + { + ID: "arduino:object_detection", + }, + }, + }, + }, + validate: func(t *testing.T, res BrickInstance) { + require.Equal(t, "arduino:object_detection", res.ID) + require.Equal(t, "yolox-object-detection", res.ModelID) + require.Len(t, res.CompatibleModels, 2) + require.Equal(t, "yolox-object-detection", res.CompatibleModels[0].ID) + require.Equal(t, "face-detection", res.CompatibleModels[1].ID) + require.True(t, res.RequireModel) + }, + }, + { + name: "Success - Brick with Overridden Model in App", + brickID: "arduino:object_detection", + app: &app.ArduinoApp{ + Descriptor: app.AppDescriptor{ + Bricks: []app.Brick{ + { + ID: "arduino:object_detection", + Model: "face-detection", + }, + }, + }, + }, + validate: func(t *testing.T, res BrickInstance) { + require.Equal(t, "arduino:object_detection", res.ID) + require.Equal(t, "face-detection", res.ModelID) + require.Len(t, res.CompatibleModels, 2) + require.Equal(t, "yolox-object-detection", res.CompatibleModels[0].ID) + require.Equal(t, "face-detection", res.CompatibleModels[1].ID) + require.True(t, res.RequireModel) + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result, err := svc.AppBrickInstanceDetails(tt.app, tt.brickID) + + if tt.expectedError != "" { + require.Error(t, err) + require.Equal(t, err.Error(), tt.expectedError) + return + } + + require.NoError(t, err) + if tt.validate != nil { + tt.validate(t, result) + } + }) + } +} + +func TestAppBrickInstancesList(t *testing.T) { + + bIndex := &bricksindex.BricksIndex{ + Bricks: []bricksindex.Brick{ + { + ID: "arduino:weather_forecast", + Name: "Weather Forecast", + Category: "miscellaneous", + RequireModel: false, + Variables: []bricksindex.BrickVariable{}, + }, + { + ID: "arduino:object_detection", + Name: "Object Detection", + Category: "video", + ModelName: "yolox-object-detection", + RequireModel: true, + Variables: []bricksindex.BrickVariable{ + {Name: "CUSTOM_MODEL_PATH", DefaultValue: "/home/arduino/.arduino-bricks/ei-models", Description: "path to the custom model directory"}, + {Name: "EI_OBJ_DETECTION_MODEL", DefaultValue: "/models/ootb/ei/yolo-x-nano.eim", Description: "path to the model file"}, + }, + }, + { + ID: "arduino:audio_classification", + Name: "Audio Classification", + Category: "audio", + ModelName: "glass-breaking", + RequireModel: true, + Variables: []bricksindex.BrickVariable{ + {Name: "CUSTOM_MODEL_PATH", DefaultValue: "/home/arduino/.arduino-bricks/ei-models"}, + {Name: "EI_AUDIO_CLASSIFICATION_MODEL", DefaultValue: "/models/ootb/ei/glass-breaking.eim"}, + }, + }, + { + ID: "arduino:streamlit_ui", + Name: "WebUI - Streamlit", + Category: "ui", + RequireModel: false, + Ports: []string{"7000", "8000"}, + }, + { + ID: "arduino:with-hidden-vars", + Name: "I have some hidden variables", + Variables: []bricksindex.BrickVariable{ + {Name: "HIDDEN_VAR", DefaultValue: "/i/am/hidden", Hidden: true}, + {Name: "VISIBLE_VAR", DefaultValue: "/i/am/visible"}, + {Name: "VISIBLE_VAR_IF_MISSING", DefaultValue: "/i/am/visible", Hidden: false}, + }, + }, + }, + } + + svc := &Service{ + bricksIndex: bIndex, + modelsIndex: &modelsindex.ModelsIndex{}, + } + + tests := []struct { + name string + app *app.ArduinoApp + expectedError string + validate func(*testing.T, AppBrickInstancesResult) + }{ + { + name: "Error - Brick not found in Index", + app: &app.ArduinoApp{ + Descriptor: app.AppDescriptor{ + Bricks: []app.Brick{ + {ID: "arduino:non_existent_brick"}, + }, + }, + }, + expectedError: "brick not found with id arduino:non_existent_brick", + }, + { + name: "Success - Empty App", + app: &app.ArduinoApp{ + Descriptor: app.AppDescriptor{ + Bricks: []app.Brick{}, + }, + }, + validate: func(t *testing.T, res AppBrickInstancesResult) { + require.Empty(t, res.BrickInstances) + }, + }, + { + name: "Success - Simple Brick", + app: &app.ArduinoApp{ + Descriptor: app.AppDescriptor{ + Bricks: []app.Brick{ + {ID: "arduino:weather_forecast"}, + }, + }, + }, + validate: func(t *testing.T, res AppBrickInstancesResult) { + require.Len(t, res.BrickInstances, 1) + brick := res.BrickInstances[0] + + require.Equal(t, "arduino:weather_forecast", brick.ID) + require.Equal(t, "Weather Forecast", brick.Name) + require.Equal(t, "miscellaneous", brick.Category) + require.Equal(t, "installed", brick.Status) + require.Equal(t, "Arduino", brick.Author) + require.False(t, brick.RequireModel) + require.Empty(t, brick.ModelID) + }, + }, + { + name: "Success - Brick with Model Configured", + app: &app.ArduinoApp{ + Descriptor: app.AppDescriptor{ + Bricks: []app.Brick{ + { + ID: "arduino:object_detection", + Model: "face-detection", // default model overridden + Variables: map[string]string{ + "CUSTOM_MODEL_PATH": "/custom/path", + }, + }, + }, + }, + }, + validate: func(t *testing.T, res AppBrickInstancesResult) { + require.Len(t, res.BrickInstances, 1) + brick := res.BrickInstances[0] + + require.Equal(t, "arduino:object_detection", brick.ID) + require.Equal(t, "video", brick.Category) + require.True(t, brick.RequireModel) + require.Equal(t, "face-detection", brick.ModelID) + + foundCustom := false + for _, v := range brick.ConfigVariables { + if v.Name == "CUSTOM_MODEL_PATH" { + require.Equal(t, "/custom/path", v.Value) + foundCustom = true + } + } + require.True(t, foundCustom, "Variable CUSTOM_MODEL_PATH should be present and overridden") + }, + }, + { + name: "Success - Multiple Bricks", + app: &app.ArduinoApp{ + Descriptor: app.AppDescriptor{ + Bricks: []app.Brick{ + {ID: "arduino:streamlit_ui"}, + {ID: "arduino:audio_classification", Model: "glass-breaking"}, + }, + }, + }, + validate: func(t *testing.T, res AppBrickInstancesResult) { + require.Len(t, res.BrickInstances, 2) + + // Brick 1: Streamlit UI + b1 := res.BrickInstances[0] + require.Equal(t, "arduino:streamlit_ui", b1.ID) + require.Equal(t, "WebUI - Streamlit", b1.Name) + require.Equal(t, "Arduino", b1.Author) + require.Equal(t, "ui", b1.Category) + require.Equal(t, "installed", b1.Status) + require.Equal(t, "", b1.ModelID) + require.Empty(t, b1.Variables) + require.Empty(t, b1.ConfigVariables) + require.False(t, b1.RequireModel) + + // Brick 2: Audio Classification + b2 := res.BrickInstances[1] + require.Equal(t, "arduino:audio_classification", b2.ID) + require.Equal(t, "audio", b2.Category) + require.True(t, b2.RequireModel) + require.Equal(t, "glass-breaking", b2.ModelID) + require.Equal(t, 2, len(b2.ConfigVariables)) + require.Equal(t, "/home/arduino/.arduino-bricks/ei-models", b2.ConfigVariables[0].Value) + require.Equal(t, "/models/ootb/ei/glass-breaking.eim", b2.ConfigVariables[1].Value) + }, + }, + { + name: "Success - hidden variables are not included", + app: &app.ArduinoApp{ + Descriptor: app.AppDescriptor{ + Bricks: []app.Brick{ + { + ID: "arduino:with-hidden-vars", + Variables: map[string]string{ + "HIDDEN_VAR": "/this/is/a/new/hidden/value", + "VISIBLE_VAR": "/this/is/a/new/visible/value", + }, + }, + }, + }, + }, + validate: func(t *testing.T, res AppBrickInstancesResult) { + require.Len(t, res.BrickInstances, 1) + brick := res.BrickInstances[0] + require.Equal(t, "arduino:with-hidden-vars", brick.ID) + expected := []BrickConfigVariable{ + {Name: "VISIBLE_VAR", Value: "/this/is/a/new/visible/value"}, + {Name: "VISIBLE_VAR_IF_MISSING", Value: "/i/am/visible"}, + } + require.Equal(t, expected, brick.ConfigVariables) + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result, err := svc.AppBrickInstancesList(tt.app) + + if tt.expectedError != "" { + require.Error(t, err) + require.Contains(t, err.Error(), tt.expectedError) + return + } + + require.NoError(t, err) + if tt.validate != nil { + tt.validate(t, result) + } + }) + } +} diff --git a/internal/orchestrator/bricks/testdata/.gitignore b/internal/orchestrator/bricks/testdata/.gitignore new file mode 100644 index 000000000..d4685d628 --- /dev/null +++ b/internal/orchestrator/bricks/testdata/.gitignore @@ -0,0 +1 @@ +*.temp \ No newline at end of file diff --git a/internal/orchestrator/bricks/testdata/bricks-list.yaml b/internal/orchestrator/bricks/testdata/bricks-list.yaml new file mode 100644 index 000000000..e38eeeb48 --- /dev/null +++ b/internal/orchestrator/bricks/testdata/bricks-list.yaml @@ -0,0 +1,28 @@ +bricks: +- id: arduino:arduino_cloud + name: Arduino Cloud + description: Connects to Arduino Cloud + require_container: false + require_model: false + mount_devices_into_container: false + ports: [] + category: null + variables: + - name: ARDUINO_DEVICE_ID + description: Arduino Cloud Device ID + - name: ARDUINO_SECRET + description: Arduino Cloud Secret +- id: arduino:dbstorage_sqlstore + name: Database - SQL + description: Simplified database storage layer for Arduino sensor data using SQLite + local database. + require_container: false + require_model: false + mount_devices_into_container: false + ports: [] + category: storage +- id: arduino:brick-with-require-model + name: A brick with required model + description: "Brick with required model" + require_model: true + model_name: mobilenet-image-classification \ No newline at end of file diff --git a/internal/orchestrator/bricks/testdata/dummy-app-for-update/app.yaml b/internal/orchestrator/bricks/testdata/dummy-app-for-update/app.yaml new file mode 100644 index 000000000..5b168ed59 --- /dev/null +++ b/internal/orchestrator/bricks/testdata/dummy-app-for-update/app.yaml @@ -0,0 +1,6 @@ +name: An app with only a required variable filled +description: An app with only a required variable filled +bricks: + - arduino:arduino_cloud: + variables: + ARDUINO_DEVICE_ID: "i-am-a-device-id" \ No newline at end of file diff --git a/internal/orchestrator/bricks/testdata/dummy-app-for-update/python/main.py b/internal/orchestrator/bricks/testdata/dummy-app-for-update/python/main.py new file mode 100644 index 000000000..336e825c8 --- /dev/null +++ b/internal/orchestrator/bricks/testdata/dummy-app-for-update/python/main.py @@ -0,0 +1,2 @@ +def main(): + pass diff --git a/internal/orchestrator/bricks/testdata/dummy-app/app.yaml b/internal/orchestrator/bricks/testdata/dummy-app/app.yaml new file mode 100644 index 000000000..281821c69 --- /dev/null +++ b/internal/orchestrator/bricks/testdata/dummy-app/app.yaml @@ -0,0 +1,6 @@ +name: Copy of Blinking LED from Arduino Cloud +description: Control the LED from the Arduino IoT Cloud using RPC calls +icon: ☁️ +ports: [] +bricks: +- arduino:arduino_cloud: \ No newline at end of file diff --git a/internal/orchestrator/bricks/testdata/dummy-app/python/main.py b/internal/orchestrator/bricks/testdata/dummy-app/python/main.py new file mode 100644 index 000000000..336e825c8 --- /dev/null +++ b/internal/orchestrator/bricks/testdata/dummy-app/python/main.py @@ -0,0 +1,2 @@ +def main(): + pass diff --git a/internal/orchestrator/bricks/types.go b/internal/orchestrator/bricks/types.go index ae803745a..e4b1b7474 100644 --- a/internal/orchestrator/bricks/types.go +++ b/internal/orchestrator/bricks/types.go @@ -20,27 +20,52 @@ type BrickListResult struct { } type BrickListItem struct { - ID string `json:"id"` - Name string `json:"name"` - Author string `json:"author"` - Description string `json:"description"` - Category string `json:"category"` - Status string `json:"status"` - Models []string `json:"models"` + ID string `json:"id"` + Name string `json:"name"` + Author string `json:"author"` + Description string `json:"description"` + Category string `json:"category"` + Status string `json:"status"` + RequireModel bool `json:"require_model"` } type AppBrickInstancesResult struct { - BrickInstances []BrickInstance `json:"bricks"` + BrickInstances []BrickInstanceListItem `json:"bricks"` +} +type BrickInstanceListItem struct { + ID string `json:"id"` + Name string `json:"name"` + Author string `json:"author"` + Category string `json:"category"` + Status string `json:"status"` + Variables map[string]string `json:"variables,omitempty" description:"Deprecated: use config_variables instead. This field is kept for backward compatibility."` + ConfigVariables []BrickConfigVariable `json:"config_variables,omitempty"` + RequireModel bool `json:"require_model"` + ModelID string `json:"model,omitempty"` } - type BrickInstance struct { - ID string `json:"id"` - Name string `json:"name"` - Author string `json:"author"` - Category string `json:"category"` - Status string `json:"status"` - Variables map[string]string `json:"variables,omitempty"` - ModelID string `json:"model,omitempty"` + ID string `json:"id"` + Name string `json:"name"` + Author string `json:"author"` + Category string `json:"category"` + Status string `json:"status"` + Variables map[string]string `json:"variables,omitempty" description:"Deprecated: use config_variables instead. This field is kept for backward compatibility."` + ConfigVariables []BrickConfigVariable `json:"config_variables,omitempty"` + RequireModel bool `json:"require_model"` + ModelID string `json:"model,omitempty"` + CompatibleModels []AIModel `json:"compatible_models"` +} + +type AIModel struct { + ID string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` +} +type BrickConfigVariable struct { + Name string `json:"name"` + Value string `json:"value"` + Description string `json:"description"` + Required bool `json:"required"` } type BrickVariable struct { @@ -59,15 +84,18 @@ type AppReference struct { } type BrickDetailsResult struct { - ID string `json:"id"` - Name string `json:"name"` - Author string `json:"author"` - Description string `json:"description"` - Category string `json:"category"` - Status string `json:"status"` - Variables map[string]BrickVariable `json:"variables,omitempty"` - Readme string `json:"readme"` - ApiDocsPath string `json:"api_docs_path"` - CodeExamples []CodeExample `json:"code_examples"` - UsedByApps []AppReference `json:"used_by_apps"` + ID string `json:"id"` + Name string `json:"name"` + Author string `json:"author"` + Description string `json:"description"` + Category string `json:"category"` + Status string `json:"status"` + RequireModel bool `json:"require_model"` + Variables map[string]BrickVariable `json:"variables,omitempty" description:"Deprecated: use config_variables instead. This field is kept for backward compatibility."` + Readme string `json:"readme"` + ApiDocsPath string `json:"api_docs_path"` + CodeExamples []CodeExample `json:"code_examples"` + UsedByApps []AppReference `json:"used_by_apps"` + CompatibleModels []AIModel `json:"compatible_models"` + ConfigVariables []BrickConfigVariable `json:"config_variables"` } diff --git a/internal/orchestrator/bricksindex/bricks_index.go b/internal/orchestrator/bricksindex/bricks_index.go index e4b774f47..4fb7d0658 100644 --- a/internal/orchestrator/bricksindex/bricks_index.go +++ b/internal/orchestrator/bricksindex/bricks_index.go @@ -42,6 +42,7 @@ type BrickVariable struct { Name string `yaml:"name"` DefaultValue string `yaml:"default_value"` Description string `yaml:"description,omitempty"` + Hidden bool `yaml:"hidden"` } func (v BrickVariable) IsRequired() bool { @@ -91,7 +92,7 @@ func unmarshalBricksIndex(content io.Reader) (*BricksIndex, error) { return &index, nil } -func GenerateBricksIndexFromFile(dir *paths.Path) (*BricksIndex, error) { +func Load(dir *paths.Path) (*BricksIndex, error) { content, err := dir.Join("bricks-list.yaml").Open() if err != nil { return nil, err diff --git a/internal/orchestrator/bricksindex/bricks_index_test.go b/internal/orchestrator/bricksindex/bricks_index_test.go index 5b2a15467..2db3bb0ee 100644 --- a/internal/orchestrator/bricksindex/bricks_index_test.go +++ b/internal/orchestrator/bricksindex/bricks_index_test.go @@ -16,171 +16,206 @@ package bricksindex import ( + "os" "testing" - yaml "github.com/goccy/go-yaml" + "github.com/arduino/go-paths-helper" "github.com/stretchr/testify/require" ) -func TestBricksIndex(t *testing.T) { - x := `bricks: -- id: arduino:image_classification - name: Image Classification - description: "Brick for image classification using a pre-trained model. It processes\ - \ images and returns the predicted class label and confidence score.\nBrick is\ - \ designed to work with pre-trained models provided by framework or with custom\ - \ image classification models trained on Edge Impulse platform. \n" - require_container: true - require_model: true - ports: [] - model_name: mobilenet-image-classification - variables: - - name: CUSTOM_MODEL_PATH - default_value: /opt/models/ei/ - description: path to the custom model directory - - name: EI_CLASSIFICATION_MODEL - default_value: /models/ootb/ei/mobilenet-v2-224px.eim - description: path to the model file -- id: arduino:camera_scanner - name: Camera Scanner - description: Scans a camera for barcodes and QR codes - require_container: false - require_model: false - ports: [] -- id: arduino:streamlit_ui - name: Streamlit UI - description: A simplified user interface based on Streamlit and Python. - require_container: false - require_model: false - ports: - - 7000 -- id: arduino:keyword_spotter - name: Keyword Spotter - description: 'Brick for keyword spotting using a pre-trained model. It processes - audio input to detect specific keywords or phrases. +func TestGenerateBricksIndexFromFile(t *testing.T) { + index, err := Load(paths.New("testdata")) + require.NoError(t, err) + + // Check if ports are correctly set + bWebUI, found := index.FindBrickByID("arduino:web_ui") + require.True(t, found) + require.Equal(t, []string{"7000"}, bWebUI.Ports) + + // Check if variables are correctly set + bIC, found := index.FindBrickByID("arduino:image_classification") + require.True(t, found) + require.Equal(t, "Image Classification", bIC.Name) + require.Equal(t, "mobilenet-image-classification", bIC.ModelName) + require.Len(t, bIC.Variables, 2) + require.Equal(t, "CUSTOM_MODEL_PATH", bIC.Variables[0].Name) + require.Equal(t, "/opt/models/ei/", bIC.Variables[0].DefaultValue) + require.Equal(t, "path to the custom model directory", bIC.Variables[0].Description) + require.Equal(t, "EI_CLASSIFICATION_MODEL", bIC.Variables[1].Name) + require.Equal(t, "/models/ootb/ei/mobilenet-v2-224px.eim", bIC.Variables[1].DefaultValue) + require.Equal(t, "path to the model file", bIC.Variables[1].Description) + require.False(t, bIC.Variables[0].IsRequired()) + require.False(t, bIC.Variables[1].IsRequired()) + + bRequireModel, found := index.FindBrickByID("arduino:model_required") + require.True(t, found) + require.True(t, bRequireModel.RequireModel) + + bDb, found := index.FindBrickByID("arduino:dbstorage_tsstore") + require.True(t, found) + require.False(t, bDb.RequireModel) + + bNoRequireModel, found := index.FindBrickByID("arduino:missing-model-require") + require.True(t, found) + require.False(t, bNoRequireModel.RequireModel) - Brick is designed to work with pre-trained models provided by framework or with - custom audio classification models trained on Edge Impulse platform. + withHidden, found := index.FindBrickByID("arduino:with-hidden-variables") + require.True(t, found) + require.Equal(t, "HIDDEN_VARIABLE", withHidden.Variables[0].Name) + require.True(t, withHidden.Variables[0].Hidden) + require.Equal(t, "VISIBLE_VARIABLE", withHidden.Variables[1].Name) + require.False(t, withHidden.Variables[1].Hidden) + require.Equal(t, "VISIBLE_VARIABLE_IF_MISSING_HIDDEN", withHidden.Variables[2].Name) + require.False(t, withHidden.Variables[2].Hidden) +} - ' +func TestBricksIndexYAMLFormats(t *testing.T) { + testCases := []struct { + name string + yamlContent string + expectedError string + expectedBricks []Brick + }{ + { + // TODO: add a validator fo the bricks-list to validate the field + name: "missing bricks field does not cuase error", + yamlContent: `other_field: value`, + expectedBricks: nil, + }, + { + name: "bad YAML format invalid indentation", + yamlContent: `bricks: + - id: arduino:test_brick + name: Test Brick + description: A test brick`, + expectedError: "found character '\t' that cannot start any token", + }, + { + name: "empty bricks", + yamlContent: `bricks: []`, + expectedBricks: []Brick{}, + }, + { + name: "bad YAML format unclosed quotes", + yamlContent: `bricks: +- id: "arduino:test_brick + name: Test Brick + description: A test brick`, + expectedError: "could not find end character of double-quoted text", + }, + { + name: "bad YAML format missing colon", + yamlContent: `bricks: +- id arduino:test_brick + name: Test Brick`, + expectedError: "unexpected key name", + }, + { + name: "bad YAML format invalid syntax", + yamlContent: `bricks: +- id: arduino:test_brick + name: Test Brick + description: A test brick + ports: [7000,`, + expectedError: "sequence end token ']' not found", + }, + { + name: "bad YAML format tab characters", + yamlContent: "bricks:\n\t- id: arduino:test_brick\n\t name: Test Brick", + expectedError: "found character '\t' that cannot start any token", + }, + { + name: "simple brick", + yamlContent: `bricks: +- id: arduino:simple_brick + name: Test Brick + description: A test brick +`, + expectedBricks: []Brick{ + { + ID: "arduino:simple_brick", + Name: "Test Brick", + Description: "A test brick", + Category: "", + RequiresDisplay: "", + RequireContainer: false, + RequireModel: false, + RequiredDevices: nil, + Variables: nil, + Ports: nil, + ModelName: "", + MountDevicesIntoContainer: false, + }, + }, + }, + { + name: "valid YAML with complex variables", + yamlContent: `bricks: +- id: arduino:complex_brick + name: Complex Brick + description: A complex test brick + category: storage require_container: true require_model: true - ports: [] - model_name: keyword-spotting-hello-world - variables: - - name: CUSTOM_MODEL_PATH - default_value: /opt/models/ei/ - description: path to the custom model directory - - name: EI_KEYWORK_SPOTTING_MODEL - default_value: /models/ootb/ei/keyword-spotting-hello-world.eim - description: path to the model file -- id: arduino:mqtt - name: MQTT Connector - description: MQTT connector module. Acts as a client for receiving and publishing - messages to an MQTT broker. - require_container: false - require_model: false - ports: [] -- id: arduino:web_ui - name: Web UI - description: A user interface based on HTML and JavaScript that can rely on additional - APIs and a WebSocket exposed by a web server. - require_container: false - require_model: false + mount_devices_into_container: true + model_name: a-complex-model + required_devices: + - camera ports: - 7000 -- id: arduino:dbstorage_tsstore - name: Database Storage - Time Series Store - description: Simplified time series database storage layer for Arduino sensor samples - built on top of InfluxDB. - require_container: true - require_model: false - ports: [] + - 8080 variables: - - name: APP_HOME - default_value: . - - name: DB_PASSWORD - default_value: Arduino15 - description: Database password - - name: DB_USERNAME - default_value: admin - description: Edge Impulse project API key - - name: INFLUXDB_ADMIN_TOKEN - default_value: 392edbf2-b8a2-481f-979d-3f188b2c05f0 - description: InfluxDB admin token -- id: arduino:dbstorage_sqlstore - name: Database Storage - SQLStore - description: Simplified database storage layer for Arduino sensor data using SQLite - local database. - require_container: false - require_model: false - ports: [] -- id: arduino:object_detection - name: Object Detection - description: "Brick for object detection using a pre-trained model. It processes\ - \ images and returns the predicted class label, bounding-boxes and confidence\ - \ score.\nBrick is designed to work with pre-trained models provided by framework\ - \ or with custom object detection models trained on Edge Impulse platform. \n" - require_container: true - require_model: true - ports: [] - model_name: yolox-object-detection - variables: - - name: CUSTOM_MODEL_PATH - default_value: /opt/models/ei/ - description: path to the custom model directory - - name: EI_OBJ_DETECTION_MODEL - default_value: /models/ootb/ei/yolo-x-nano.eim - description: path to the model file -- id: arduino:weather_forecast - name: Weather Forecast - description: Online weather forecast module for Arduino using open-meteo.com geolocation - and weather APIs. Requires an internet connection. - require_container: false - require_model: false - ports: [] -- id: arduino:visual_anomaly_detection - name: Visual Anomaly Detection - description: "Brick for visual anomaly detection using a pre-trained model. It processes\ - \ images and returns detected anomalies and bounding-boxes.\nBrick is designed\ - \ to work with pre-trained models provided by framework or with custom object\ - \ detection models trained on Edge Impulse platform. \n" - require_container: true - require_model: true - ports: [] - model_name: concreate-crack-anomaly-detection - variables: - - name: CUSTOM_MODEL_PATH - default_value: /opt/models/ei/ - description: path to the custom model directory - - name: EI_V_ANOMALY_DETECTION_MODEL - default_value: /models/ootb/ei/concrete-crack-anomaly-detection.eim - description: path to the model file -` - - var index BricksIndex - err := yaml.Unmarshal([]byte(x), &index) - require.NoError(t, err) - require.Len(t, index.Bricks, 11) + - name: REQUIRED_VAR + default_value: "" + description: A required variable + - name: OPTIONAL_VAR + default_value: "default_value" + description: An optional variable`, + expectedBricks: []Brick{ + { + ID: "arduino:complex_brick", + Name: "Complex Brick", + Description: "A complex test brick", + Category: "storage", + RequiresDisplay: "", + RequireContainer: true, + RequireModel: true, + RequiredDevices: []string{"camera"}, + MountDevicesIntoContainer: true, + Variables: []BrickVariable{ + { + Name: "REQUIRED_VAR", + DefaultValue: "", + Description: "A required variable", + }, + { + Name: "OPTIONAL_VAR", + DefaultValue: "default_value", + Description: "An optional variable", + }, + }, + Ports: []string{"7000", "8080"}, + ModelName: "a-complex-model", + }, + }, + }, + } - // Check if ports are correctly set - b, found := index.FindBrickByID("arduino:web_ui") - require.True(t, found) - require.Equal(t, []string{"7000"}, b.Ports) + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + tempDir := t.TempDir() + brickIndex := paths.New(tempDir, "bricks-list.yaml") + err := os.WriteFile(brickIndex.String(), []byte(tc.yamlContent), 0600) + require.NoError(t, err) - // Check if variables are correctly set - b, found = index.FindBrickByID("arduino:image_classification") - require.True(t, found) - require.Equal(t, "Image Classification", b.Name) - require.Equal(t, "mobilenet-image-classification", b.ModelName) - require.True(t, b.RequireModel) - require.Len(t, b.Variables, 2) - require.Equal(t, "CUSTOM_MODEL_PATH", b.Variables[0].Name) - require.Equal(t, "/opt/models/ei/", b.Variables[0].DefaultValue) - require.Equal(t, "path to the custom model directory", b.Variables[0].Description) - require.Equal(t, "EI_CLASSIFICATION_MODEL", b.Variables[1].Name) - require.Equal(t, "/models/ootb/ei/mobilenet-v2-224px.eim", b.Variables[1].DefaultValue) - require.Equal(t, "path to the model file", b.Variables[1].Description) - require.False(t, b.Variables[0].IsRequired()) - require.False(t, b.Variables[1].IsRequired()) + index, err := Load(paths.New(tempDir)) + if tc.expectedError != "" { + require.Error(t, err) + require.Contains(t, err.Error(), tc.expectedError) + } else { + require.NoError(t, err) + require.Equal(t, index.Bricks, tc.expectedBricks, "bricsk mistmatch") + } + }) + } } diff --git a/internal/orchestrator/bricksindex/testdata/bricks-list.yaml b/internal/orchestrator/bricksindex/testdata/bricks-list.yaml new file mode 100644 index 000000000..6af413a53 --- /dev/null +++ b/internal/orchestrator/bricksindex/testdata/bricks-list.yaml @@ -0,0 +1,158 @@ +bricks: +- id: arduino:image_classification + name: Image Classification + description: "Brick for image classification using a pre-trained model. It processes\ + \ images and returns the predicted class label and confidence score.\nBrick is\ + \ designed to work with pre-trained models provided by framework or with custom\ + \ image classification models trained on Edge Impulse platform. \n" + require_container: true + require_model: true + ports: [] + model_name: mobilenet-image-classification + variables: + - name: CUSTOM_MODEL_PATH + default_value: /opt/models/ei/ + description: path to the custom model directory + - name: EI_CLASSIFICATION_MODEL + default_value: /models/ootb/ei/mobilenet-v2-224px.eim + description: path to the model file +- id: arduino:camera_scanner + name: Camera Scanner + description: Scans a camera for barcodes and QR codes + require_container: false + require_model: false + ports: [] +- id: arduino:streamlit_ui + name: Streamlit UI + description: A simplified user interface based on Streamlit and Python. + require_container: false + require_model: false + ports: + - 7000 +- id: arduino:keyword_spotter + name: Keyword Spotter + description: 'Brick for keyword spotting using a pre-trained model. It processes + audio input to detect specific keywords or phrases. + + Brick is designed to work with pre-trained models provided by framework or with + custom audio classification models trained on Edge Impulse platform. + + ' + require_container: true + require_model: true + ports: [] + model_name: keyword-spotting-hello-world + variables: + - name: CUSTOM_MODEL_PATH + default_value: /opt/models/ei/ + description: path to the custom model directory + - name: EI_KEYWORK_SPOTTING_MODEL + default_value: /models/ootb/ei/keyword-spotting-hello-world.eim + description: path to the model file +- id: arduino:mqtt + name: MQTT Connector + description: MQTT connector module. Acts as a client for receiving and publishing + messages to an MQTT broker. + require_container: false + require_model: false + ports: [] +- id: arduino:web_ui + name: Web UI + description: A user interface based on HTML and JavaScript that can rely on additional + APIs and a WebSocket exposed by a web server. + require_container: false + require_model: false + ports: + - 7000 +- id: arduino:dbstorage_tsstore + name: Database Storage - Time Series Store + description: Simplified time series database storage layer for Arduino sensor samples + built on top of InfluxDB. + require_container: true + require_model: false + ports: [] + variables: + - name: APP_HOME + default_value: . + - name: DB_PASSWORD + default_value: Arduino15 + description: Database password + - name: DB_USERNAME + default_value: admin + description: Edge Impulse project API key + - name: INFLUXDB_ADMIN_TOKEN + default_value: 392edbf2-b8a2-481f-979d-3f188b2c05f0 + description: InfluxDB admin token +- id: arduino:dbstorage_sqlstore + name: Database Storage - SQLStore + description: Simplified database storage layer for Arduino sensor data using SQLite + local database. + require_container: false + require_model: false + ports: [] +- id: arduino:object_detection + name: Object Detection + description: "Brick for object detection using a pre-trained model. It processes\ + \ images and returns the predicted class label, bounding-boxes and confidence\ + \ score.\nBrick is designed to work with pre-trained models provided by framework\ + \ or with custom object detection models trained on Edge Impulse platform. \n" + require_container: true + require_model: true + ports: [] + model_name: yolox-object-detection + variables: + - name: CUSTOM_MODEL_PATH + default_value: /opt/models/ei/ + description: path to the custom model directory + - name: EI_OBJ_DETECTION_MODEL + default_value: /models/ootb/ei/yolo-x-nano.eim + description: path to the model file +- id: arduino:weather_forecast + name: Weather Forecast + description: Online weather forecast module for Arduino using open-meteo.com geolocation + and weather APIs. Requires an internet connection. + require_container: false + require_model: false + ports: [] +- id: arduino:visual_anomaly_detection + name: Visual Anomaly Detection + description: "Brick for visual anomaly detection using a pre-trained model. It processes\ + \ images and returns detected anomalies and bounding-boxes.\nBrick is designed\ + \ to work with pre-trained models provided by framework or with custom object\ + \ detection models trained on Edge Impulse platform. \n" + require_container: true + require_model: true + ports: [] + model_name: concreate-crack-anomaly-detection + variables: + - name: CUSTOM_MODEL_PATH + default_value: /opt/models/ei/ + description: path to the custom model directory + - name: EI_V_ANOMALY_DETECTION_MODEL + default_value: /models/ootb/ei/concrete-crack-anomaly-detection.eim + description: path to the model file +- id: arduino:missing-model-require + name: Camera Scanner + description: Scans a camera for barcodes and QR codes + require_container: false + ports: [] +- id: arduino:model_required + name: Model Required Brick + description: A brick that requires a model + require_model: true +- id: arduino:with-hidden-variables + name: Visual Anomaly Detection + description: "Brick with hidden variables" + variables: + - name: HIDDEN_VARIABLE + default_value: a_hidden_value + description: this variable is hidden + hidden: true + - name: VISIBLE_VARIABLE + default_value: a_visible_value + description: this variable is visible because 'hidden' is set to false + hidden: false + - name: VISIBLE_VARIABLE_IF_MISSING_HIDDEN + default_value: another_visible_value + description: this variable is visiable because 'hidden' field is missing + hidden: false diff --git a/internal/orchestrator/cache.go b/internal/orchestrator/cache.go new file mode 100644 index 000000000..b4134ff68 --- /dev/null +++ b/internal/orchestrator/cache.go @@ -0,0 +1,41 @@ +package orchestrator + +import ( + "context" + "errors" + + "github.com/docker/cli/cli/command" + + "github.com/arduino/arduino-app-cli/internal/orchestrator/app" +) + +type CleanAppCacheRequest struct { + ForceClean bool +} + +var ErrCleanCacheRunningApp = errors.New("cannot remove cache of a running app") + +// CleanAppCache removes the `.cache` folder. If it detects that the app is running +// it tries to stop it first. +func CleanAppCache( + ctx context.Context, + docker command.Cli, + app app.ArduinoApp, + req CleanAppCacheRequest, +) error { + runningApp, err := getRunningApp(ctx, docker.Client()) + if err != nil { + return err + } + if runningApp != nil && runningApp.FullPath.EqualsTo(app.FullPath) { + if !req.ForceClean { + return ErrCleanCacheRunningApp + } + // We try to remove docker related resources at best effort + for range StopAndDestroyApp(ctx, docker, app) { + // just consume the iterator + } + } + + return app.ProvisioningStateDir().RemoveAll() +} diff --git a/internal/orchestrator/config/config.go b/internal/orchestrator/config/config.go index 0838f29d5..16ce6a98d 100644 --- a/internal/orchestrator/config/config.go +++ b/internal/orchestrator/config/config.go @@ -28,7 +28,7 @@ import ( ) // runnerVersion do not edit, this is generate with `task generate:assets` -var runnerVersion = "0.5.0" +var runnerVersion = "0.6.2" type Configuration struct { appsDir *paths.Path diff --git a/internal/orchestrator/helpers.go b/internal/orchestrator/helpers.go index 5a637b078..3b94b6542 100644 --- a/internal/orchestrator/helpers.go +++ b/internal/orchestrator/helpers.go @@ -193,7 +193,7 @@ func getRunningApp( if idx == -1 { return nil, nil } - app, err := app.Load(apps[idx].AppPath.String()) + app, err := app.Load(apps[idx].AppPath) if err != nil { return nil, fmt.Errorf("failed to load running app: %w", err) } diff --git a/internal/orchestrator/modelsindex/models_index.go b/internal/orchestrator/modelsindex/models_index.go index a966a678b..c24eb203e 100644 --- a/internal/orchestrator/modelsindex/models_index.go +++ b/internal/orchestrator/modelsindex/models_index.go @@ -48,31 +48,32 @@ type AIModel struct { ModuleDescription string `yaml:"description"` Runner string `yaml:"runner"` Bricks []string `yaml:"bricks,omitempty"` + ModelLabels []string `yaml:"model_labels,omitempty"` Metadata map[string]string `yaml:"metadata,omitempty"` ModelConfiguration map[string]string `yaml:"model_configuration,omitempty"` } type ModelsIndex struct { - models []AIModel + Models []AIModel } func (m *ModelsIndex) GetModels() []AIModel { - return m.models + return m.Models } func (m *ModelsIndex) GetModelByID(id string) (*AIModel, bool) { - idx := slices.IndexFunc(m.models, func(v AIModel) bool { return v.ID == id }) + idx := slices.IndexFunc(m.Models, func(v AIModel) bool { return v.ID == id }) if idx == -1 { return nil, false } - return &m.models[idx], true + return &m.Models[idx], true } func (m *ModelsIndex) GetModelsByBrick(brick string) []AIModel { var matches []AIModel - for i := range m.models { - if len(m.models[i].Bricks) > 0 && slices.Contains(m.models[i].Bricks, brick) { - matches = append(matches, m.models[i]) + for i := range m.Models { + if len(m.Models[i].Bricks) > 0 && slices.Contains(m.Models[i].Bricks, brick) { + matches = append(matches, m.Models[i]) } } if len(matches) == 0 { @@ -83,7 +84,7 @@ func (m *ModelsIndex) GetModelsByBrick(brick string) []AIModel { func (m *ModelsIndex) GetModelsByBricks(bricks []string) []AIModel { var matchingModels []AIModel - for _, model := range m.models { + for _, model := range m.Models { for _, modelBrick := range model.Bricks { if slices.Contains(bricks, modelBrick) { matchingModels = append(matchingModels, model) @@ -94,7 +95,7 @@ func (m *ModelsIndex) GetModelsByBricks(bricks []string) []AIModel { return matchingModels } -func GenerateModelsIndexFromFile(dir *paths.Path) (*ModelsIndex, error) { +func Load(dir *paths.Path) (*ModelsIndex, error) { content, err := dir.Join("models-list.yaml").ReadFile() if err != nil { return nil, err @@ -112,5 +113,5 @@ func GenerateModelsIndexFromFile(dir *paths.Path) (*ModelsIndex, error) { models[i] = model } } - return &ModelsIndex{models: models}, nil + return &ModelsIndex{Models: models}, nil } diff --git a/internal/orchestrator/modelsindex/modelsindex_test.go b/internal/orchestrator/modelsindex/modelsindex_test.go new file mode 100644 index 000000000..7f7603903 --- /dev/null +++ b/internal/orchestrator/modelsindex/modelsindex_test.go @@ -0,0 +1,72 @@ +package modelsindex + +import ( + "testing" + + "github.com/arduino/go-paths-helper" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestModelsIndex(t *testing.T) { + modelsIndex, err := Load(paths.New("testdata")) + require.NoError(t, err) + require.NotNil(t, modelsIndex) + + t.Run("it parses a valid model-list.yaml", func(t *testing.T) { + models := modelsIndex.GetModels() + assert.Len(t, models, 2, "Expected 2 models to be parsed") + }) + + t.Run("it gets a model by ID", func(t *testing.T) { + model, found := modelsIndex.GetModelByID("not-existing-model") + assert.False(t, found) + assert.Nil(t, model) + + model, found = modelsIndex.GetModelByID("face-detection") + assert.Equal(t, "brick", model.Runner) + require.True(t, found, "face-detection should be found") + assert.Equal(t, "face-detection", model.ID) + assert.Equal(t, "Lightweight-Face-Detection", model.Name) + assert.Equal(t, "Face bounding box detection. This model is trained on the WIDER FACE dataset and can detect faces in images.", model.ModuleDescription) + assert.Equal(t, []string{"face"}, model.ModelLabels) + assert.Equal(t, "/models/ootb/ei/lw-face-det.eim", model.ModelConfiguration["EI_OBJ_DETECTION_MODEL"]) + assert.Equal(t, []string{"arduino:object_detection", "arduino:video_object_detection"}, model.Bricks) + assert.Equal(t, "qualcomm-ai-hub", model.Metadata["source"]) + assert.Equal(t, "false", model.Metadata["ei-gpu-mode"]) + assert.Equal(t, "face-det-lite", model.Metadata["source-model-id"]) + assert.Equal(t, "https://aihub.qualcomm.com/models/face_det_lite", model.Metadata["source-model-url"]) + }) + + t.Run("it fails if model-list.yaml does not exist", func(t *testing.T) { + nonExistentPath := paths.New("nonexistentdir") + modelsIndex, err := Load(nonExistentPath) + assert.Error(t, err) + assert.Nil(t, modelsIndex) + }) + + t.Run("it gets models by a brick", func(t *testing.T) { + model := modelsIndex.GetModelsByBrick("not-existing-brick") + assert.Nil(t, model) + + model = modelsIndex.GetModelsByBrick("arduino:object_detection") + assert.Len(t, model, 1) + assert.Equal(t, "face-detection", model[0].ID) + }) + + t.Run("it gets models by bricks", func(t *testing.T) { + models := modelsIndex.GetModelsByBricks([]string{"arduino:non_existing"}) + assert.Len(t, models, 0) + assert.Nil(t, models) + + models = modelsIndex.GetModelsByBricks([]string{"arduino:video_object_detection"}) + assert.Len(t, models, 2) + assert.Equal(t, "face-detection", models[0].ID) + assert.Equal(t, "yolox-object-detection", models[1].ID) + + models = modelsIndex.GetModelsByBricks([]string{"arduino:object_detection", "arduino:video_object_detection"}) + assert.Len(t, models, 2) + assert.Equal(t, "face-detection", models[0].ID) + assert.Equal(t, "yolox-object-detection", models[1].ID) + }) +} diff --git a/internal/orchestrator/modelsindex/testdata/models-list.yaml b/internal/orchestrator/modelsindex/testdata/models-list.yaml new file mode 100644 index 000000000..7d0aefb5c --- /dev/null +++ b/internal/orchestrator/modelsindex/testdata/models-list.yaml @@ -0,0 +1,111 @@ +models: + - face-detection: + runner: brick + name : "Lightweight-Face-Detection" + description: "Face bounding box detection. This model is trained on the WIDER FACE dataset and can detect faces in images." + model_configuration: + "EI_OBJ_DETECTION_MODEL": "/models/ootb/ei/lw-face-det.eim" + model_labels: + - face + bricks: + - arduino:object_detection + - arduino:video_object_detection + metadata: + source: "qualcomm-ai-hub" + ei-gpu-mode: false + source-model-id: "face-det-lite" + source-model-url: "https://aihub.qualcomm.com/models/face_det_lite" + - yolox-object-detection: + runner: brick + name : "General purpose object detection - YoloX" + description: "General purpose object detection model based on YoloX Nano. This model is trained on the COCO dataset and can detect 80 different object classes." + model_configuration: + "EI_OBJ_DETECTION_MODEL": "/models/ootb/ei/yolo-x-nano.eim" + model_labels: + - airplane + - apple + - backpack + - banana + - baseball bat + - baseball glove + - bear + - bed + - bench + - bicycle + - bird + - boat + - book + - bottle + - bowl + - broccoli + - bus + - cake + - car + - carrot + - cat + - cell phone + - chair + - clock + - couch + - cow + - cup + - dining table + - dog + - donut + - elephant + - fire hydrant + - fork + - frisbee + - giraffe + - hair drier + - handbag + - hot dog + - horse + - keyboard + - kite + - knife + - laptop + - microwave + - motorcycle + - mouse + - orange + - oven + - parking meter + - person + - pizza + - potted plant + - refrigerator + - remote + - sandwich + - scissors + - sheep + - sink + - skateboard + - skis + - snowboard + - spoon + - sports ball + - stop sign + - suitcase + - surfboard + - teddy bear + - tennis racket + - tie + - toaster + - toilet + - toothbrush + - traffic light + - train + - truck + - tv + - umbrella + - vase + - wine glass + - zebra + metadata: + source: "edgeimpulse" + ei-project-id: 717280 + source-model-id: "YOLOX-Nano" + source-model-url: "https://github.com/Megvii-BaseDetection/YOLOX" + bricks: + - arduino:video_object_detection diff --git a/internal/orchestrator/orchestrator.go b/internal/orchestrator/orchestrator.go index 41890fa41..8eb260017 100644 --- a/internal/orchestrator/orchestrator.go +++ b/internal/orchestrator/orchestrator.go @@ -114,7 +114,7 @@ func StartApp( provisioner *Provision, modelsIndex *modelsindex.ModelsIndex, bricksIndex *bricksindex.BricksIndex, - app app.ArduinoApp, + appToStart app.ArduinoApp, cfg config.Configuration, staticStore *store.StaticStore, ) iter.Seq[StreamMessage] { @@ -122,6 +122,12 @@ func StartApp( ctx, cancel := context.WithCancel(ctx) defer cancel() + err := app.ValidateBricks(appToStart.Descriptor, bricksIndex) + if err != nil { + yield(StreamMessage{error: err}) + return + } + running, err := getRunningApp(ctx, docker.Client()) if err != nil { yield(StreamMessage{error: err}) @@ -131,6 +137,9 @@ func StartApp( yield(StreamMessage{error: fmt.Errorf("app %q is running", running.Name)}) return } + if !yield(StreamMessage{data: fmt.Sprintf("Starting app %q", appToStart.Name)}) { + return + } if err := setStatusLeds(LedTriggerNone); err != nil { slog.Debug("unable to set status leds", slog.String("error", err.Error())) @@ -145,11 +154,12 @@ func StartApp( if !yield(StreamMessage{progress: &Progress{Name: "preparing", Progress: 0.0}}) { return } - if app.MainSketchPath != nil { + + if _, ok := appToStart.GetSketchPath(); ok { if !yield(StreamMessage{progress: &Progress{Name: "sketch compiling and uploading", Progress: 0.0}}) { return } - if err := compileUploadSketch(ctx, &app, sketchCallbackWriter); err != nil { + if err := compileUploadSketch(ctx, &appToStart, sketchCallbackWriter); err != nil { yield(StreamMessage{error: err}) return } @@ -158,15 +168,15 @@ func StartApp( } } - if app.MainPythonFile != nil { - envs := getAppEnvironmentVariables(app, bricksIndex, modelsIndex) + if appToStart.MainPythonFile != nil { + envs := getAppEnvironmentVariables(appToStart, bricksIndex, modelsIndex) if !yield(StreamMessage{data: "python provisioning"}) { cancel() return } provisionStartProgress := float32(0.0) - if app.MainSketchPath != nil { + if _, ok := appToStart.GetSketchPath(); ok { provisionStartProgress = 10.0 } @@ -174,7 +184,7 @@ func StartApp( return } - if err := provisioner.App(ctx, bricksIndex, &app, cfg, envs, staticStore); err != nil { + if err := provisioner.App(ctx, bricksIndex, &appToStart, cfg, envs, staticStore); err != nil { yield(StreamMessage{error: err}) return } @@ -185,10 +195,10 @@ func StartApp( } // Launch the docker compose command to start the app - overrideComposeFile := app.AppComposeOverrideFilePath() + overrideComposeFile := appToStart.AppComposeOverrideFilePath() commands := []string{} - commands = append(commands, "docker", "compose", "-f", app.AppComposeFilePath().String()) + commands = append(commands, "docker", "compose", "-f", appToStart.AppComposeFilePath().String()) if ok, _ := overrideComposeFile.ExistCheck(); ok { commands = append(commands, "-f", overrideComposeFile.String()) } @@ -374,11 +384,14 @@ func getVideoDevices() map[int]string { return deviceMap } -func stopAppWithCmd(ctx context.Context, app app.ArduinoApp, cmd string) iter.Seq[StreamMessage] { +func stopAppWithCmd(ctx context.Context, docker command.Cli, app app.ArduinoApp, cmd string) iter.Seq[StreamMessage] { return func(yield func(StreamMessage) bool) { ctx, cancel := context.WithCancel(ctx) defer cancel() + if !yield(StreamMessage{data: fmt.Sprintf("Stopping app %q", app.Name)}) { + return + } if err := setStatusLeds(LedTriggerDefault); err != nil { slog.Debug("unable to set status leds", slog.String("error", err.Error())) } @@ -389,8 +402,18 @@ func stopAppWithCmd(ctx context.Context, app app.ArduinoApp, cmd string) iter.Se return } }) - if app.MainSketchPath != nil { - // TODO: check that the app sketch is running before attempting to stop it. + + if _, ok := app.GetSketchPath(); ok { + // Before stopping the microcontroller we want to make sure that the app was running. + appStatus, err := getAppStatus(ctx, docker, app) + if err != nil { + yield(StreamMessage{error: err}) + return + } + if appStatus.Status != StatusStarting && appStatus.Status != StatusRunning { + yield(StreamMessage{data: fmt.Sprintf("app %q is not running", app.Name)}) + return + } if err := micro.Disable(); err != nil { yield(StreamMessage{error: err}) @@ -419,12 +442,52 @@ func stopAppWithCmd(ctx context.Context, app app.ArduinoApp, cmd string) iter.Se } } -func StopApp(ctx context.Context, app app.ArduinoApp) iter.Seq[StreamMessage] { - return stopAppWithCmd(ctx, app, "stop") +func StopApp(ctx context.Context, dockerClient command.Cli, app app.ArduinoApp) iter.Seq[StreamMessage] { + return stopAppWithCmd(ctx, dockerClient, app, "stop") } -func StopAndDestroyApp(ctx context.Context, app app.ArduinoApp) iter.Seq[StreamMessage] { - return stopAppWithCmd(ctx, app, "down") +func StopAndDestroyApp(ctx context.Context, dockerClient command.Cli, app app.ArduinoApp) iter.Seq[StreamMessage] { + return stopAppWithCmd(ctx, dockerClient, app, "down") +} + +func RestartApp( + ctx context.Context, + docker command.Cli, + provisioner *Provision, + modelsIndex *modelsindex.ModelsIndex, + bricksIndex *bricksindex.BricksIndex, + appToStart app.ArduinoApp, + cfg config.Configuration, + staticStore *store.StaticStore, +) iter.Seq[StreamMessage] { + return func(yield func(StreamMessage) bool) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + runningApp, err := getRunningApp(ctx, docker.Client()) + if err != nil { + yield(StreamMessage{error: err}) + return + } + + if runningApp != nil { + if runningApp.FullPath.String() != appToStart.FullPath.String() { + yield(StreamMessage{error: fmt.Errorf("another app %q is running", runningApp.Name)}) + return + } + + stopStream := StopApp(ctx, docker, *runningApp) + for msg := range stopStream { + if !yield(msg) { + return + } + if msg.error != nil { + return + } + } + } + startStream := StartApp(ctx, docker, provisioner, modelsIndex, bricksIndex, appToStart, cfg, staticStore) + startStream(yield) + } } func StartDefaultApp( @@ -551,7 +614,7 @@ func ListApps( } for _, file := range appPaths { - app, err := app.Load(file.String()) + app, err := app.Load(file) if err != nil { result.BrokenApps = append(result.BrokenApps, BrokenAppInfo{ Name: file.Base(), @@ -610,9 +673,10 @@ type AppDetailedInfo struct { } type AppDetailedBrick struct { - ID string `json:"id" required:"true"` - Name string `json:"name" required:"true"` - Category string `json:"category,omitempty"` + ID string `json:"id" required:"true"` + Name string `json:"name" required:"true"` + Category string `json:"category,omitempty"` + RequireModel bool `json:"require_model"` } func AppDetails( @@ -675,6 +739,7 @@ func AppDetails( } res.Name = bi.Name res.Category = bi.Category + res.RequireModel = bi.RequireModel return res }), }, nil @@ -684,7 +749,6 @@ type CreateAppRequest struct { Name string Icon string Description string - SkipPython bool SkipSketch bool } @@ -698,9 +762,6 @@ func CreateApp( idProvider *app.IDProvider, cfg config.Configuration, ) (CreateAppResponse, error) { - if req.SkipPython && req.SkipSketch { - return CreateAppResponse{}, fmt.Errorf("cannot skip both python and sketch") - } if req.Name == "" { return CreateAppResponse{}, fmt.Errorf("app name cannot be empty") } @@ -719,16 +780,8 @@ func CreateApp( if err := newApp.IsValid(); err != nil { return CreateAppResponse{}, fmt.Errorf("%w: %v", app.ErrInvalidApp, err) } - var options appgenerator.Opts = 0 - if req.SkipSketch { - options |= appgenerator.SkipSketch - } - if req.SkipPython { - options |= appgenerator.SkipPython - } - - if err := appgenerator.GenerateApp(basePath, newApp, options); err != nil { + if err := appgenerator.GenerateApp(basePath, newApp, req.SkipSketch); err != nil { return CreateAppResponse{}, fmt.Errorf("failed to create app: %w", err) } id, err := idProvider.IDFromPath(basePath) @@ -842,12 +895,19 @@ func CloneApp( return CloneAppResponse{ID: id}, nil } -func DeleteApp(ctx context.Context, app app.ArduinoApp) error { - for msg := range StopApp(ctx, app) { - if msg.error != nil { - return fmt.Errorf("failed to stop app: %w", msg.error) +func DeleteApp(ctx context.Context, dockerClient command.Cli, app app.ArduinoApp) error { + + runningApp, err := getRunningApp(ctx, dockerClient.Client()) + if err != nil { + return err + } + if runningApp != nil && runningApp.FullPath.EqualsTo(app.FullPath) { + // We try to remove docker related resources at best effort + for range StopAndDestroyApp(ctx, dockerClient, app) { + // just consume the iterator } } + return app.FullPath.RemoveAll() } @@ -886,7 +946,7 @@ func GetDefaultApp(cfg config.Configuration) (*app.ArduinoApp, error) { return nil, nil } - app, err := app.Load(string(defaultAppPath)) + app, err := app.Load(paths.New(string(defaultAppPath))) if err != nil { // If the app is not valid, we remove the file slog.Warn("default app is not valid", slog.String("path", string(defaultAppPath)), slog.String("error", err.Error())) @@ -1078,8 +1138,6 @@ func compileUploadSketch( arduinoApp *app.ArduinoApp, w io.Writer, ) error { - const fqbn = "arduino:zephyr:unoq" - logrus.SetLevel(logrus.ErrorLevel) // Reduce the log level of arduino-cli srv := commands.NewArduinoCoreServer() @@ -1093,17 +1151,23 @@ func compileUploadSketch( defer func() { _, _ = srv.Destroy(ctx, &rpc.DestroyRequest{Instance: inst}) }() - sketchPath := arduinoApp.MainSketchPath.String() + sketchPath, ok := arduinoApp.GetSketchPath() + if !ok { + return fmt.Errorf("no sketch path found in the Arduino app") + } buildPath := arduinoApp.SketchBuildPath().String() - sketchResp, err := srv.LoadSketch(ctx, &rpc.LoadSketchRequest{SketchPath: sketchPath}) + sketchResp, err := srv.LoadSketch(ctx, &rpc.LoadSketchRequest{SketchPath: sketchPath.String()}) if err != nil { return err } sketch := sketchResp.GetSketch() profile := sketch.GetDefaultProfile().GetName() + if profile == "" { + return fmt.Errorf("sketch %q has no default profile", sketchPath) + } initReq := &rpc.InitRequest{ Instance: inst, - SketchPath: sketchPath, + SketchPath: sketchPath.String(), Profile: profile, } @@ -1123,8 +1187,8 @@ func compileUploadSketch( response = "Error: " + msg.Error.String() case *rpc.InitResponse_Profile: response = fmt.Sprintf( - "Sketch profile configured: FQBN=%q, Port=%q", - msg.Profile.GetFqbn(), + "Sketch profile configured: Name=%q, Port=%q", + msg.Profile.GetName(), msg.Profile.GetPort(), ) } @@ -1140,18 +1204,13 @@ func compileUploadSketch( // build the sketch server, getCompileResult := commands.CompilerServerToStreams(ctx, w, w, nil) - - // TODO: add build cache compileReq := rpc.CompileRequest{ Instance: inst, - Fqbn: fqbn, - SketchPath: sketchPath, + Fqbn: "arduino:zephyr:unoq", + SketchPath: sketchPath.String(), BuildPath: buildPath, Jobs: 2, } - if profile == "" { - compileReq.Libraries = []string{sketchPath + "/../../sketch-libraries"} - } err = srv.Compile(&compileReq, server) if err != nil { @@ -1174,12 +1233,67 @@ func compileUploadSketch( slog.Info("Used library " + lib.GetName() + " (" + lib.GetVersion() + ") in " + lib.GetInstallDir()) } + if err := uploadSketchInRam(ctx, w, srv, inst, sketchPath.String(), buildPath); err != nil { + slog.Warn("failed to upload in ram mode, trying to configure the board in ram mode, and retry", slog.String("error", err.Error())) + if err := configureMicroInRamMode(ctx, w, srv, inst); err != nil { + return err + } + return uploadSketchInRam(ctx, w, srv, inst, sketchPath.String(), buildPath) + } + return nil +} + +func uploadSketchInRam(ctx context.Context, + w io.Writer, + srv rpc.ArduinoCoreServiceServer, + inst *rpc.Instance, + sketchPath string, + buildPath string, +) error { stream, _ := commands.UploadToServerStreams(ctx, w, w) - return srv.Upload(&rpc.UploadRequest{ + if err := srv.Upload(&rpc.UploadRequest{ Instance: inst, - Fqbn: fqbn, + Fqbn: "arduino:zephyr:unoq:flash_mode=ram", SketchPath: sketchPath, ImportDir: buildPath, + }, stream); err != nil { + return err + } + return nil +} + +// configureMicroInRamMode uploads an empty binary overing any sketch previously uploaded in flash. +// This is required to be able to upload sketches in ram mode after if there is already a sketch in flash. +func configureMicroInRamMode( + ctx context.Context, + w io.Writer, + srv rpc.ArduinoCoreServiceServer, + inst *rpc.Instance, +) error { + emptyBinDir := paths.New("/tmp/empty") + _ = emptyBinDir.MkdirAll() + defer func() { _ = emptyBinDir.RemoveAll() }() + + zeros, err := os.Open("/dev/zero") + if err != nil { + return err + } + defer zeros.Close() + + empty, err := emptyBinDir.Join("empty.ino.elf-zsk.bin").Create() + if err != nil { + return err + } + defer empty.Close() + if _, err := io.CopyN(empty, zeros, 50); err != nil { + return err + } + + stream, _ := commands.UploadToServerStreams(ctx, w, w) + return srv.Upload(&rpc.UploadRequest{ + Instance: inst, + Fqbn: "arduino:zephyr:unoq:flash_mode=flash", + ImportDir: emptyBinDir.String(), }, stream) } diff --git a/internal/orchestrator/orchestrator_test.go b/internal/orchestrator/orchestrator_test.go index 223b47058..ab42d2872 100644 --- a/internal/orchestrator/orchestrator_test.go +++ b/internal/orchestrator/orchestrator_test.go @@ -90,7 +90,7 @@ func TestCloneApp(t *testing.T) { }) // The app.yaml will have the name set to the new-name - clonedApp := f.Must(app.Load(appDir.String())) + clonedApp := f.Must(app.Load(appDir)) require.Equal(t, "new-name", clonedApp.Name) }) t.Run("with icon", func(t *testing.T) { @@ -108,7 +108,7 @@ func TestCloneApp(t *testing.T) { }) // The app.yaml will have the icon set to 🦄 - clonedApp := f.Must(app.Load(appDir.String())) + clonedApp := f.Must(app.Load(appDir)) require.Equal(t, "with-icon", clonedApp.Name) require.Equal(t, "🦄", clonedApp.Descriptor.Icon) }) @@ -164,7 +164,7 @@ func TestEditApp(t *testing.T) { appDir := cfg.AppsDir().Join("app-default") t.Run("previously not default", func(t *testing.T) { - app := f.Must(app.Load(appDir.String())) + app := f.Must(app.Load(appDir)) previousDefaultApp, err := GetDefaultApp(cfg) require.NoError(t, err) @@ -178,7 +178,7 @@ func TestEditApp(t *testing.T) { require.True(t, appDir.EquivalentTo(currentDefaultApp.FullPath)) }) t.Run("previously default", func(t *testing.T) { - app := f.Must(app.Load(appDir.String())) + app := f.Must(app.Load(appDir)) err := SetDefaultApp(&app, cfg) require.NoError(t, err) @@ -200,12 +200,12 @@ func TestEditApp(t *testing.T) { _, err := CreateApp(t.Context(), CreateAppRequest{Name: originalAppName}, idProvider, cfg) require.NoError(t, err) appDir := cfg.AppsDir().Join(originalAppName) - userApp := f.Must(app.Load(appDir.String())) + userApp := f.Must(app.Load(appDir)) originalPath := userApp.FullPath err = EditApp(AppEditRequest{Name: f.Ptr("new-name")}, &userApp, cfg) require.NoError(t, err) - editedApp, err := app.Load(cfg.AppsDir().Join("new-name").String()) + editedApp, err := app.Load(cfg.AppsDir().Join("new-name")) require.NoError(t, err) require.Equal(t, "new-name", editedApp.Name) require.True(t, originalPath.NotExist()) // The original app directory should be removed after renaming @@ -215,7 +215,7 @@ func TestEditApp(t *testing.T) { _, err := CreateApp(t.Context(), CreateAppRequest{Name: existingAppName}, idProvider, cfg) require.NoError(t, err) appDir := cfg.AppsDir().Join(existingAppName) - existingApp := f.Must(app.Load(appDir.String())) + existingApp := f.Must(app.Load(appDir)) err = EditApp(AppEditRequest{Name: f.Ptr(existingAppName)}, &existingApp, cfg) require.ErrorIs(t, err, ErrAppAlreadyExists) @@ -227,14 +227,14 @@ func TestEditApp(t *testing.T) { _, err := CreateApp(t.Context(), CreateAppRequest{Name: commonAppName}, idProvider, cfg) require.NoError(t, err) commonAppDir := cfg.AppsDir().Join(commonAppName) - commonApp := f.Must(app.Load(commonAppDir.String())) + commonApp := f.Must(app.Load(commonAppDir)) err = EditApp(AppEditRequest{ Icon: f.Ptr("💻"), Description: f.Ptr("new desc"), }, &commonApp, cfg) require.NoError(t, err) - editedApp := f.Must(app.Load(commonAppDir.String())) + editedApp := f.Must(app.Load(commonAppDir)) require.Equal(t, "new desc", editedApp.Descriptor.Description) require.Equal(t, "💻", editedApp.Descriptor.Icon) }) @@ -427,7 +427,7 @@ func TestGetAppEnvironmentVariablesWithDefaults(t *testing.T) { require.NoError(t, err) appId := createApp(t, "app1", false, idProvider, cfg) - appDesc, err := app.Load(appId.ToPath().String()) + appDesc, err := app.Load(appId.ToPath()) require.NoError(t, err) appDesc.Descriptor.Bricks = []app.Brick{ { @@ -447,7 +447,6 @@ bricks: \ or with custom object detection models trained on Edge Impulse platform. \n" require_container: true require_model: true - require_devices: false ports: [] category: video model_name: yolox-object-detection @@ -461,7 +460,7 @@ bricks: `) err = cfg.AssetsDir().Join("bricks-list.yaml").WriteFile(bricksIndexContent) require.NoError(t, err) - bricksIndex, err := bricksindex.GenerateBricksIndexFromFile(cfg.AssetsDir()) + bricksIndex, err := bricksindex.Load(cfg.AssetsDir()) assert.NoError(t, err) modelsIndexContent := []byte(` @@ -483,7 +482,7 @@ models: `) err = cfg.AssetsDir().Join("models-list.yaml").WriteFile(modelsIndexContent) require.NoError(t, err) - modelIndex, err := modelsindex.GenerateModelsIndexFromFile(cfg.AssetsDir()) + modelIndex, err := modelsindex.Load(cfg.AssetsDir()) require.NoError(t, err) env := getAppEnvironmentVariables(appDesc, bricksIndex, modelIndex) @@ -512,7 +511,7 @@ func TestGetAppEnvironmentVariablesWithCustomModelOverrides(t *testing.T) { require.NoError(t, err) appId := createApp(t, "app1", false, idProvider, cfg) - appDesc, err := app.Load(appId.ToPath().String()) + appDesc, err := app.Load(appId.ToPath()) require.NoError(t, err) appDesc.Descriptor.Bricks = []app.Brick{ { @@ -533,7 +532,6 @@ bricks: \ or with custom object detection models trained on Edge Impulse platform. \n" require_container: true require_model: true - require_devices: false category: video model_name: yolox-object-detection variables: @@ -546,7 +544,7 @@ bricks: `) err = cfg.AssetsDir().Join("bricks-list.yaml").WriteFile(bricksIndexContent) require.NoError(t, err) - bricksIndex, err := bricksindex.GenerateBricksIndexFromFile(cfg.AssetsDir()) + bricksIndex, err := bricksindex.Load(cfg.AssetsDir()) assert.NoError(t, err) modelsIndexContent := []byte(` @@ -568,7 +566,7 @@ models: `) err = cfg.AssetsDir().Join("models-list.yaml").WriteFile(modelsIndexContent) require.NoError(t, err) - modelIndex, err := modelsindex.GenerateModelsIndexFromFile(cfg.AssetsDir()) + modelIndex, err := modelsindex.Load(cfg.AssetsDir()) require.NoError(t, err) env := getAppEnvironmentVariables(appDesc, bricksIndex, modelIndex) diff --git a/internal/orchestrator/provision.go b/internal/orchestrator/provision.go index 393fbc8ca..babac0ceb 100644 --- a/internal/orchestrator/provision.go +++ b/internal/orchestrator/provision.go @@ -236,39 +236,39 @@ func generateMainComposeFile( ports[fmt.Sprintf("%s:%s", p, p)] = struct{}{} } + // 2. Collect all the required device classes + if len(idxBrick.RequiredDevices) > 0 { + for _, deviceClass := range idxBrick.RequiredDevices { + requiredDeviceClasses[deviceClass] = true + } + } + // The following code is needed only if the brick requires a container. // In case it doesn't we just skip to the next one. if !idxBrick.RequireContainer { continue } - // 2. Retrieve the brick_compose.yaml file. + // 3. Retrieve the brick_compose.yaml file. composeFilePath, err := staticStore.GetBrickComposeFilePathFromID(brick.ID) if err != nil { slog.Error("brick compose id not valid", slog.String("error", err.Error()), slog.String("brick_id", brick.ID)) continue } - // 3. Retrieve the compose services names. + // 4. Retrieve the compose services names. svcs, err := extractServicesFromComposeFile(composeFilePath) if err != nil { slog.Error("loading brick_compose", slog.String("brick_id", brick.ID), slog.String("path", composeFilePath.String()), slog.Any("error", err)) continue } - // 4. Retrieve the required devices that we have to mount - slog.Debug("Brick config", slog.Bool("require_devices", idxBrick.MountDevicesIntoContainer), slog.Any("ports", ports), slog.Any("required_devices", idxBrick.RequiredDevices)) + // 5. Retrieve the required devices that we have to mount + slog.Debug("Brick config", slog.Bool("mount_devices_into_container", idxBrick.MountDevicesIntoContainer), slog.Any("ports", ports), slog.Any("required_devices", idxBrick.RequiredDevices)) if idxBrick.MountDevicesIntoContainer { servicesThatRequireDevices = slices.AppendSeq(servicesThatRequireDevices, maps.Keys(svcs)) } - // 5. Collect all the required device classes - if len(idxBrick.RequiredDevices) > 0 { - for _, deviceClass := range idxBrick.RequiredDevices { - requiredDeviceClasses[deviceClass] = true - } - } - composeFiles.Add(composeFilePath) maps.Insert(services, maps.All(svcs)) } @@ -335,6 +335,16 @@ func generateMainComposeFile( }) } } + if devices.hasSoundDevice { + // If we are adding sound devices, mount also /dev/snd/by-id if it exists to allow access to by-id links + if paths.New("/dev/snd/by-id").Exist() { + volumes = append(volumes, volume{ + Type: "bind", + Source: "/dev/snd/by-id", + Target: "/dev/snd/by-id", + }) + } + } volumes = addLedControl(volumes) diff --git a/internal/orchestrator/provision_test.go b/internal/orchestrator/provision_test.go index b2ca0bb0b..1bd7aa652 100644 --- a/internal/orchestrator/provision_test.go +++ b/internal/orchestrator/provision_test.go @@ -104,7 +104,7 @@ bricks: require.NoError(t, err) // Override brick index with custom test content - bricksIndex, err := bricksindex.GenerateBricksIndexFromFile(cfg.AssetsDir()) + bricksIndex, err := bricksindex.Load(cfg.AssetsDir()) require.Nil(t, err, "Failed to load bricks index with custom content") br, ok := bricksIndex.FindBrickByID("arduino:video_object_detection") @@ -301,7 +301,7 @@ bricks: err := cfg.AssetsDir().Join("bricks-list.yaml").WriteFile(bricksIndexContent) require.NoError(t, err) - bricksIndex, err := bricksindex.GenerateBricksIndexFromFile(cfg.AssetsDir()) + bricksIndex, err := bricksindex.Load(cfg.AssetsDir()) require.Nil(t, err, "Failed to load bricks index with custom content") br, ok := bricksIndex.FindBrickByID("arduino:dbstorage_tsstore") require.True(t, ok, "Brick arduino:dbstorage_tsstore should exist in the index") diff --git a/internal/orchestrator/sketch_libs.go b/internal/orchestrator/sketch_libs.go index d28c9ba8b..25be13717 100644 --- a/internal/orchestrator/sketch_libs.go +++ b/internal/orchestrator/sketch_libs.go @@ -17,6 +17,9 @@ package orchestrator import ( "context" + "errors" + "log/slog" + "time" "github.com/arduino/arduino-cli/commands" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" @@ -25,7 +28,14 @@ import ( "github.com/arduino/arduino-app-cli/internal/orchestrator/app" ) +const indexUpdateInterval = 10 * time.Minute + func AddSketchLibrary(ctx context.Context, app app.ArduinoApp, libRef LibraryReleaseID, addDeps bool) ([]LibraryReleaseID, error) { + sketchPath, ok := app.GetSketchPath() + if !ok { + return nil, errors.New("cannot add a library. Missing sketch folder") + } + srv := commands.NewArduinoCoreServer() var inst *rpc.Instance if res, err := srv.Create(ctx, &rpc.CreateRequest{}); err != nil { @@ -43,12 +53,21 @@ func AddSketchLibrary(ctx context.Context, app app.ArduinoApp, libRef LibraryRel return nil, err } + stream, _ := commands.UpdateLibrariesIndexStreamResponseToCallbackFunction(ctx, func(curr *rpc.DownloadProgress) { + slog.Debug("downloading library index", "progress", curr.GetMessage()) + }) + // update the local library index after a certain time, to avoid if a library is added to the sketch but the local library index is not update, the compile can fail (because the lib is not found) + req := &rpc.UpdateLibrariesIndexRequest{Instance: inst, UpdateIfOlderThanSecs: int64(indexUpdateInterval.Seconds())} + if err := srv.UpdateLibrariesIndex(req, stream); err != nil { + slog.Warn("error updating library index, skipping", slog.String("error", err.Error())) + } + resp, err := srv.ProfileLibAdd(ctx, &rpc.ProfileLibAddRequest{ Instance: inst, - SketchPath: app.MainSketchPath.String(), - Library: &rpc.SketchProfileLibraryReference{ - Library: &rpc.SketchProfileLibraryReference_IndexLibrary_{ - IndexLibrary: &rpc.SketchProfileLibraryReference_IndexLibrary{ + SketchPath: sketchPath.String(), + Library: &rpc.ProfileLibraryReference{ + Library: &rpc.ProfileLibraryReference_IndexLibrary_{ + IndexLibrary: &rpc.ProfileLibraryReference_IndexLibrary{ Name: libRef.Name, Version: libRef.Version, }, @@ -59,14 +78,19 @@ func AddSketchLibrary(ctx context.Context, app app.ArduinoApp, libRef LibraryRel if err != nil { return nil, err } + return f.Map(resp.GetAddedLibraries(), rpcProfileLibReferenceToLibReleaseID), nil } -func RemoveSketchLibrary(ctx context.Context, app app.ArduinoApp, libRef LibraryReleaseID) (LibraryReleaseID, error) { +func RemoveSketchLibrary(ctx context.Context, app app.ArduinoApp, libRef LibraryReleaseID, removeDeps bool) ([]LibraryReleaseID, error) { + sketchPath, ok := app.GetSketchPath() + if !ok { + return nil, errors.New("cannot remove a library. Missing sketch folder") + } srv := commands.NewArduinoCoreServer() var inst *rpc.Instance if res, err := srv.Create(ctx, &rpc.CreateRequest{}); err != nil { - return LibraryReleaseID{}, err + return nil, err } else { inst = res.Instance } @@ -77,49 +101,55 @@ func RemoveSketchLibrary(ctx context.Context, app app.ArduinoApp, libRef Library // TODO: LOG progress/error? return nil })); err != nil { - return LibraryReleaseID{}, err + return nil, err } resp, err := srv.ProfileLibRemove(ctx, &rpc.ProfileLibRemoveRequest{ - Library: &rpc.SketchProfileLibraryReference{ - Library: &rpc.SketchProfileLibraryReference_IndexLibrary_{ - IndexLibrary: &rpc.SketchProfileLibraryReference_IndexLibrary{ - Name: libRef.Name, + Instance: inst, + Library: &rpc.ProfileLibraryReference{ + Library: &rpc.ProfileLibraryReference_IndexLibrary_{ + IndexLibrary: &rpc.ProfileLibraryReference_IndexLibrary{ + Name: libRef.Name, + Version: libRef.Version, }, }, }, - SketchPath: app.MainSketchPath.String(), + RemoveDependencies: &removeDeps, + SketchPath: sketchPath.String(), }) if err != nil { - return LibraryReleaseID{}, err + return nil, err } - return rpcProfileLibReferenceToLibReleaseID(resp.GetLibrary()), nil + return f.Map(resp.GetRemovedLibraries(), rpcProfileLibReferenceToLibReleaseID), nil } func ListSketchLibraries(ctx context.Context, app app.ArduinoApp) ([]LibraryReleaseID, error) { + sketchPath, ok := app.GetSketchPath() + if !ok { + return nil, errors.New("cannot list libraries. Missing sketch folder") + } + srv := commands.NewArduinoCoreServer() resp, err := srv.ProfileLibList(ctx, &rpc.ProfileLibListRequest{ - SketchPath: app.MainSketchPath.String(), + SketchPath: sketchPath.String(), }) if err != nil { return nil, err } // Keep only index libraries - libs := f.Filter(resp.Libraries, func(l *rpc.SketchProfileLibraryReference) bool { + libs := f.Filter(resp.Libraries, func(l *rpc.ProfileLibraryReference) bool { return l.GetIndexLibrary() != nil }) - res := f.Map(libs, func(l *rpc.SketchProfileLibraryReference) LibraryReleaseID { - return LibraryReleaseID{ - Name: l.GetIndexLibrary().GetName(), - Version: l.GetIndexLibrary().GetVersion(), - } - }) - return res, nil + return f.Map(libs, rpcProfileLibReferenceToLibReleaseID), nil } -func rpcProfileLibReferenceToLibReleaseID(ref *rpc.SketchProfileLibraryReference) LibraryReleaseID { +func rpcProfileLibReferenceToLibReleaseID(ref *rpc.ProfileLibraryReference) LibraryReleaseID { l := ref.GetIndexLibrary() - return NewLibraryReleaseID(l.GetName(), l.GetVersion()) + return LibraryReleaseID{ + Name: l.GetName(), + Version: l.GetVersion(), + IsDependency: l.GetIsDependency(), + } } diff --git a/internal/orchestrator/sketch_libs_release_id.go b/internal/orchestrator/sketch_libs_release_id.go index ef068f46d..dec8b105a 100644 --- a/internal/orchestrator/sketch_libs_release_id.go +++ b/internal/orchestrator/sketch_libs_release_id.go @@ -27,8 +27,9 @@ import ( // - name[@version] // Version is optional, if not provided, the latest version available will be used. type LibraryReleaseID struct { - Name string - Version string + Name string + Version string + IsDependency bool } func NewLibraryReleaseID(name string, version string) LibraryReleaseID { diff --git a/internal/orchestrator/sketch_libs_test.go b/internal/orchestrator/sketch_libs_test.go new file mode 100644 index 000000000..dcd0731aa --- /dev/null +++ b/internal/orchestrator/sketch_libs_test.go @@ -0,0 +1,88 @@ +// This file is part of arduino-app-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-app-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package orchestrator + +import ( + "context" + "testing" + + "github.com/arduino/go-paths-helper" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/arduino/arduino-app-cli/internal/orchestrator/app" +) + +func TestListSketchLibraries(t *testing.T) { + t.Run("fail to list libraries if the sketch folder is missing", func(t *testing.T) { + pythonApp, err := app.Load(createTestAppPythonOnly(t)) + require.NoError(t, err) + + libs, err := ListSketchLibraries(context.Background(), pythonApp) + require.Error(t, err) + assert.Contains(t, err.Error(), "cannot list libraries. Missing sketch folder") + assert.Empty(t, libs) + }) + + t.Run("fail to add library if the sketch folder is missing", func(t *testing.T) { + pythonApp, err := app.Load(createTestAppPythonOnly(t)) + require.NoError(t, err) + + libs, err := AddSketchLibrary(context.Background(), pythonApp, LibraryReleaseID{}, false) + require.Error(t, err) + assert.Contains(t, err.Error(), "cannot add a library. Missing sketch folder") + assert.Empty(t, libs) + }) + + t.Run("fail to remove library if the sketch folder is missing", func(t *testing.T) { + pythonApp, err := app.Load(createTestAppPythonOnly(t)) + require.NoError(t, err) + + id, err := RemoveSketchLibrary(context.Background(), pythonApp, LibraryReleaseID{}, true) + require.Error(t, err) + assert.Contains(t, err.Error(), "cannot remove a library. Missing sketch folder") + assert.Empty(t, id) + }) +} + +// Helper function to create a test app without sketch path (Python-only) +func createTestAppPythonOnly(t *testing.T) *paths.Path { + tempDir := t.TempDir() + + appYaml := paths.New(tempDir, "app.yaml") + require.NoError(t, appYaml.WriteFile([]byte(` +name: test-python-app +version: 1.0.0 +description: Test Python-only app +`))) + + // Create python directory and file + pythonDir := paths.New(tempDir, "python") + require.NoError(t, pythonDir.MkdirAll()) + + pythonFile := pythonDir.Join("main.py") + require.NoError(t, pythonFile.WriteFile([]byte(` +import time + +def main(): + print("Hello from Python!") + time.sleep(1) + +if __name__ == "__main__": + main() +`))) + return paths.New(tempDir) +} diff --git a/internal/orchestrator/system.go b/internal/orchestrator/system.go index 341d6c55d..4d9f9a60b 100644 --- a/internal/orchestrator/system.go +++ b/internal/orchestrator/system.go @@ -235,7 +235,7 @@ func SystemCleanup(ctx context.Context, cfg config.Configuration, staticStore *s feedback.Warnf("failed to get running app - %v", err) } if runningApp != nil { - for item := range StopAndDestroyApp(ctx, *runningApp) { + for item := range StopAndDestroyApp(ctx, docker, *runningApp) { if item.GetType() == ErrorType { feedback.Warnf("failed to stop and destroy running app - %v", item.GetError()) break diff --git a/internal/update/apt/service.go b/internal/update/apt/service.go index f3d3984e3..860be68f6 100644 --- a/internal/update/apt/service.go +++ b/internal/update/apt/service.go @@ -25,7 +25,6 @@ import ( "regexp" "strings" "sync" - "time" "github.com/arduino/go-paths-helper" "go.bug.st/f" @@ -84,79 +83,55 @@ func (s *Service) UpgradePackages(ctx context.Context, names []string) (<-chan u defer s.lock.Unlock() defer close(eventsCh) - ctx, cancel := context.WithTimeout(ctx, 10*time.Minute) - defer cancel() - - eventsCh <- update.Event{Type: update.StartEvent, Data: "Upgrade is starting"} + eventsCh <- update.NewDataEvent(update.StartEvent, "Upgrade is starting") stream := runUpgradeCommand(ctx, names) for line, err := range stream { if err != nil { - eventsCh <- update.Event{ - Type: update.ErrorEvent, - Err: err, - Data: "Error running upgrade command", - } - slog.Error("error processing upgrade command output", "error", err) + eventsCh <- update.NewErrorEvent(fmt.Errorf("error running upgrade command: %w", err)) return } - eventsCh <- update.Event{Type: update.UpgradeLineEvent, Data: line} + eventsCh <- update.NewDataEvent(update.UpgradeLineEvent, line) } - eventsCh <- update.Event{Type: update.StartEvent, Data: "apt cleaning cache is starting"} + + eventsCh <- update.NewDataEvent(update.StartEvent, "apt cleaning cache is starting") for line, err := range runAptCleanCommand(ctx) { if err != nil { - eventsCh <- update.Event{ - Type: update.ErrorEvent, - Err: err, - Data: "Error running apt clean command", - } - slog.Error("error processing apt clean command output", "error", err) + eventsCh <- update.NewErrorEvent(fmt.Errorf("error running apt clean command: %w", err)) return } - eventsCh <- update.Event{Type: update.UpgradeLineEvent, Data: line} + eventsCh <- update.NewDataEvent(update.UpgradeLineEvent, line) } - // TEMPORARY PATCH: stopping and destroying docker containers and images since IDE does not implement it yet. - // TODO: Remove this workaround once IDE implements it. - // Tracking issue: https://github.com/arduino/arduino-app-cli/issues/623 - eventsCh <- update.Event{Type: update.UpgradeLineEvent, Data: "Stop and destroy docker containers and images ..."} + + eventsCh <- update.NewDataEvent(update.UpgradeLineEvent, "Stop and destroy docker containers and images ....") streamCleanup := cleanupDockerContainers(ctx) for line, err := range streamCleanup { if err != nil { // TODO: maybe we should retun an error or a better feedback to the user? // currently, we just log the error and continue considenring not blocking - slog.Error("Error stopping and destroying docker containers", "error", err) + slog.Warn("Error stopping and destroying docker containers", "error", err) + } else { + eventsCh <- update.NewDataEvent(update.UpgradeLineEvent, line) } - eventsCh <- update.Event{Type: update.UpgradeLineEvent, Data: line} } - // TEMPORARY PATCH: Install the latest docker images and show the logs to the users. // TODO: Remove this workaround once docker image versions are no longer hardcoded in arduino-app-cli. // Tracking issue: https://github.com/arduino/arduino-app-cli/issues/600 // Currently, we need to launch `arduino-app-cli system init` to pull the latest docker images because // the version of the docker images are hardcoded in the (new downloaded) version of the arduino-app-cli. - eventsCh <- update.Event{Type: update.UpgradeLineEvent, Data: "Pulling the latest docker images ..."} + eventsCh <- update.NewDataEvent(update.UpgradeLineEvent, "Pulling the latest docker images ...") streamDocker := pullDockerImages(ctx) for line, err := range streamDocker { if err != nil { - eventsCh <- update.Event{ - Type: update.ErrorEvent, - Err: err, - Data: "Error upgrading docker images", - } - slog.Error("error upgrading docker images", "error", err) + eventsCh <- update.NewErrorEvent(fmt.Errorf("error pulling docker images: %w", err)) return } - eventsCh <- update.Event{Type: update.UpgradeLineEvent, Data: line} + eventsCh <- update.NewDataEvent(update.UpgradeLineEvent, line) } - eventsCh <- update.Event{Type: update.RestartEvent, Data: "Upgrade completed. Restarting ..."} + eventsCh <- update.NewDataEvent(update.RestartEvent, "Upgrade completed. Restarting ...") err := restartServices(ctx) if err != nil { - eventsCh <- update.Event{ - Type: update.ErrorEvent, - Err: err, - Data: "Error restart services after upgrade", - } - slog.Error("failed to restart services", "error", err) + eventsCh <- update.NewErrorEvent(fmt.Errorf("error restarting services after upgrade: %w", err)) return } }() @@ -312,7 +287,10 @@ func restartServices(ctx context.Context) error { if err != nil { return err } - return needRestartCmd.RunWithinContext(ctx) + if out, err := needRestartCmd.RunAndCaptureCombinedOutput(ctx); err != nil { + return fmt.Errorf("error running needrestart command: %w: %s", err, out) + } + return nil } func listUpgradablePackages(ctx context.Context, matcher func(update.UpgradablePackage) bool) ([]update.UpgradablePackage, error) { diff --git a/internal/update/arduino/arduino.go b/internal/update/arduino/arduino.go index 36d7c0569..4958d0024 100644 --- a/internal/update/arduino/arduino.go +++ b/internal/update/arduino/arduino.go @@ -18,9 +18,9 @@ package arduino import ( "context" "errors" + "fmt" "log/slog" "sync" - "time" "github.com/arduino/arduino-cli/commands" "github.com/arduino/arduino-cli/commands/cmderrors" @@ -41,13 +41,6 @@ func NewArduinoPlatformUpdater() *ArduinoPlatformUpdater { } func setConfig(ctx context.Context, srv rpc.ArduinoCoreServiceServer) error { - if _, err := srv.SettingsSetValue(ctx, &rpc.SettingsSetValueRequest{ - Key: "board_manager.additional_urls", - EncodedValue: "https://apt-repo.arduino.cc/zephyr-core-imola.json", - ValueFormat: "cli", - }); err != nil { - return err - } if _, err := srv.SettingsSetValue(ctx, &rpc.SettingsSetValueRequest{ Key: "network.connection_timeout", EncodedValue: "600s", @@ -89,6 +82,15 @@ func (a *ArduinoPlatformUpdater) ListUpgradablePackages(ctx context.Context, _ f return nil, err } + streamLibIndex, _ := commands.UpdateLibrariesIndexStreamResponseToCallbackFunction(ctx, func(curr *rpc.DownloadProgress) { + slog.Debug("downloading library index", "progress", curr.GetMessage()) + }) + + req := &rpc.UpdateLibrariesIndexRequest{Instance: inst} + if err := srv.UpdateLibrariesIndex(req, streamLibIndex); err != nil { + slog.Warn("error updating library index, skipping", slog.String("error", err.Error())) + } + if err := srv.Init( &rpc.InitRequest{Instance: inst}, commands.InitStreamResponseToCallbackFunction(ctx, func(r *rpc.InitResponse) error { @@ -141,42 +143,31 @@ func (a *ArduinoPlatformUpdater) UpgradePackages(ctx context.Context, names []st downloadProgressCB := func(curr *rpc.DownloadProgress) { data := helpers.ArduinoCLIDownloadProgressToString(curr) slog.Debug("Download progress", slog.String("download_progress", data)) - eventsCh <- update.Event{Type: update.UpgradeLineEvent, Data: data} + eventsCh <- update.NewDataEvent(update.UpgradeLineEvent, data) } taskProgressCB := func(msg *rpc.TaskProgress) { data := helpers.ArduinoCLITaskProgressToString(msg) slog.Debug("Task progress", slog.String("task_progress", data)) - eventsCh <- update.Event{Type: update.UpgradeLineEvent, Data: data} + eventsCh <- update.NewDataEvent(update.UpgradeLineEvent, data) } go func() { defer a.lock.Unlock() defer close(eventsCh) - ctx, cancel := context.WithTimeout(ctx, 10*time.Minute) - defer cancel() - - eventsCh <- update.Event{Type: update.StartEvent, Data: "Upgrade is starting"} + eventsCh <- update.NewDataEvent(update.StartEvent, "Upgrade is starting") logrus.SetLevel(logrus.ErrorLevel) // Reduce the log level of arduino-cli srv := commands.NewArduinoCoreServer() if err := setConfig(ctx, srv); err != nil { - eventsCh <- update.Event{ - Type: update.ErrorEvent, - Err: err, - Data: "Error setting additional URLs", - } + eventsCh <- update.NewErrorEvent(fmt.Errorf("error setting config: %w", err)) return } var inst *rpc.Instance if resp, err := srv.Create(ctx, &rpc.CreateRequest{}); err != nil { - eventsCh <- update.Event{ - Type: update.ErrorEvent, - Err: err, - Data: "Error creating Arduino instance", - } + eventsCh <- update.NewErrorEvent(fmt.Errorf("error creating arduino-cli instance: %w", err)) return } else { inst = resp.GetInstance() @@ -192,19 +183,11 @@ func (a *ArduinoPlatformUpdater) UpgradePackages(ctx context.Context, names []st { stream, _ := commands.UpdateIndexStreamResponseToCallbackFunction(ctx, downloadProgressCB) if err := srv.UpdateIndex(&rpc.UpdateIndexRequest{Instance: inst}, stream); err != nil { - eventsCh <- update.Event{ - Type: update.ErrorEvent, - Err: err, - Data: "Error updating index", - } + eventsCh <- update.NewErrorEvent(fmt.Errorf("error updating index: %w", err)) return } if err := srv.Init(&rpc.InitRequest{Instance: inst}, commands.InitStreamResponseToCallbackFunction(ctx, nil)); err != nil { - eventsCh <- update.Event{ - Type: update.ErrorEvent, - Err: err, - Data: "Error initializing Arduino instance", - } + eventsCh <- update.NewErrorEvent(fmt.Errorf("error initializing instance: %w", err)) return } } @@ -226,17 +209,13 @@ func (a *ArduinoPlatformUpdater) UpgradePackages(ctx context.Context, names []st ); err != nil { var alreadyPresent *cmderrors.PlatformAlreadyAtTheLatestVersionError if errors.As(err, &alreadyPresent) { - eventsCh <- update.Event{Type: update.UpgradeLineEvent, Data: alreadyPresent.Error()} + eventsCh <- update.NewDataEvent(update.UpgradeLineEvent, alreadyPresent.Error()) return } var notFound *cmderrors.PlatformNotFoundError if !errors.As(err, ¬Found) { - eventsCh <- update.Event{ - Type: update.ErrorEvent, - Err: err, - Data: "Error upgrading platform", - } + eventsCh <- update.NewErrorEvent(fmt.Errorf("error upgrading platform: %w", err)) return } // If the platform is not found, we will try to install it @@ -253,23 +232,16 @@ func (a *ArduinoPlatformUpdater) UpgradePackages(ctx context.Context, names []st ), ) if err != nil { - eventsCh <- update.Event{ - Type: update.ErrorEvent, - Err: err, - Data: "Error installing platform", - } + eventsCh <- update.NewErrorEvent(fmt.Errorf("error installing platform: %w", err)) return } } else if respCB().GetPlatform() == nil { - eventsCh <- update.Event{ - Type: update.ErrorEvent, - Data: "platform upgrade failed", - } + eventsCh <- update.NewErrorEvent(fmt.Errorf("platform upgrade failed")) return } cbw := orchestrator.NewCallbackWriter(func(line string) { - eventsCh <- update.Event{Type: update.UpgradeLineEvent, Data: line} + eventsCh <- update.NewDataEvent(update.UpgradeLineEvent, line) }) err := srv.BurnBootloader( @@ -281,11 +253,7 @@ func (a *ArduinoPlatformUpdater) UpgradePackages(ctx context.Context, names []st commands.BurnBootloaderToServerStreams(ctx, cbw, cbw), ) if err != nil { - eventsCh <- update.Event{ - Type: update.ErrorEvent, - Err: err, - Data: "Error burning bootloader", - } + eventsCh <- update.NewErrorEvent(fmt.Errorf("error burning bootloader: %w", err)) return } }() diff --git a/internal/update/errors.go b/internal/update/errors.go new file mode 100644 index 000000000..9f65a63cc --- /dev/null +++ b/internal/update/errors.go @@ -0,0 +1,55 @@ +package update + +import "errors" + +type ErrorCode string + +// TODO: add the error to the openAPI spec as an enum +const ( + NoInternetConnectionCode ErrorCode = "NO_INTERNET_CONNECTION" + OperationInProgressCode ErrorCode = "OPERATION_IN_PROGRESS" + UnknownErrorCode ErrorCode = "UNKNOWN_ERROR" +) + +var ( + ErrOperationAlreadyInProgress = &UpdateError{ + Code: OperationInProgressCode, + Details: "an operation is already in progress", + } + ErrNoInternetConnection = &UpdateError{ + Code: NoInternetConnectionCode, + Details: "no internet connection available", + } +) + +type UpdateError struct { + Code ErrorCode `json:"code"` + Details string `json:"details"` + + err error +} + +func (e *UpdateError) Error() string { + return e.Details +} + +func (e *UpdateError) Unwrap() error { + return e.err +} + +func NewUnkownError(err error) *UpdateError { + return &UpdateError{ + Details: err.Error(), + err: err, + } +} + +func GetUpdateErrorCode(err error) ErrorCode { + var updateError *UpdateError + if errors.As(err, &updateError) { + if updateError.Code != "" { + return updateError.Code + } + } + return UnknownErrorCode +} diff --git a/internal/update/errors_test.go b/internal/update/errors_test.go new file mode 100644 index 000000000..6b3a8bca0 --- /dev/null +++ b/internal/update/errors_test.go @@ -0,0 +1,32 @@ +package update + +import ( + "errors" + "fmt" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestUpdateError(t *testing.T) { + t.Run("known error", func(t *testing.T) { + var err error = &UpdateError{ + Code: NoInternetConnectionCode, + Details: "no internet connection available", + } + assert.Equal(t, "no internet connection available", err.Error()) + assert.Equal(t, "no internet connection available", fmt.Sprintf("%s", err)) + assert.Equal(t, NoInternetConnectionCode, GetUpdateErrorCode(err)) + }) + + t.Run("unknown error", func(t *testing.T) { + var underlyingErr = errors.New("underlying error") + var updateErr error = NewUnkownError(underlyingErr) + + assert.Equal(t, "underlying error", updateErr.Error()) + assert.Equal(t, "underlying error", fmt.Sprintf("%s", updateErr)) + assert.Equal(t, underlyingErr, errors.Unwrap(updateErr)) + assert.True(t, errors.Is(updateErr, underlyingErr)) + assert.Equal(t, UnknownErrorCode, GetUpdateErrorCode(updateErr)) + }) +} diff --git a/internal/update/event.go b/internal/update/event.go index 0f6c1a512..2aac04ee9 100644 --- a/internal/update/event.go +++ b/internal/update/event.go @@ -15,6 +15,8 @@ package update +import "go.bug.st/f" + // EventType defines the type of upgrade event. type EventType int @@ -29,8 +31,9 @@ const ( // Event represents a single event in the upgrade process. type Event struct { Type EventType - Data string - Err error // Optional error field for error events + + data string + err error // error field for error events } func (t EventType) String() string { @@ -50,6 +53,30 @@ func (t EventType) String() string { } } +func NewDataEvent(t EventType, data string) Event { + return Event{ + Type: t, + data: data, + } +} + +func NewErrorEvent(err error) Event { + return Event{ + Type: ErrorEvent, + err: err, + } +} + +func (e Event) GetData() string { + f.Assert(e.Type != ErrorEvent, "not a data event") + return e.data +} + +func (e Event) GetError() error { + f.Assert(e.Type == ErrorEvent, "not an error event") + return e.err +} + type PackageType string const ( diff --git a/internal/update/update.go b/internal/update/update.go index 7a2544781..7e3bc99c2 100644 --- a/internal/update/update.go +++ b/internal/update/update.go @@ -17,7 +17,6 @@ package update import ( "context" - "errors" "fmt" "log/slog" "net/http" @@ -28,8 +27,6 @@ import ( "golang.org/x/sync/errgroup" ) -var ErrOperationAlreadyInProgress = errors.New("an operation is already in progress") - var MatchArduinoPackage = func(p UpgradablePackage) bool { return strings.HasPrefix(p.Name, "arduino-") || (p.Name == "adbd" && strings.Contains(p.ToVersion, "arduino")) // NOTE: changing this check could remove the adbd package, breaking the device access. @@ -78,7 +75,7 @@ func (m *Manager) ListUpgradablePackages(ctx context.Context, matcher func(Upgra // Make sure to be connected to the internet, before checking for updates. // This is needed because the checks below work also when offline (using cached data). if !isConnected() { - return nil, errors.New("no internet connectivity") + return nil, ErrNoInternetConnection } // Get the list of upgradable packages from two sources (deb and platform) in parallel. @@ -141,12 +138,7 @@ func (m *Manager) UpgradePackages(ctx context.Context, pkgs []UpgradablePackage) // in the middle the upgrade of the cores. arduinoEvents, err := m.arduinoPlatformUpdateService.UpgradePackages(ctx, arduinoPlatform) if err != nil { - m.broadcast( - Event{ - Type: ErrorEvent, - Data: "failed to upgrade Arduino packages", - Err: err, - }) + m.broadcast(NewErrorEvent(fmt.Errorf("failed to upgrade Arduino packages: %w", err))) return } for e := range arduinoEvents { @@ -155,18 +147,14 @@ func (m *Manager) UpgradePackages(ctx context.Context, pkgs []UpgradablePackage) aptEvents, err := m.debUpdateService.UpgradePackages(ctx, debPkgs) if err != nil { - m.broadcast( - Event{ - Type: ErrorEvent, - Data: "failed to upgrade APT packages", - Err: err, - }) + m.broadcast(NewErrorEvent(fmt.Errorf("failed to upgrade APT packages: %w", err))) return } for e := range aptEvents { m.broadcast(e) } - m.broadcast(Event{Type: DoneEvent, Data: "Upgrade completed successfully"}) + + m.broadcast(NewDataEvent(DoneEvent, "Update completed")) }() return nil } @@ -175,17 +163,17 @@ func (m *Manager) UpgradePackages(ctx context.Context, pkgs []UpgradablePackage) func (b *Manager) Subscribe() chan Event { eventCh := make(chan Event, 100) b.mu.Lock() + defer b.mu.Unlock() b.subs[eventCh] = struct{}{} - b.mu.Unlock() return eventCh } // Unsubscribe removes the channel from the list of subscribers and closes it. func (b *Manager) Unsubscribe(eventCh chan Event) { b.mu.Lock() + defer b.mu.Unlock() delete(b.subs, eventCh) close(eventCh) - b.mu.Unlock() } func (b *Manager) broadcast(event Event) { @@ -201,8 +189,7 @@ func (b *Manager) broadcast(event Event) { default: slog.Warn("Discarding event (channel full)", slog.String("type", event.Type.String()), - slog.String("data", fmt.Sprintf("%v", event.Data)), - slog.Any("error", event.Err), + slog.Any("event", event), ) } } diff --git a/pkg/board/board.go b/pkg/board/board.go index 9c2cb831a..b8a1ec1ce 100644 --- a/pkg/board/board.go +++ b/pkg/board/board.go @@ -186,13 +186,14 @@ func FromFQBN(ctx context.Context, fqbn string) ([]Board, error) { switch port.GetPort().GetProtocol() { case SerialProtocol: serial := strings.ToLower(port.GetPort().GetHardwareId()) // in windows this is uppercase. - // TODO: we should store the board custom name in the product id so we can get it from the discovery service. var customName string if conn, err := adb.FromSerial(serial, ""); err == nil { if name, err := GetCustomName(ctx, conn); err == nil { customName = name } + } else { + slog.Warn("failed to get custom name", "serial", serial, "error", err) } boards = append(boards, Board{ @@ -211,10 +212,15 @@ func FromFQBN(ctx context.Context, fqbn string) ([]Board, error) { } customName = name[:idx] } + var serial string + if sn, ok := port.GetPort().GetProperties()["serial_number"]; ok { + serial = sn + } boards = append(boards, Board{ Protocol: NetworkProtocol, Address: port.GetPort().GetAddress(), + Serial: serial, BoardName: boardName, CustomName: customName, }) @@ -438,16 +444,6 @@ func EnsurePlatformInstalled(ctx context.Context, rawFQBN string) error { _, _ = srv.Destroy(ctx, &rpc.DestroyRequest{Instance: inst}) }() - // TODO: after embargo remove this - _, err = srv.SettingsSetValue(ctx, &rpc.SettingsSetValueRequest{ - Key: "board_manager.additional_urls", - EncodedValue: "https://apt-repo.arduino.cc/zephyr-core-imola.json", - ValueFormat: "cli", - }) - if err != nil { - return err - } - stream, _ := commands.UpdateIndexStreamResponseToCallbackFunction(ctx, func(curr *rpc.DownloadProgress) { slog.Debug("Update index progress", slog.String("download_progress", curr.String())) }) diff --git a/pkg/board/os_image.go b/pkg/board/os_image.go new file mode 100644 index 000000000..8a93c0ebc --- /dev/null +++ b/pkg/board/os_image.go @@ -0,0 +1,67 @@ +// This file is part of arduino-app-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-app-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package board + +import ( + "bufio" + "io" + "log/slog" + "strings" + + "github.com/arduino/arduino-app-cli/pkg/board/remote" +) + +const R0_IMAGE_VERSION_ID = "20250807-136" + +// GetOSImageVersion returns the version of the OS image used in the board. +// It is used by the AppLab to enforce image version compatibility. +func GetOSImageVersion(conn remote.RemoteConn) string { + f, err := conn.ReadFile("/etc/buildinfo") + if err != nil { + slog.Warn("Unable to read buildinfo file", "err", err, "using_default", R0_IMAGE_VERSION_ID) + return R0_IMAGE_VERSION_ID + } + defer f.Close() + + if version, ok := parseOSImageVersion(f); ok { + return version + } + slog.Warn("Unable to find OS Image version", "using_default", R0_IMAGE_VERSION_ID) + return R0_IMAGE_VERSION_ID +} + +func parseOSImageVersion(r io.Reader) (string, bool) { + scanner := bufio.NewScanner(r) + for scanner.Scan() { + line := strings.TrimSpace(scanner.Text()) + + key, value, ok := strings.Cut(line, "=") + if !ok || key != "BUILD_ID" { + continue + } + + version := strings.TrimSpace(value) + if version != "" { + return version, true + } + } + + if err := scanner.Err(); err != nil { + return "", false + } + + return "", false +} diff --git a/pkg/board/os_image_test.go b/pkg/board/os_image_test.go new file mode 100644 index 000000000..258aefa72 --- /dev/null +++ b/pkg/board/os_image_test.go @@ -0,0 +1,111 @@ +// This file is part of arduino-app-cli. +// +// Copyright 2025 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-app-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. +package board + +import ( + "context" + "io" + "strings" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/arduino/arduino-app-cli/pkg/board/remote" +) + +// implements remote.RemoteConn +type MockRemoteConn struct { + ReadFileFunc func(path string) (io.ReadCloser, error) +} + +func (m *MockRemoteConn) ReadFile(path string) (io.ReadCloser, error) { + return m.ReadFileFunc(path) +} + +// Empty definitions +func (m *MockRemoteConn) List(path string) ([]remote.FileInfo, error) { + return nil, nil +} +func (m *MockRemoteConn) MkDirAll(path string) error { + return nil +} +func (m *MockRemoteConn) Remove(path string) error { + return nil +} +func (m *MockRemoteConn) Stats(path string) (remote.FileInfo, error) { + return remote.FileInfo{}, nil +} +func (m *MockRemoteConn) WriteFile(data io.Reader, path string) error { + return nil +} +func (m *MockRemoteConn) GetCmd(cmd string, args ...string) remote.Cmder { + return nil +} +func (m *MockRemoteConn) Forward(ctx context.Context, localPort int, remotePort int) error { + return nil +} +func (m *MockRemoteConn) ForwardKillAll(ctx context.Context) error { + return nil +} +func createBuildInfoConnection(imageVersion string) remote.RemoteConn { + mockConn := MockRemoteConn{ + ReadFileFunc: func(path string) (io.ReadCloser, error) { + return io.NopCloser(strings.NewReader(imageVersion)), nil + }, + } + return &mockConn +} + +func TestParseOSImageVersion(t *testing.T) { + tests := []struct { + name string + input string + expected string + found bool + }{ + { + name: "valid build id", + input: "BUILD_ID=20251006-395\nVARIANT_ID=xfce", + expected: "20251006-395", + found: true, + }, + { + name: "missing build id", + input: "VARIANT_ID=xfce\n", + found: false, + }, + { + name: "empty build id", + input: "BUILD_ID=\n", + found: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, ok := parseOSImageVersion(strings.NewReader(tt.input)) + if ok != tt.found || got != tt.expected { + t.Fatalf("got (%q, %v), expected (%q, %v)", got, ok, tt.expected, tt.found) + } + }) + } +} + +func TestGetOSImageVersion(t *testing.T) { + const R0_IMAGE_VERSION_ID = "20250807-136" + R0Version := createBuildInfoConnection(R0_IMAGE_VERSION_ID) + AnotherVersion := createBuildInfoConnection("BUILD_ID=20250101-001") + require.Equal(t, GetOSImageVersion(R0Version), R0_IMAGE_VERSION_ID) + require.Equal(t, GetOSImageVersion(AnotherVersion), "20250101-001") +} diff --git a/pkg/board/remote/adb/adb.go b/pkg/board/remote/adb/adb.go index 745ff0afe..a4dc7435b 100644 --- a/pkg/board/remote/adb/adb.go +++ b/pkg/board/remote/adb/adb.go @@ -46,14 +46,50 @@ type ADBConnection struct { // Ensures ADBConnection implements the RemoteConn interface at compile time. var _ remote.RemoteConn = (*ADBConnection)(nil) +var ( + // ErrNotFound is returned when the ADB device is not found. + ErrNotFound = fmt.Errorf("ADB device not found") + // ErrDeviceOffline is returned when the ADB device is not reachable. + // This usually requires a restart of the adbd server daemon on the device. + ErrDeviceOffline = fmt.Errorf("ADB device is offline") +) + +// FromSerial creates an ADBConnection from a device serial number. +// returns an error NotFoundErr if the device is not found, and DeviceOfflineErr if the device is offline. func FromSerial(serial string, adbPath string) (*ADBConnection, error) { if adbPath == "" { adbPath = FindAdbPath() } + isConnected := func(serial, adbPath string) (bool, error) { + cmd, err := paths.NewProcess(nil, adbPath, "-s", serial, "get-state") + if err != nil { + return false, fmt.Errorf("failed to create ADB command: %w", err) + } + + output, err := cmd.RunAndCaptureCombinedOutput(context.TODO()) + if err != nil { + slog.Error("unable to connect to ADB device", "error", err, "output", string(output), "serial", serial) + if bytes.Contains(output, []byte("device offline")) { + return false, ErrDeviceOffline + } else if bytes.Contains(output, []byte("not found")) { + return false, ErrNotFound + } + return false, fmt.Errorf("failed to get ADB device state: %w: %s", err, output) + } + + return string(bytes.TrimSpace(output)) == "device", nil + } + + if connected, err := isConnected(serial, adbPath); err != nil { + return nil, err + } else if !connected { + return nil, fmt.Errorf("device %s is not connected", serial) + } + return &ADBConnection{ - host: serial, adbPath: adbPath, + host: serial, }, nil } @@ -65,8 +101,8 @@ func FromHost(host string, adbPath string) (*ADBConnection, error) { if err != nil { return nil, err } - if err := cmd.Run(); err != nil { - return nil, fmt.Errorf("failed to connect to ADB host %s: %w", host, err) + if out, err := cmd.RunAndCaptureCombinedOutput(context.TODO()); err != nil { + return nil, fmt.Errorf("failed to connect to ADB host %s: %w: %s", host, err, out) } return FromSerial(host, adbPath) } @@ -82,12 +118,13 @@ func (a *ADBConnection) Forward(ctx context.Context, localPort int, remotePort i if err != nil { return err } - if err := cmd.RunWithinContext(ctx); err != nil { + if out, err := cmd.RunAndCaptureCombinedOutput(ctx); err != nil { return fmt.Errorf( - "failed to forward ADB port %s to %s: %w", + "failed to forward ADB port %s to %s: %w: %s", local, remote, err, + out, ) } @@ -95,12 +132,12 @@ func (a *ADBConnection) Forward(ctx context.Context, localPort int, remotePort i } func (a *ADBConnection) ForwardKillAll(ctx context.Context) error { - cmd, err := paths.NewProcess(nil, a.adbPath, "-s", a.host, "killforward-all") + cmd, err := paths.NewProcess(nil, a.adbPath, "-s", a.host, "forward", "--remove-all") if err != nil { return err } - if err := cmd.RunWithinContext(ctx); err != nil { - return fmt.Errorf("failed to kill all ADB forwarded ports: %w", err) + if out, err := cmd.RunAndCaptureCombinedOutput(ctx); err != nil { + return fmt.Errorf("failed to kill all ADB forwarded ports: %w: %s", err, out) } return nil } @@ -119,6 +156,7 @@ func (a *ADBConnection) List(path string) ([]remote.FileInfo, error) { if err := cmd.Start(); err != nil { return nil, err } + defer func() { _ = cmd.Wait() }() r := bufio.NewReader(output) _, err = r.ReadBytes('\n') // Skip the first line @@ -166,6 +204,7 @@ func (a *ADBConnection) Stats(p string) (remote.FileInfo, error) { if err := cmd.Start(); err != nil { return remote.FileInfo{}, err } + defer func() { _ = cmd.Wait() }() r := bufio.NewReader(output) line, err := r.ReadBytes('\n') @@ -226,6 +265,7 @@ func (a *ADBConnection) Remove(path string) error { type ADBCommand struct { cmd *paths.Process + err error } func (a *ADBConnection) GetCmd(cmd string, args ...string) remote.Cmder { @@ -242,19 +282,31 @@ func (a *ADBConnection) GetCmd(cmd string, args ...string) remote.Cmder { cmds = append(cmds, args...) } - command, _ := paths.NewProcess(nil, cmds...) - return &ADBCommand{cmd: command} + command, err := paths.NewProcess(nil, cmds...) + return &ADBCommand{cmd: command, err: err} } func (a *ADBCommand) Run(ctx context.Context) error { + if a.err != nil { + return fmt.Errorf("failed to create command: %w", a.err) + } + return a.cmd.RunWithinContext(ctx) } func (a *ADBCommand) Output(ctx context.Context) ([]byte, error) { + if a.err != nil { + return nil, fmt.Errorf("failed to create command: %w", a.err) + } + return a.cmd.RunAndCaptureCombinedOutput(ctx) } func (a *ADBCommand) Interactive() (io.WriteCloser, io.Reader, io.Reader, remote.Closer, error) { + if a.err != nil { + return nil, nil, nil, nil, fmt.Errorf("failed to create command: %w", a.err) + } + stdin, err := a.cmd.StdinPipe() if err != nil { return nil, nil, nil, nil, fmt.Errorf("failed to get stdin pipe: %w", err) diff --git a/pkg/board/remote/adb/adb_nowindows.go b/pkg/board/remote/adb/adb_nowindows.go index 326994170..e856b9e22 100644 --- a/pkg/board/remote/adb/adb_nowindows.go +++ b/pkg/board/remote/adb/adb_nowindows.go @@ -18,11 +18,14 @@ package adb import ( + "cmp" "context" "fmt" "io" "github.com/arduino/go-paths-helper" + + "github.com/arduino/arduino-app-cli/pkg/board/remote" ) func adbReadFile(a *ADBConnection, path string) (io.ReadCloser, error) { @@ -37,7 +40,14 @@ func adbReadFile(a *ADBConnection, path string) (io.ReadCloser, error) { if err := cmd.Start(); err != nil { return nil, err } - return output, nil + return remote.WithCloser{ + Reader: output, + CloseFun: func() error { + err1 := output.Close() + err2 := cmd.Wait() + return cmp.Or(err1, err2) + }, + }, nil } func adbWriteFile(a *ADBConnection, r io.Reader, pathStr string) error { diff --git a/pkg/board/remote/adb/adb_windows.go b/pkg/board/remote/adb/adb_windows.go index 26b752a56..150d9cc05 100644 --- a/pkg/board/remote/adb/adb_windows.go +++ b/pkg/board/remote/adb/adb_windows.go @@ -26,7 +26,7 @@ import ( "github.com/arduino/go-paths-helper" - "github.com/arduino/arduino-app-cli/pkg/board/remote/ssh" + "github.com/arduino/arduino-app-cli/pkg/board/remote" ) func adbReadFile(a *ADBConnection, path string) (io.ReadCloser, error) { @@ -44,7 +44,7 @@ func adbReadFile(a *ADBConnection, path string) (io.ReadCloser, error) { return nil, err } - return ssh.WithCloser{ + return remote.WithCloser{ Reader: decoded, CloseFun: func() error { err1 := output.Close() diff --git a/pkg/board/remote/remote.go b/pkg/board/remote/remote.go index 9330610ae..247e7718c 100644 --- a/pkg/board/remote/remote.go +++ b/pkg/board/remote/remote.go @@ -59,3 +59,17 @@ type Cmder interface { Output(ctx context.Context) ([]byte, error) Interactive() (io.WriteCloser, io.Reader, io.Reader, Closer, error) } + +// WithCloser is a helper to create an io.ReadCloser from an io.Reader +// and a close function. +type WithCloser struct { + io.Reader + CloseFun func() error +} + +func (w WithCloser) Close() error { + if w.CloseFun != nil { + return w.CloseFun() + } + return nil +} diff --git a/pkg/board/remote/remote_test.go b/pkg/board/remote/remote_test.go index c9efa3391..ca48e2510 100644 --- a/pkg/board/remote/remote_test.go +++ b/pkg/board/remote/remote_test.go @@ -16,19 +16,16 @@ package remote_test import ( - "context" "fmt" + "net" "io" - "os/exec" - "strconv" "strings" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/arduino/arduino-app-cli/cmd/feedback" "github.com/arduino/arduino-app-cli/internal/testtools" "github.com/arduino/arduino-app-cli/pkg/board/remote" "github.com/arduino/arduino-app-cli/pkg/board/remote/adb" @@ -123,7 +120,7 @@ func TestRemoteFS(t *testing.T) { } } -func TestSSHShell(t *testing.T) { +func TestRemoteShell(t *testing.T) { name, adbPort, sshPort := testtools.StartAdbDContainer(t) t.Cleanup(func() { testtools.StopAdbDContainer(t, name) }) @@ -187,83 +184,66 @@ func TestSSHShell(t *testing.T) { } -func TestSSHForwarder(t *testing.T) { - name, _, sshPort := testtools.StartAdbDContainer(t) +func TestRemoteForwarder(t *testing.T) { + name, adbPort, sshPort := testtools.StartAdbDContainer(t) t.Cleanup(func() { testtools.StopAdbDContainer(t, name) }) - conn, err := ssh.FromHost("arduino", "arduino", fmt.Sprintf("%s:%s", "localhost", sshPort)) - require.NoError(t, err) - - t.Run("Forward ADB", func(t *testing.T) { - ctx, cancel := context.WithCancel(t.Context()) - defer cancel() - - forwardPort, err := ports.GetAvailable() - require.NoError(t, err) - - err = conn.Forward(ctx, forwardPort, 5555) - if err != nil { - t.Errorf("Forward failed: %v", err) - } - if forwardPort <= 0 || forwardPort > 65535 { - t.Fatalf("invalid port: %d", forwardPort) - } - adb_forwarded_endpoint := fmt.Sprintf("localhost:%s", strconv.Itoa(forwardPort)) + const pongServerPort = 9999 + + remotes := []struct { + name string + conn remote.Forwarder + forwardPort int + }{ + { + name: "adb", + conn: func() remote.Forwarder { + conn, err := adb.FromHost("localhost:"+adbPort, "") + require.NoError(t, err) + return conn + }(), + forwardPort: func() int { + port, err := ports.GetAvailable() + require.NoError(t, err) + return port + }(), + }, + { + name: "ssh", + conn: func() remote.Forwarder { + conn, err := ssh.FromHost("arduino", "arduino", "127.0.0.1:"+sshPort) + require.NoError(t, err) + return conn + }(), + }, + + // We are skipping the local forwarder test, which is just an no op in this case. + } - out, err := exec.Command("adb", "connect", adb_forwarded_endpoint).CombinedOutput() - require.NoError(t, err, "adb connect output: %q", out) + for _, remote := range remotes { + t.Run(remote.name, func(t *testing.T) { + forwardPort, err := ports.GetAvailable() + require.NoError(t, err) - cmd := exec.Command("adb", "-s", adb_forwarded_endpoint, "shell", "echo", "Hello, World!") - out, err = cmd.CombinedOutput() - require.NoError(t, err, "command output: %q", out) - feedback.Printf("Command output:\n%s\n", string(out)) - require.NotNil(t, string(out)) - }) -} + err = remote.conn.Forward(t.Context(), forwardPort, pongServerPort) + assert.NoError(t, err) -func TestSSHKillForwarder(t *testing.T) { - name, _, sshPort := testtools.StartAdbDContainer(t) - t.Cleanup(func() { testtools.StopAdbDContainer(t, name) }) + conn, err := net.Dial("tcp", fmt.Sprintf("localhost:%d", forwardPort)) + require.NoError(t, err) - conn, err := ssh.FromHost("arduino", "arduino", fmt.Sprintf("%s:%s", "localhost", sshPort)) - require.NoError(t, err) + buf := [128]byte{} + n, err := conn.Read(buf[:]) + require.NoError(t, err) + require.Equal(t, "pong", string(buf[:n])) - t.Run("KillAllForwards", func(t *testing.T) { - ctx, cancel := context.WithCancel(t.Context()) - defer cancel() + err = conn.Close() + require.NoError(t, err) - forwardPort, err := ports.GetAvailable() - require.NoError(t, err) + err = remote.conn.ForwardKillAll(t.Context()) + assert.NoError(t, err) - err = conn.Forward(ctx, forwardPort, 5555) - if err != nil { - t.Errorf("Forward failed: %v", err) - } - if forwardPort <= 0 || forwardPort > 65535 { - t.Fatalf("invalid port: %d", forwardPort) - } - adb_forwarded_endpoint := fmt.Sprintf("localhost:%s", strconv.Itoa(forwardPort)) - - out, err := exec.Command("adb", "connect", adb_forwarded_endpoint).CombinedOutput() - require.NoError(t, err, "adb connect output: %q", out) - - cmd := exec.Command("adb", "-s", adb_forwarded_endpoint, "shell", "echo", "Hello, World!") - out, err = cmd.CombinedOutput() - require.NoError(t, err, "command output: %q", out) - feedback.Printf("Command output:\n%s\n", string(out)) - require.NotNil(t, string(out)) - - err = conn.ForwardKillAll(t.Context()) - require.NoError(t, err) - out, err = exec.Command("adb", "disconnect", adb_forwarded_endpoint).CombinedOutput() - require.NoError(t, err, "adb disconnect output: %q", out) - - out, err = exec.Command("adb", "connect", adb_forwarded_endpoint).CombinedOutput() - require.NoError(t, err, "adb connect output: %q", out) - - cmd = exec.Command("adb", "-s", adb_forwarded_endpoint, "shell", "echo", "Hello, World!") - out, err = cmd.CombinedOutput() - require.Error(t, err, "command output: %q", out) - feedback.Printf("Command output:\n%s\n", string(out)) - }) + _, err = net.Dial("tcp", fmt.Sprintf("localhost:%d", forwardPort)) + require.Error(t, err) + }) + } } diff --git a/pkg/board/remote/ssh/ssh.go b/pkg/board/remote/ssh/ssh.go index cca231f5e..9b14d8f42 100644 --- a/pkg/board/remote/ssh/ssh.go +++ b/pkg/board/remote/ssh/ssh.go @@ -219,18 +219,6 @@ func (a *SSHConnection) WriteFile(r io.Reader, path string) error { return nil } -type WithCloser struct { - io.Reader - CloseFun func() error -} - -func (w WithCloser) Close() error { - if w.CloseFun != nil { - return w.CloseFun() - } - return nil -} - func (a *SSHConnection) ReadFile(path string) (io.ReadCloser, error) { session, err := a.client.NewSession() if err != nil { @@ -247,7 +235,7 @@ func (a *SSHConnection) ReadFile(path string) (io.ReadCloser, error) { return nil, fmt.Errorf("failed to start command: %w", err) } - return WithCloser{ + return remote.WithCloser{ Reader: output, CloseFun: session.Close, }, nil diff --git a/scripts/pong-server.sh b/scripts/pong-server.sh new file mode 100755 index 000000000..585f79e0d --- /dev/null +++ b/scripts/pong-server.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +PORT=9999 + +while true; do + echo -n "pong" | nc -l -p $PORT +done