arduino_ci 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +75 -56
- data/REFERENCE.md +1 -6
- data/exe/arduino_ci.rb +40 -39
- data/lib/arduino_ci/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4765de27f7f477f5a64189afba2d70a280d1ae65e64916af6b98aa7d1a0266f
|
4
|
+
data.tar.gz: dd3748bdf67dfc526183d5a1372ce06d11b293cbaf984af19b90b999fdf1623e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae3f368ed4f543f22a0702df9945abac4df15683f85e7d54c5c958cc60b951453bd21aad19beac73a54257bee558ea172d5c8cbcea69deed3a7b15da0cff0495
|
7
|
+
data.tar.gz: b2481e5d6096e6dd6df1aa86efb6465e6f13dc853840fca4ba6044c8dc51b1ac1c8c0196f3c9d49c1412c4e880177a40880346e1bba1d4fb7cc4967468f192f7
|
data/README.md
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
|
2
2
|
# ArduinoCI Ruby gem (`arduino_ci`)
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/arduino_ci.svg)](https://rubygems.org/gems/arduino_ci)
|
4
|
-
[![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](http://www.rubydoc.info/gems/arduino_ci/1.
|
4
|
+
[![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](http://www.rubydoc.info/gems/arduino_ci/1.3.0)
|
5
5
|
[![Gitter](https://badges.gitter.im/Arduino-CI/arduino_ci.svg)](https://gitter.im/Arduino-CI/arduino_ci?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
6
6
|
[![GitHub Marketplace](https://img.shields.io/badge/Get_it-on_Marketplace-informational.svg)](https://github.com/marketplace/actions/arduino_ci)
|
7
7
|
|
8
8
|
Arduino CI was created to enable better collaboration among Arduino library maintainers and contributors, by enabling automated code checks to be performed as part of a pull request process.
|
9
9
|
|
10
10
|
* enables running unit tests against the library **without hardware present**
|
11
|
-
* provides a system of mocks that allow fine-grained control over the
|
11
|
+
* provides a system of mocks that allow fine-grained control over the hardware inputs, including the system's clock
|
12
12
|
* verifies compilation of any example sketches included in the library
|
13
13
|
* can test a wide range of arduino boards with different hardware options available
|
14
14
|
* compares entries in `library.properties` to the contents of the library and reports mismatches
|
@@ -29,69 +29,91 @@ Windows | [![Windows Build status](https://github.com/Arduino-CI/arduino_ci/wor
|
|
29
29
|
|
30
30
|
## Quick Start
|
31
31
|
|
32
|
-
|
32
|
+
This project has the following dependencies:
|
33
33
|
|
34
|
-
|
34
|
+
* `ruby` 2.5 or higher
|
35
|
+
* A compiler like `g++` (on OSX, `clang` works; on Cygwin, use the `mingw-gcc-c++` package)
|
36
|
+
* `python` (if using a board architecutre that requires it, e.g. ESP32, ESP8266; see [this issue](https://github.com/Arduino-CI/arduino_ci/issues/235#issuecomment-739629243)). Consider `pyserial` as well.
|
37
|
+
|
38
|
+
In that environment, you can install by running `gem install arduino_ci`. To update to a latest version, use `gem update arduino_ci`.
|
39
|
+
|
40
|
+
You can now test your library by simply running the command `arduino_ci.rb` from your library directory. This will perform the following:
|
35
41
|
|
36
|
-
|
42
|
+
* validation of some fields in `library.properties`, if it exists
|
43
|
+
* running unit tests from files found in `test/`, if they exist
|
44
|
+
* testing compilation of example sketches found in `examples/`, if they exist
|
45
|
+
|
46
|
+
### Assumptions About Your Repository
|
37
47
|
|
38
48
|
Arduino expects all libraries to be in a specific `Arduino/libraries` directory on your system. If your library is elsewhere, `arduino_ci` will _automatically_ create a symbolic link in the `libraries` directory that points to the directory of the project being tested. This simplifieds working with project dependencies, but **it can have unintended consequences on Windows systems**.
|
39
49
|
|
40
50
|
> If you use a Windows system **it is recommended that you only run `arduino_ci` from project directories that are already inside the `libraries` directory** because [in some cases deleting a folder that contains a symbolic link to another folder can cause the _entire linked folder_ to be removed instead of just the link itself](https://superuser.com/a/306618).
|
41
51
|
|
52
|
+
### Changes to Your Repository
|
42
53
|
|
43
|
-
|
44
|
-
|
45
|
-
You'll need Ruby version 2.5 or higher, and to `gem install bundler` if it's not already there.
|
54
|
+
Unit testing binaries created by `arduino_ci` should not be commited to the codebase. To avoid that, add the following to your `.gitignore`:
|
46
55
|
|
56
|
+
```ignore-list
|
57
|
+
# arduino_ci unit test binaries and artifacts
|
58
|
+
*.bin
|
59
|
+
*.bin.dSYM
|
60
|
+
```
|
47
61
|
|
48
|
-
###
|
62
|
+
### A Quick Example
|
49
63
|
|
50
|
-
For unit
|
64
|
+
For a fairly minimal practical example of a unit-testable library repo that you can copy from, see [the `Arduino-CI/Blink` repository](https://github.com/Arduino-CI/Blink).
|
51
65
|
|
52
|
-
* **Linux**: `gcc`/`g++` is likely pre-installed.
|
53
|
-
* **OSX**: `g++` is an alias for `clang`, which is provided by Xcode and the developer tools. You are free to `brew install gcc` as well; this is also tested and working.
|
54
|
-
* **Windows**: you will need Cygwin, and the `mingw-gcc-g++` package.
|
55
66
|
|
67
|
+
## Advanced Start
|
56
68
|
|
57
|
-
|
69
|
+
New features and bugfixes reach GitHub before they reach a released ruby gem. Alternately, it may be that (for your own reasons) you do not wish to install `arduino_ci` globally on your system. A few additional setup steps are required if you wish to do this.
|
58
70
|
|
59
|
-
|
71
|
+
### You Need Ruby _and_ Bundler
|
60
72
|
|
61
|
-
|
73
|
+
In addition to version 2.5 or higher, you'll also need to `gem install bundler` to a minimum of version 2.0 if it's not already there. You may find it easiest to do this by using [`rbenv`](https://github.com/rbenv/rbenv).
|
62
74
|
|
75
|
+
You will need to add a file called `Gemfile` (no extension) to your Arduino project.
|
63
76
|
|
64
|
-
|
77
|
+
#### Non-root installation
|
65
78
|
|
66
|
-
|
79
|
+
If you are simply trying to avoid the need to install `arduino_ci` system-wide (which may require administrator permissions), your `Gemfile` would look like this:
|
67
80
|
|
68
81
|
```ruby
|
69
82
|
source 'https://rubygems.org'
|
70
|
-
|
83
|
+
|
84
|
+
# Replace 1.2 with the desired version of arduino_ci. See https://guides.rubygems.org/patterns/#pessimistic-version-constraint
|
85
|
+
gem 'arduino_ci', '~> 1.2'
|
71
86
|
```
|
72
87
|
|
73
|
-
|
88
|
+
It would also make sense to add the following to your `.gitignore`:
|
89
|
+
```ignore-list
|
90
|
+
/.bundle/
|
91
|
+
vendor
|
92
|
+
```
|
93
|
+
|
94
|
+
> Note: this used to be the recommended installation method, but with the library's maturation it's better to avoid the use of `Gemfile` and `bundle install` by just installing as per the "Quick Start" instructions above.
|
95
|
+
|
74
96
|
|
75
|
-
|
97
|
+
#### Using the latest-available code
|
98
|
+
|
99
|
+
If you want to use the latest code on GitHub, your `Gemfile` would look like this:
|
100
|
+
|
101
|
+
```ruby
|
102
|
+
source 'https://rubygems.org'
|
76
103
|
|
104
|
+
# to use the latest github code in a given repo and branch, replace the below values for git: and ref: as needed
|
105
|
+
gem 'arduino_ci', git: 'https://github.com/ArduinoCI/arduino_ci.git', ref: '<your desired ref, branch, or tag>'
|
77
106
|
```
|
78
|
-
/.bundle/
|
79
|
-
/.yardoc
|
80
|
-
Gemfile.lock
|
81
|
-
/_yardoc/
|
82
|
-
/coverage/
|
83
|
-
/doc/
|
84
|
-
/pkg/
|
85
|
-
/spec/reports/
|
86
|
-
vendor
|
87
|
-
*.gem
|
88
107
|
|
89
|
-
# rspec failure tracking
|
90
|
-
.rspec_status
|
91
108
|
|
92
|
-
|
93
|
-
|
94
|
-
|
109
|
+
#### Using a version of `arduino_ci` source code on your local machine
|
110
|
+
|
111
|
+
First, Thanks! See [CONTRIBUTING.md](CONTRIBUTING.md). Your `Gemfile` would look like this:
|
112
|
+
|
113
|
+
```ruby
|
114
|
+
source 'https://rubygems.org'
|
115
|
+
|
116
|
+
gem 'arduino_ci', path: '/path/to/development/dir/for/arduino_ci'
|
95
117
|
```
|
96
118
|
|
97
119
|
|
@@ -103,17 +125,18 @@ $ bundle install # adds packages to global library (may require admin rights)
|
|
103
125
|
$ bundle install --path vendor/bundle # adds packages to local library
|
104
126
|
```
|
105
127
|
|
128
|
+
This will create a `Gemfile.lock` in your project directory, which you may optionally check into source control. A broader introduction to ruby dependencies is outside the scope of this document.
|
106
129
|
|
107
|
-
|
130
|
+
|
131
|
+
|
132
|
+
### Running `arduino_ci.rb` To Test Your Library
|
108
133
|
|
109
134
|
With that installed, just the following shell command each time you want the tests to execute:
|
110
135
|
|
111
|
-
```
|
136
|
+
```console
|
112
137
|
$ bundle exec arduino_ci.rb
|
113
138
|
```
|
114
139
|
|
115
|
-
`arduino_ci.rb` is the main entry point for this library. This command will iterate over all the library's `examples/` and attempt to compile them. If you set up unit tests, it will run those as well.
|
116
|
-
|
117
140
|
|
118
141
|
### Reference
|
119
142
|
|
@@ -128,18 +151,14 @@ For more information on the usage of `arduino_ci.rb`, see [REFERENCE.md](REFEREN
|
|
128
151
|
|
129
152
|
## Setting up Pull Request Testing and/or External CI
|
130
153
|
|
131
|
-
|
132
|
-
|
133
|
-
* A GitHub (or other repository-hosting) project for your library
|
134
|
-
* A CI system like [Travis CI](https://travis-ci.org/) or [Appveyor](https://www.appveyor.com/) that is linked to your project
|
135
|
-
|
154
|
+
> **Note:** `arduino_ci.rb` expects to be run from the root directory of your Arduino project library.
|
136
155
|
|
137
|
-
###
|
156
|
+
### Arduino CI's Own GitHub action
|
138
157
|
|
139
|
-
|
158
|
+
[![GitHub Marketplace](https://img.shields.io/badge/Get_it-on_Marketplace-informational.svg)](https://github.com/marketplace/actions/arduino_ci)
|
140
159
|
|
141
160
|
|
142
|
-
|
161
|
+
### Your Own Scripted GitHub Action
|
143
162
|
|
144
163
|
GitHub Actions allows you to automate your workflows directly in GitHub.
|
145
164
|
No additional steps are needed.
|
@@ -156,12 +175,12 @@ jobs:
|
|
156
175
|
with:
|
157
176
|
ruby-version: 2.6
|
158
177
|
- run: |
|
159
|
-
|
160
|
-
|
178
|
+
gem install arduino_ci
|
179
|
+
arduino_ci.rb
|
161
180
|
```
|
162
181
|
|
163
182
|
|
164
|
-
|
183
|
+
### Travis CI
|
165
184
|
|
166
185
|
You'll need to go to https://travis-ci.org/profile/ and enable testing for your Arduino project. Once that happens, you should be all set. The script will test all example projects of the library and all unit tests.
|
167
186
|
|
@@ -171,12 +190,12 @@ Next, you need this in `.travis.yml` in your repo
|
|
171
190
|
sudo: false
|
172
191
|
language: ruby
|
173
192
|
script:
|
174
|
-
-
|
175
|
-
-
|
193
|
+
- gem install arduino_ci
|
194
|
+
- arduino_ci.rb
|
176
195
|
```
|
177
196
|
|
178
197
|
|
179
|
-
|
198
|
+
### Appveyor CI
|
180
199
|
|
181
200
|
You'll need to go to https://ci.appveyor.com/projects and add your project.
|
182
201
|
|
@@ -185,8 +204,8 @@ Next, you'll need this in `appveyor.yml` in your repo.
|
|
185
204
|
```yaml
|
186
205
|
build: off
|
187
206
|
test_script:
|
188
|
-
-
|
189
|
-
-
|
207
|
+
- gem install arduino_ci
|
208
|
+
- arduino_ci.rb
|
190
209
|
```
|
191
210
|
|
192
211
|
|
data/REFERENCE.md
CHANGED
@@ -46,7 +46,7 @@ This allows a file (or glob) pattern to be executed in your tests directory, cre
|
|
46
46
|
|
47
47
|
### `CUSTOM_INIT_SCRIPT` environment variable
|
48
48
|
|
49
|
-
If set, testing will execute (using `/bin/sh`) the script referred to by this variable -- relative to the current working directory. This enables use cases like the GitHub action to install custom library versions (i.e. a version of a library that is different than what the library manager would automatically install by name) prior to CI test runs.
|
49
|
+
If set, testing will execute (using `/bin/sh`) the script referred to by this variable -- relative to the current working directory (i.e. the root directory of the library). The script will _run_ in the Arduino Libraries directory (changing to the Libraries directory, running the script, and returning to the individual library root afterward). This enables use cases like the GitHub action to install custom library versions (i.e. a version of a library that is different than what the library manager would automatically install by name) prior to CI test runs.
|
50
50
|
|
51
51
|
|
52
52
|
### `USE_SUBDIR` environment variable
|
@@ -64,11 +64,6 @@ If set, testing will fail if no unit test files are detected (or if the director
|
|
64
64
|
If set, testing will fail if no example sketches are detected. This is to avoid communicating a passing status in cases where a commit may have accidentally moved or deleted the examples.
|
65
65
|
|
66
66
|
|
67
|
-
### `SKIP_LIBRARY_PROPERTIES` environment variable
|
68
|
-
|
69
|
-
If set, testing will skip validating `library.properties` entries. This is to work around any possible bugs in `arduino_ci`'s interpretation of what is "correct".
|
70
|
-
|
71
|
-
|
72
67
|
## Indirectly Overriding Build Behavior (medium term use), and Advanced Options
|
73
68
|
|
74
69
|
For build behavior that you'd like to persist across commits (e.g. defining the set of platforms to test against, disabling a test that you expect to re-enable at some future point), a special configuration file called `.arduino-ci.yml` can be used. There are 3 places you can put them:
|
data/exe/arduino_ci.rb
CHANGED
@@ -9,7 +9,6 @@ VAR_CUSTOM_INIT_SCRIPT = "CUSTOM_INIT_SCRIPT".freeze
|
|
9
9
|
VAR_USE_SUBDIR = "USE_SUBDIR".freeze
|
10
10
|
VAR_EXPECT_EXAMPLES = "EXPECT_EXAMPLES".freeze
|
11
11
|
VAR_EXPECT_UNITTESTS = "EXPECT_UNITTESTS".freeze
|
12
|
-
VAR_SKIP_LIBPROPS = "SKIP_LIBRARY_PROPERTIES".freeze
|
13
12
|
|
14
13
|
@failure_count = 0
|
15
14
|
@passfail = proc { |result| result ? "✓" : "✗" }
|
@@ -22,7 +21,6 @@ class Parser
|
|
22
21
|
output_options = {
|
23
22
|
skip_unittests: false,
|
24
23
|
skip_compilation: false,
|
25
|
-
skip_library_properties: false,
|
26
24
|
ci_config: {
|
27
25
|
"unittest" => unit_config
|
28
26
|
},
|
@@ -39,10 +37,6 @@ class Parser
|
|
39
37
|
output_options[:skip_compilation] = p
|
40
38
|
end
|
41
39
|
|
42
|
-
opts.on("--skip-library-properties", "Don't validate library.properties entries") do |p|
|
43
|
-
output_options[:skip_compilation] = p
|
44
|
-
end
|
45
|
-
|
46
40
|
opts.on("--testfile-select=GLOB", "Unit test file (or glob) to select") do |p|
|
47
41
|
unit_config["testfiles"] ||= {}
|
48
42
|
unit_config["testfiles"]["select"] ||= []
|
@@ -154,10 +148,32 @@ def inform_multiline(message, &block)
|
|
154
148
|
perform_action(message, true, nil, nil, false, false, &block)
|
155
149
|
end
|
156
150
|
|
151
|
+
def rule(char)
|
152
|
+
puts char[0] * WIDTH
|
153
|
+
end
|
154
|
+
|
157
155
|
def warn(message)
|
158
156
|
inform("WARNING") { message }
|
159
157
|
end
|
160
158
|
|
159
|
+
def phase(name)
|
160
|
+
puts
|
161
|
+
rule("=")
|
162
|
+
inform("Beginning the next phase of testing") { name }
|
163
|
+
end
|
164
|
+
|
165
|
+
def banner
|
166
|
+
art = [
|
167
|
+
" . __ ___",
|
168
|
+
" _, ,_ _| , . * ._ _ / ` | ",
|
169
|
+
"(_| [ `(_] (_| | [ ) (_) \\__. _|_ v#{ArduinoCI::VERSION}",
|
170
|
+
]
|
171
|
+
|
172
|
+
pad = " " * ((WIDTH - art[2].length) / 2)
|
173
|
+
art.each { |l| puts "#{pad}#{l}" }
|
174
|
+
puts
|
175
|
+
end
|
176
|
+
|
161
177
|
# Assure that a platform exists and return its definition
|
162
178
|
def assured_platform(purpose, name, config)
|
163
179
|
platform_definition = config.platform_definition(name)
|
@@ -351,7 +367,7 @@ def choose_platform_set(config, reason, desired_platforms, library_properties)
|
|
351
367
|
# completely ignore default config, opting for brute-force library matches
|
352
368
|
# OTOH, we don't need to assure platforms because we defined them
|
353
369
|
return inform_multiline("Default config, platforms matching architectures in library.properties") do
|
354
|
-
supported_platforms.
|
370
|
+
supported_platforms.keys.each do |p| # rubocop:disable Style/HashEachMethods
|
355
371
|
puts " #{p}"
|
356
372
|
end # this returns supported_platforms
|
357
373
|
end
|
@@ -366,34 +382,9 @@ def choose_platform_set(config, reason, desired_platforms, library_properties)
|
|
366
382
|
end
|
367
383
|
end
|
368
384
|
|
369
|
-
# tests of sane library.properties values
|
370
|
-
def perform_property_tests(cpp_library)
|
371
|
-
return inform("Skipping library.properties tests") { "as requested via command line" } if @cli_options[:skip_library_properties]
|
372
|
-
return inform("Skipping library.properties tests") { "as requested via environment" } unless ENV[VAR_SKIP_LIBPROPS].nil?
|
373
|
-
return inform("Skipping library.properties tests") { "file not found" } unless cpp_library.library_properties?
|
374
|
-
|
375
|
-
props = cpp_library.library_properties
|
376
|
-
|
377
|
-
props.depends&.each do |l|
|
378
|
-
assure("library.properties 'depends=' entry '#{l}' is available via the library manager") { @backend.library_available?(l) }
|
379
|
-
end
|
380
|
-
|
381
|
-
# the IDE would add these entries to a sketch (as "#include <...>" lines), they are nothing to do with the compioler
|
382
|
-
props.includes&.map(&:strip)&.map(&Pathname::method(:new))&.each do |f|
|
383
|
-
if (cpp_library.path + f).exist?
|
384
|
-
inform("library.properties 'includes=' entry found") { f }
|
385
|
-
elsif (cpp_library.path + "src" + f).exist?
|
386
|
-
inform("library.properties 'includes=' entry found") { Pathname.new("src") + f }
|
387
|
-
else
|
388
|
-
# this is if they want to "#include <math>" or something -- may or may not be valid! so just warn.
|
389
|
-
warn("library.properties 'includes=' entry '#{f}' does not refer to a file in the library")
|
390
|
-
end
|
391
|
-
end
|
392
|
-
|
393
|
-
end
|
394
|
-
|
395
385
|
# Unit test procedure
|
396
386
|
def perform_unit_tests(cpp_library, file_config)
|
387
|
+
phase("Unit testing")
|
397
388
|
if @cli_options[:skip_unittests]
|
398
389
|
inform("Skipping unit tests") { "as requested via command line" }
|
399
390
|
return
|
@@ -424,6 +415,7 @@ def perform_unit_tests(cpp_library, file_config)
|
|
424
415
|
install_arduino_library_dependencies(config.aux_libraries_for_unittest, "<unittest/libraries>")
|
425
416
|
|
426
417
|
platforms.each do |p|
|
418
|
+
puts
|
427
419
|
config.allowable_unittest_files(cpp_library.test_files).each do |unittest_path|
|
428
420
|
unittest_name = unittest_path.basename.to_s
|
429
421
|
compilers.each do |gcc_binary|
|
@@ -449,6 +441,7 @@ def perform_unit_tests(cpp_library, file_config)
|
|
449
441
|
end
|
450
442
|
|
451
443
|
def perform_example_compilation_tests(cpp_library, config)
|
444
|
+
phase("Compilation of example sketches")
|
452
445
|
if @cli_options[:skip_compilation]
|
453
446
|
inform("Skipping compilation of examples") { "as requested via command line" }
|
454
447
|
return
|
@@ -463,23 +456,25 @@ def perform_example_compilation_tests(cpp_library, config)
|
|
463
456
|
|
464
457
|
library_examples.each do |example_path|
|
465
458
|
example_name = File.basename(example_path)
|
459
|
+
puts
|
460
|
+
inform("Discovered example sketch") { example_name }
|
461
|
+
|
466
462
|
ovr_config = config.from_example(example_path)
|
467
463
|
platforms = choose_platform_set(ovr_config, "library example", ovr_config.platforms_to_build, cpp_library.library_properties)
|
468
464
|
|
469
465
|
if platforms.empty?
|
470
466
|
explain_and_exercise_envvar(VAR_EXPECT_EXAMPLES, "examples compilation", "platforms and architectures") do
|
471
|
-
puts " Configured platforms: #{
|
472
|
-
puts " Configuration is default: #{
|
467
|
+
puts " Configured platforms: #{ovr_config.platforms_to_build}"
|
468
|
+
puts " Configuration is default: #{ovr_config.is_default}"
|
473
469
|
arches = cpp_library.library_properties.nil? ? nil : cpp_library.library_properties.architectures
|
474
470
|
puts " Architectures in library.properties: #{arches}"
|
475
471
|
end
|
476
472
|
end
|
477
473
|
|
478
474
|
install_all_packages(platforms, ovr_config)
|
475
|
+
install_arduino_library_dependencies(ovr_config.aux_libraries_for_build, "<compile/libraries>")
|
479
476
|
|
480
477
|
platforms.each do |p|
|
481
|
-
install_arduino_library_dependencies(ovr_config.aux_libraries_for_build, "<compile/libraries>")
|
482
|
-
|
483
478
|
board = ovr_config.platform_info[p][:board]
|
484
479
|
attempt("Compiling #{example_name} for #{board}") do
|
485
480
|
ret = @backend.compile_sketch(example_path, board)
|
@@ -494,10 +489,18 @@ def perform_example_compilation_tests(cpp_library, config)
|
|
494
489
|
end
|
495
490
|
end
|
496
491
|
|
492
|
+
banner
|
493
|
+
inform("Host OS") { ArduinoCI::Host.os }
|
494
|
+
|
497
495
|
# initialize command and config
|
498
496
|
config = ArduinoCI::CIConfig.default.from_project_library
|
499
497
|
@backend = ArduinoCI::ArduinoInstallation.autolocate!
|
500
498
|
inform("Located arduino-cli binary") { @backend.binary_path.to_s }
|
499
|
+
if @backend.lib_dir.exist?
|
500
|
+
inform("Found libraries directory") { @backend.lib_dir }
|
501
|
+
else
|
502
|
+
assure("Creating libraries directory") { @backend.lib_dir.mkpath || true }
|
503
|
+
end
|
501
504
|
|
502
505
|
# run any library init scripts from the library itself.
|
503
506
|
perform_custom_initialization(config)
|
@@ -524,8 +527,6 @@ else
|
|
524
527
|
end
|
525
528
|
end
|
526
529
|
|
527
|
-
perform_property_tests(cpp_library)
|
528
|
-
|
529
530
|
install_arduino_library_dependencies(
|
530
531
|
cpp_library.arduino_library_dependencies,
|
531
532
|
"<#{ArduinoCI::CppLibrary::LIBRARY_PROPERTIES_FILE}>"
|
data/lib/arduino_ci/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arduino_ci
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian Katz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-01-
|
11
|
+
date: 2021-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: os
|