1. 25 Oct, 2021 2 commits
  2. 22 Oct, 2021 2 commits
    • Silvano Cerza's avatar
      Move custom errors to separate package (#1530) · 1df5cb8e
      Silvano Cerza authored
      * Moved errors to arduino package
      
      * Handled package name change cause of errors move
      
      * Renamed some errors
      1df5cb8e
    • per1234's avatar
      [skip changelog] Add CI workflow to check for unapproved Go dependency licenses (#1525) · 37cd9eff
      per1234 authored
      * Add CI workflow to check for unapproved Go dependency licenses
      
      A task and GitHub Actions workflow are provided here for checking the license types of Go project dependencies.
      
      On every push and pull request that affects relevant files, the CI workflow will check:
      
      - If the dependency licenses cache is up to date
      - If any of the project's dependencies have an unapproved license type.
      
      Approval can be based on:
      
      - Universally allowed license type
      - Individual dependency
      
      * Make initial commit of dependency license metadata
      
      The  folder contains a cache of license metadata for all the project's Go dependencies. This serves two purposes:
      
      - Allow the Licensed dependency license checker tool to only check licenses when a dependency is added or updated
      
      - Allow the maintainer to manually define license metadata when the licensee tool is unable to automatically detect it
      
      * Manually define dependency license metadata that was not detected
      
      The "Licensed" dependency license checker tool uses the licensee tool to automatically determine the license type based
      on metadata provided by the dependency author. This must be in a standardized format without any modifications. In cases
      where that wasn't done, it is necessary to determine the license type and update the dependency license metadata cache in
      the `.licenses` folder manually.
      
      The Licensed tool will check this data whenever the dependency version is updated to make sure the license hasn't changed.
      37cd9eff
  3. 20 Oct, 2021 3 commits
    • Silvano Cerza's avatar
    • Cristian Maglie's avatar
      [skip-changelog] Fix pluggable conversion (#1512) · b12168cb
      Cristian Maglie authored
      * Fixed network upload for avr packages
      
      * Added test for serial pluggable-monitor compatibility conversion
      
      * Added data for unit testing
      
      * Fixed other collateral tests
      
      * Perform regexp compile at package level
      
      * fix i18n
      b12168cb
    • per1234's avatar
      [skip changelog] Standardize license file (#1522) · bb5d7780
      per1234 authored
      * [skip changelog] Standardize license file
      
      Standardization in license documentation is important because, in addition to making it easy for humans to find this vital information, it allows machines to automate the process of license type determination, which is useful both for discovering suitable open source projects as well as checking open source license compliance.
      
      The open source license of Arduino CLI is already stored in a standardized location at `/LICENSE.txt`. However, even though Arduino CLI is licensed under the industry standard GPL 3.0 open source license, additional text was added to the license file which offers the option to purchase an exception for proprietary use of the code. Even though this offer does not have any legal effect on the GPL 3.0 license, it does make it so that the license file can no longer be identified with 100% confidence by machines as GPL 3.0, which means a human must make that identification instead.
      
      Since there is no need to place the exception offer in the license file, it can be moved to the readme and the license file left as the verbatim GPL 3.0 license text, as looked for by the license type detection tools such as licensee.
      
      * Add CI workflow to check the license file
      
      Whenever one of the recognized license file names are modified in the repository, the workflow runs to check whether the license can be recognized and whether it is of the expected type.
      
      GitHub has a useful automated license detection system that determines the license type used by a repository, and surfaces that information in the repository home page, the search web interface, and the GitHub API. This license detection system requires that the license be defined by a dedicated file with one of several standardized filenames and paths.
      
      GitHub's license detection system uses the popular licensee tool, so this file also serves to define the license type for any other usages of licensee, as well as to human readers of the file.
      
      For this reason, and to ensure it remains a valid legal instrument, it's important that there be no non-standard modifications to the license file or collisions with other supported licence files. This workflow ensures that any changes which would change the license type or which license file is used by the detection are caught automatically.
      bb5d7780
  4. 19 Oct, 2021 2 commits
  5. 18 Oct, 2021 3 commits
    • Silvano Cerza's avatar
    • Umberto Baldi's avatar
      add dynamic completion (#1509) · 10beac75
      Umberto Baldi authored
      * add completion for `-b` or `--fqbn` for every command
      
      * add completion for `-l` or `--protocol`
      But does only work for connected boards and do not list every protocol installed
      
      * the previous implementation was working only with a board connected to the pc
      RPC was not exposing that functionality
      
      * add static completion for `--log-level, `--log-format` and `--format`
      
      * add completion for `-P` or `--programmer` & fix typo
      
      * add completion for `core uninstall`
      maybe could be done better (filter and remove the manually installed ones)
      
      * add completion for `core install` and `core download`
      
      * add completion for `lib uninstall`
      
      * add completion for `lib install`, `lib download`
      
      * add completion for `lib examples`
      
      * add completion for `config add`, `config remove`, `config delete` and `config set`
      
      * add completion for `lib deps`
      
      * add tests
      
      * enhance the completion for `config add` and `config remove`
      
      * add description completion suggestion for core, lib, fqbn, programmer
      
      * add completion also for `-p` or `--port` flag
      
      * remove the `toComplete` parameter from all the completion functions
      as of now this parameter is useless because if a string is typed in the terminal it cannot be swapped with a different one.
      For example if I write `arduino-cli compile -b avr<TAB><TAB>` the completion function returns all elements starting with `arduino:avr...`.
      So the completions are not showed because they cannot be swapped with a string that starts differently.
      The only shell which seems to support this seems to be zsh
      
      * fixes after rebase
      
      * update docs
      
      * add `-b` or `--fqbn` completion for the monitor command and tests
      
      * apply suggestions from code review
      
      * fixes after rebase
      10beac75
    • Cristian Maglie's avatar
      [skip-changelog] Drop `go.rice` library in favor of golang native `embed`... · 6c3c8647
      Cristian Maglie authored
      [skip-changelog] Drop `go.rice` library in favor of golang native `embed` (available from go1.16) (#1513)
      
      * Removed 'go.rice' library in favor of 'embed'
      
      * fix i18n
      6c3c8647
  6. 15 Oct, 2021 1 commit
  7. 14 Oct, 2021 1 commit
    • per1234's avatar
      [skip changelog] Document `packages[*].platforms[*].deprecated` package index field (#1510) · 1bd9945c
      per1234 authored
      In the event an Arduino boards platform is deprecated by the maintainer, it will be useful to clearly communicate this
      fact to the user and ensure they will easily find a preferred alternative platform. In order to facilitate this, a
      `packages[*].platforms[*].deprecated`field was added to the Arduino package index format and this information is used to
      enhance the user interfaces of the official Arduino development software.
      
      This useful feature is now documented in the Arduino package index specification.
      1bd9945c
  8. 13 Oct, 2021 1 commit
    • per1234's avatar
      [skip changelog] Fix bugs in dry run determination code for "Sync Labels" workflow (#1507) · ba8c9b70
      per1234 authored
      * [skip changelog] Correct context key name in "Sync Labels" workflow
      
      Incorrect context key name resulted in impossible to satisfy conditional, meaning the dry run determination code was
      solely dependent on the check for whether the workflow was triggered from the default branch name.
      
      * [skip changelog] Sync labels in write mode on schedule trigger
      
      In order to facilitate the testing and review of proposed changes to the repository label infrastructure, the
      "Sync Labels" template workflow does a dry run when triggered under conditions that indicate it would not be appropriate
      to make real changes to the repository's labels. The changes that would have resulted are printed to the log, but not
      actually made.
      
      One of the criteria used to determine "dry run" mode usage is whether the event occurred on the repository's default
      branch. A trigger on a development branch or for a pull request should not result in a change to the labels.
      It turns out that GitHub does not define a `github.event.repository.default_branch` context item when a workflow is
      triggered by a `schedule` event. This resulted in the workflow always running in "dry run" mode on a `schedule` trigger.
      Since `schedule` and `repository_dispatch` triggers are only permitted for the default branch, there is no need to check
      whether the event's ref matches the default branch and it is safe to always run in write mode on these events.
      ba8c9b70
  9. 11 Oct, 2021 4 commits
  10. 08 Oct, 2021 2 commits
  11. 07 Oct, 2021 1 commit
  12. 06 Oct, 2021 1 commit
    • Cristian Maglie's avatar
      Add `--quiet` and `--config` flags (#1497) · fd14435e
      Cristian Maglie authored
      * Added silent mode for monitor
      
      * Added --config flag to monitor command
      
      * fix i18n
      
      * Applied review suggestions
      
      * rename --silent to --quiet
      * removed useless 'settings' variable
      * translation string for "Monitor port settings" in CLI mode
      fd14435e
  13. 05 Oct, 2021 3 commits
  14. 04 Oct, 2021 4 commits
  15. 01 Oct, 2021 1 commit
    • Cristian Maglie's avatar
      [skip-changelog] Pluggable monitor fix and refactor (#1482) · 9079f851
      Cristian Maglie authored
      * Fixed race condition in pluggable monitor
      
      Many methods had the stateLock held for the entire scope of the function
      call but the 'port_closed' message can be received at any moment,
      asyncronously, and it requires a stateLock as well. In this case the
      worst case is that the decode loop is blocked for 10 seconds until the
      timeout occurs, but this is not ideal.
      
      This bug has been fixed by removing the state, since it's not really
      useful.
      
      * Improved message logging in pluggable monitor
      
      * Refactored message processing in pluggable monitor
      
      * Fix i18n
      
      * fixed lint suggestion
      
      * fix from code review
      9079f851
  16. 29 Sep, 2021 2 commits
  17. 27 Sep, 2021 3 commits
    • per1234's avatar
      [skip changelog] Temporarily full pin Python in all GitHub Actions workflows (#1478) · 4708cde8
      per1234 authored
      A bug introduced in the 3.9.7 release of Python causes a spurious failure of the
      `test\test_lib.py::test_install_git_invalid_library` integration test:
      https://bugs.python.org/issue45121
      
      As a workaround, the last working version of Python must be used: 3.9.6. In order to ensure this is done when running the
      integration tests locally, this version is specified in the Poetry configuration. Even though only the integration tests
      require this version limitation, the Poetry configuration change affects all processes that use Poetry. Since only the
      integration test workflow was adjusted accordingly, the other workflows using Poetry continued to explicitely install
      a version of Python that did not fulfill the version constraints specified in the Poetry configuration. It seems it was
      possible for Poetry to find a compatible version on the runner:
      
      > The currently activated Python version 3.9.7 is not supported by the project (>=3.8, <3.9.7).
      > Trying to find and use a compatible version.
      > Using python3.8 (3.8.10)
      
      but this additional output caused a failure of the "Deploy Website" workflow due to expecting only valid JSON as the
      output from the siteversion.py script:
      
      ```
      Error: The template is not valid. Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: T. Path '', line 0, position 0.
      ```
      
      Even though the other workflows were able to continue to work with the discovered Python 3.8.10, it seems safest avoid
      reliance on whatever Python the runner happens to have installed and instead explicitly install the Python version we
      want to be used. So the full pin of Python is done in all workflows that use Poetry.
      
      Since it is convenient to get automatic updates for Python patch releases, this full pin should be reverted back to the
      "3.9" minor version pin once a new version of Python is released with the bug fixed and added to versions available for
      installation via the `actions/setup-python` GitHub Actions action.
      4708cde8
    • Silvano Cerza's avatar
    • Silvano Cerza's avatar
  18. 24 Sep, 2021 4 commits