1. 09 Sep, 2022 2 commits
  2. 06 Sep, 2022 3 commits
  3. 02 Sep, 2022 8 commits
  4. 01 Sep, 2022 1 commit
  5. 30 Aug, 2022 1 commit
  6. 27 Aug, 2022 1 commit
  7. 26 Aug, 2022 2 commits
    • Cristian Maglie's avatar
      63f1e185
    • Cristian Maglie's avatar
      [breaking] daemon: Fix concurrency and streamline access to PackageManager (#1828) · 276b0cc9
      Cristian Maglie authored
      * legacy: Removed ToolsLoader step
      
      It has been splitted and merged into HardwareLoader and TargetBoardResolver
      that are more appropriate.
      
      * Fixed some function comments
      
      * Thread-safe protect access to instances map
      
      * Removed state-altering methods from PackageManager
      
      They have been moved into a Builder object that has the ability to build
      a new PackageManager. This allows to clearly separate subrotuines that
      actually change the status of the PackageManager from subroutines that
      just need to query it.
      
      * Created packagemanager.Explorer to query PackageManager data
      
      The Explorer object can be see as a read-only "view" to the underlying
      PackageManager: we may ask the PackageManager to create an Explorer on
      itself. The returned explorer will held a read-lock on the
      PackageManager until it's disposed.
      
      This architecture should prevent unwanted changes on the PackageManager
      while it's being used, and viceversa, when the PackageManager is updated
      it should be guaranteed that no Explorers are reading it.
      
      * PlatformInstall/Uninstall must release PackageManager.Explorer before calling commands.Init
      
      Otherwise, since Init will try to take a write-lock, it will block
      indefinitely.
      
      * Moved commands.InstanceContainer -> rpc.InstanceCommand
      
      * Created a coreInstancesContainer
      
      This container will handle all the atomic access to the instances map.
      
      * Made CoreInstance.PackageManager field private
      
      * Moved the reminder of PackageManager functions to Explorer or Builder
      
      * Now GetPackageManager accepts an rpc.InstanceCommand
      
      It has also been deprecated in favor of GetPackageManagerExplorer.
      
      * Now GetLibraryManager accepts an rpc.InstanceCommand
      
      * Refactored automatic builtin-tool installation
      
      * Added gRPC LibraryUpgrade call and fixed 'lib upgrade' command
      
      * Explorer and Builder should not extend PackageManager
      
      Previuosly the methods PackageManager.NewBuilder and
      PackageManager.NewExplorer were available also on Builder and Explorer.
      
      Now Builder and Explorer does not inherith these methods anymore,
      avoiding trivial errors like the one fixed in this commit in the
      builder_utils package.
      
      * Updated documentation
      
      * Apply suggestions from code review
      Co-authored-by: default avatarper1234 <accounts@perglass.com>
      276b0cc9
  8. 24 Aug, 2022 3 commits
  9. 22 Aug, 2022 1 commit
  10. 16 Aug, 2022 1 commit
    • per1234's avatar
      [skip changelog] Add readme for localization data (#1837) · 9fe8560e
      per1234 authored
      Arduino CLI has been translated to 12 languages.
      
      The localization process follows the following steps:
      
      1. An English language source string is defined in the Arduino CLI codebase
      2. The source string is pushed to Transifex
      3. Community translators localize the string
      4. The localization data is pulled into the Arduino CLI repository
      5. The localization data is incorporated into the Arduino CLI distribution
      
      Experience with maintenance of the Arduino IDE 1.x project indicates that the data files generated at step (4) can
      appear to be the appropriate place to make edits for casual contributors not familiar with the project's sophisticated
      internationalization infrastructure.
      
      Since those files are generated by automated systems, any edits made there would only be overwritten, so it is important
      to clearly communicate the correct way to make enhancements or corrections to these strings. This is accomplished by a
      local readme file most likely to be seen by those working in the folder containing these files, which supplements the
      existing information about translation in the project's CONTRIBUTING.md.
      9fe8560e
  11. 12 Aug, 2022 1 commit
  12. 11 Aug, 2022 1 commit
    • per1234's avatar
      [skip changelog] Update broken or outdated links (#1833) · 513f5a12
      per1234 authored
      * [skip changelog] Remove unused link reference definitions in docs
      
      Parts of the documentation use reference links, where the inline markup uses a label, which matches to a link reference
      definition elsewhere in the documentation.
      
      The major disadvantage of this approach is that unused link reference definitions are often left behind after the
      referencing text is removed, cluttering up the documentation and increasing the maintenance burden. That was the case
      here.
      
      The unused link reference definitions are hereby removed.
      
      * [skip changelog] Fix broken links in documentation
      
      Some of the documentation links no longer reached their intended target.
      
      These were not caught by the Markdown link check for one of two reasons:
      
      - Redirects to a useless generic page instead of the moved specific target page
      - Links in non-Markdown files
      
      * [skip changelog] Update documentation links that depend on redirects
      
      Some of the links in the documentation used URLs that were redirecting to the new location of the target page.
      
      Even though these links still took the reader to the intended place eventually, it is safest to not rely on them
      continuing to work for the long term, so is best to update to point directly to the target.
      513f5a12
  13. 10 Aug, 2022 3 commits
  14. 09 Aug, 2022 3 commits
    • Cristian Maglie's avatar
      Expand property references in `version` property of `platform.txt` (#1830) · 3a25147f
      Cristian Maglie authored
      * Added test for issue #1823
      
      * Do not assume that version in platforms.txt is correct semver
      
      * When parsing version in platform.txt perform a variable replace
      
      * Update internal/integrationtest/core/testdata/issue_1823/DxCore-dev/megaavr/README.md
      
      * Update internal/integrationtest/core/core_list_test.go
      Co-authored-by: default avatarper1234 <accounts@perglass.com>
      3a25147f
    • Cristian Maglie's avatar
      [skip-changelog] Add gRPC testsuite / implementation of integration tests in go (WIP) (#1806) · 869c9711
      Cristian Maglie authored
      * testsuite: Added helper functions to handle test envs
      
      * testsuite: Added helper functions to run arduino-cli
      
      * testsuite: Added colored output to arduino-cli Run helper
      
      * testsuite: Pass cli config through env variables
      
      * testsuite: added env commands to download and extract files
      
      * testsuite: added commands to start cli daemon and run some gRPC calls
      
      * testsuite: moved test harness inside 'internal' package
      
      * testsuite: added first daemon test for gRPC board watch
      
      * testsuite: added http server helper
      
      * testsuite: added JSON helpers
      
      * testsuite: Added possibility to use shared download staging folder
      
      * testsuite: Converted a core_test.py test (WIP)
      
      * REMOVEME: Deactivate daemon integration test for now
      
      * testsuite: force colored output
      
      * testsuite: moved all generic subroutines into their own library
      
      * testsuite: moved daemon test in his own dir
      
      * fixed typo
      
      * testsuite: added some helpers to improve daemon testing
      
      * testsuite: added test for #1614
      
      * Removed converted test
      
      * testsuite: perform build before test
      
      Otherwise people running the task locally will have a bad time when the test
      either fails due to the missing executable, or far worse when they get
      incorrect test results because they don't realize it is using whichever random
      executable happened to be sitting around from the last time they did a build.
      
      * Added missing comment
      
      * Renamed test file
      
      * Skip failing tests
      
      * Updated licensed cache
      
      * re-enable test for fixed bug
      
      * testsuite: disable postinstall
      
      Otherwise Windows CI will get stuck.
      
      * Removed useless startDaemon
      
      * Renamed inst -> grpcInst
      
      * Close daemon gRPC connection on test cleanup
      
      * Added comment
      
      * Apply suggestions from code review
      Co-authored-by: default avatarper1234 <accounts@perglass.com>
      
      * Update internal/integrationtest/arduino-cli.go
      Co-authored-by: default avatarper1234 <accounts@perglass.com>
      Co-authored-by: default avatarper1234 <accounts@perglass.com>
      869c9711
    • per1234's avatar
      [skip changelog] Remove spurious argument from error message (#1827) · 90755128
      per1234 authored
      `github.com/arduino/arduino-cli/i18n.Tr` provides a `fmt.Printf`-style interface, where the first argument may serve as
      a template filled by subsequent arguments according to its format verbs.
      
      This call contains a subsequent argument, but no verb in the format string to use it. This generates some cryptic
      content in the error message.
      
      For example:
      
      Error during install: Error downloading tool arduino:bossac@1.7.0-arduino3: no versions available for the current OS%!(EXTRA *cores.ToolRelease=arduino:bossac@1.7.0-arduino3)
      
      The tool name is already provided in the correctly configured `Message` field of the error, so there is no need to
      include it in the `Cause` field as well, so the spurious argument can be removed entirely rather than the alternative
      fix of adjusting the format string argument. I suspect the spurious argument was simply the result of a copy/paste error.
      90755128
  15. 08 Aug, 2022 1 commit
    • Cristian Maglie's avatar
      [skip-changelog] [breaking] Downloaders/Installers refactor (#1809) · c7163b77
      Cristian Maglie authored
      * Made PackageManager.TempDir private
      
      * Merged InstallToolRelease function into the proper packagemanager method
      
      * Moved uninstallToolRelease into the proper packagamanger method
      
      * Moved uninstallPlatformRelease into the proper packagamanger method
      
      * Moved downloadToolRelease into the proper packagamanger method
      
      * Merged downloadTool with the proper packagamanger method
      
      * Merged downloadPlatform with the proper packagamanger method
      
      * Moved installPlatform into a packagamanger method
      
      * Moved upgradePlatform into a packagamanger method
      
      * Made PackageManager.Log field private
      
      * Removed the massive code duplication in the 'upgrade' command
      
      * Removed the massive code duplication in the 'outdated' command
      
      * Updated docs
      
      * Update arduino/cores/packagemanager/install_uninstall.go
      Co-authored-by: default avatarper1234 <accounts@perglass.com>
      
      * Update arduino/cores/packagemanager/install_uninstall.go
      Co-authored-by: default avatarper1234 <accounts@perglass.com>
      Co-authored-by: default avatarper1234 <accounts@perglass.com>
      c7163b77
  16. 05 Aug, 2022 1 commit
  17. 02 Aug, 2022 1 commit
  18. 01 Aug, 2022 1 commit
    • per1234's avatar
      [skip changelog] Enable Codecov comments on PRs from forks (#1819) · a55df0d4
      per1234 authored
      Versions of the `codecov/codecov-action` GitHub Actions action prior to 1.0.6 required the use of a token provided by
      Codecov in order to upload data to Codecov. This token was stored in secret in the Arduino CLI repository and used in
      the test workflow.
      
      For security reasons, secrets are not accessible when a workflow is triggered by an event generated by a fork of the
      repository. This meant that it was impossible to upload coverage data for the test runs triggered by PRs from forks. A
      conditional was added to the upload step of the workflow to cause it to only run on `push` event triggers, which
      effectively prevented its failure for runs on PRs from forks.
      
      The token requirement was removed in the 1.0.6 release of `codecov/codecov-action`, but the now pointless conditional
      was never removed from the workflow. This prevented PRs from forks from receiving the automated code coverage report
      comments that would otherwise encourage those contributors to resolve coverage deficiencies and facilitate the review
      process.
      
      The harmful conditional is hereby removed from the coverage data upload steps of the workflow and PRs from forks will
      now receive coverage report comments, just as PRs from branches do already.
      a55df0d4
  19. 26 Jul, 2022 1 commit
  20. 22 Jul, 2022 3 commits
    • github-actions[bot]'s avatar
    • Joe Wreschnig's avatar
      Allow using specific revisions in `lib install --git-url` (#1113) (#1776) · 78be128d
      Joe Wreschnig authored
      This is done by providing the desired revision in the fragment, e.g.
      `…/Library.git#0.1.0`. When set, this disables the clone depth limit so
      all remote references will be available.
      78be128d
    • Cristian Maglie's avatar
      Fix bogus "wrong file size" error in some rare cases (#1810) · 4c539b9a
      Cristian Maglie authored
      * packagemanager: Show size difference between package_index and downloaded file
      
      This will help identify the problem:
      - if the file is corrupted
      - if the package_index is wrong
      - if there is a bug in the CLI (more rare... but actually possible :-)
      
      * Load package indexes after installed packages
      
      The installed packages keeps an extract of the original
      package_index.json, at the moment of the installation, inside
      a file named installed.json. This extract may turn out useful
      if the original package_XXX_index.json is lost or removed to keep the
      platform functional. On the other hand, if the original
      package_XXX_index.json is modified the information kept in the
      installed.json may be outdated and should be replaced by the upstream
      index: this is the reason why it's loaded after the hardware platforms.
      4c539b9a
  21. 19 Jul, 2022 1 commit