arli 1.0.2 → 1.1.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 +4 -0
- data/arli.gemspec +7 -5
- data/lib/arli/cli/command_finder.rb +1 -1
- data/lib/arli/cli/parser.rb +15 -2
- data/lib/arli/cli/parser_factory.rb +38 -14
- data/lib/arli/commands/generate.rb +38 -38
- data/lib/arli/commands/install.rb +8 -4
- data/lib/arli/commands/search.rb +13 -4
- data/lib/arli/helpers/output.rb +3 -3
- data/lib/arli/library/installer.rb +3 -3
- data/lib/arli/version.rb +1 -1
- metadata +16 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 818b4b5c9c83de430b9c59f4487731ee42cca089
|
4
|
+
data.tar.gz: 8a2bce6807e0a4a84245d62bcc0780386bd46244
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a8eae4bcea44a72f7fe9411ac2efe3c8eec1de049b44f5829620a3d9255ee351738919c855134e4060f1931102a37b11c95abbcb0bc32b9a6fdbd878bd78ab4a
|
7
|
+
data.tar.gz: 8f28ec1d5c3e7ad1736ac89e3be18fe9bd003f5ddc10f908e3547cf226a34437fd89f614fe375439b0052798668bc7876277088486be33297eba51e130a1257b
|
data/README.md
CHANGED
@@ -21,6 +21,10 @@ Arli can:
|
|
21
21
|
|
22
22
|
* **search for Arduino libraries** in the official public [database](http://downloads.arduino.cc/libraries/library_index.json.gz) maintained by Arduino using any library attribute by exact match, or regular expression, substring, and more.
|
23
23
|
|
24
|
+
To get a sense of its feature, we invite you to watch the following screen cast:
|
25
|
+
|
26
|
+
[![asciicast](https://asciinema.org/a/155261.png)](https://asciinema.org/a/155261)
|
27
|
+
|
24
28
|
### Who is Arli For?
|
25
29
|
|
26
30
|
_Arli is ideally suited for C/C++ programmers who have some basic knowledge of CMake, and who want to build larger-than-trivial projects on Arduino platform. Arli promotes use and reuse of libraries, which help take advantage of the Object Oriented Design Patterns, decoupling your code into reusable libraries._
|
data/arli.gemspec
CHANGED
@@ -5,11 +5,13 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
5
|
require 'arli/version'
|
6
6
|
|
7
7
|
Arli::DESCRIPTION = <<-eof
|
8
|
-
This is an Arduino
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
This is an Arduino helper toolkit that builds on top of the arduino-cmake
|
9
|
+
project — a powerful alternative build system for Arduino. What Arli provides
|
10
|
+
is capability to search for libraries by any attributes and regular expressions,
|
11
|
+
install a whole set of libraries defined in a YAML file Arlifile, and finally,
|
12
|
+
it can generate a brand new Sketch Project based on arduino-cmake, that builds
|
13
|
+
out the box. Arli is a command line tool, so run "arli" after installing the gem
|
14
|
+
for more information.
|
13
15
|
eof
|
14
16
|
|
15
17
|
Gem::Specification.new do |spec|
|
data/lib/arli/cli/parser.rb
CHANGED
@@ -140,7 +140,7 @@ module Arli
|
|
140
140
|
output_examples(command_hash[:examples]) if command_hash && command_hash[:examples]
|
141
141
|
output_command_help if commands
|
142
142
|
output_help
|
143
|
-
|
143
|
+
output_command_aliases(command_name) if command_name
|
144
144
|
print_version_copyright
|
145
145
|
end
|
146
146
|
end
|
@@ -246,9 +246,12 @@ See #{Arli::Configuration::ARLI_COMMAND.blue + ' command '.green + '--help'.yell
|
|
246
246
|
' © 2017 Konstantin Gredeskoul, MIT License.'.dark unless Arli.config.quiet
|
247
247
|
end
|
248
248
|
|
249
|
+
def indent
|
250
|
+
' '
|
251
|
+
end
|
252
|
+
|
249
253
|
def output_command_description(command_name)
|
250
254
|
command_hash = factory.command_parsers[command_name]
|
251
|
-
indent = ' '
|
252
255
|
|
253
256
|
if command_hash
|
254
257
|
if command_hash.description
|
@@ -265,6 +268,16 @@ See #{Arli::Configuration::ARLI_COMMAND.blue + ' command '.green + '--help'.yell
|
|
265
268
|
|
266
269
|
command_hash
|
267
270
|
end
|
271
|
+
|
272
|
+
private
|
273
|
+
def output_command_aliases(command_name)
|
274
|
+
command_aliases = factory.command_aliases(command_name) || []
|
275
|
+
unless command_aliases.empty?
|
276
|
+
header 'Aliases'
|
277
|
+
output indent + command_aliases.join(', ').bold.blue
|
278
|
+
output << ''
|
279
|
+
end
|
280
|
+
end
|
268
281
|
end
|
269
282
|
end
|
270
283
|
end
|
@@ -35,7 +35,7 @@ module Arli
|
|
35
35
|
|
36
36
|
def command_parsers
|
37
37
|
@command_parsers ||= {
|
38
|
-
search:
|
38
|
+
search: Hashie::Mash.new(
|
39
39
|
{
|
40
40
|
sentence: 'Search standard Arduino Library Database with over 4K entries ',
|
41
41
|
description: %Q[This command provides both the simple name-based search interface,
|
@@ -75,7 +75,7 @@ module Arli
|
|
75
75
|
}
|
76
76
|
}),
|
77
77
|
|
78
|
-
generate:
|
78
|
+
generate: Hashie::Mash.new(
|
79
79
|
{
|
80
80
|
sentence: 'Generates a new Arduino project with Arlifile',
|
81
81
|
|
@@ -107,24 +107,24 @@ module Arli
|
|
107
107
|
}
|
108
108
|
}),
|
109
109
|
|
110
|
-
bundle:
|
110
|
+
bundle: Hashie::Mash.new(
|
111
111
|
{
|
112
|
-
sentence:
|
112
|
+
sentence: 'Installs all libraries specified in Arlifile',
|
113
113
|
description: %Q[This command reads #{'Arlifile'.bold.green} (from the current folder, by default),
|
114
114
|
and then it installs all dependent libraries specified there, checking if
|
115
115
|
each already exists, and if not — downloading them, and installing them into
|
116
116
|
your Arduino Library folder. Both the folder with the Arlifile, as well as the
|
117
117
|
destination library path folder can be changed with the command line flags.
|
118
118
|
],
|
119
|
-
example:
|
120
|
-
|
121
|
-
|
119
|
+
example: [
|
120
|
+
{ desc: 'Install all libs defined in Arlifile:',
|
121
|
+
cmd: 'arli bundle ' },
|
122
122
|
|
123
|
-
|
124
|
-
|
125
|
-
|
123
|
+
{ desc: 'Custom Arlifile location, and destination path:',
|
124
|
+
cmd: 'arli bundle -a ./src -l ./libraries' }
|
125
|
+
],
|
126
126
|
|
127
|
-
parser:
|
127
|
+
parser: -> (command_name) {
|
128
128
|
make_parser(command_name) do |parser|
|
129
129
|
parser.banner = usage_line 'bundle'
|
130
130
|
parser.option_bundle
|
@@ -132,7 +132,7 @@ module Arli
|
|
132
132
|
end
|
133
133
|
} }),
|
134
134
|
|
135
|
-
install:
|
135
|
+
install: Hashie::Mash.new(
|
136
136
|
{
|
137
137
|
sentence: 'Installs a single library either by searching, or url or local ZIP',
|
138
138
|
description: %Q[This command installs a single library into your library path
|
@@ -160,17 +160,41 @@ module Arli
|
|
160
160
|
}
|
161
161
|
end
|
162
162
|
|
163
|
+
def aliases
|
164
|
+
{
|
165
|
+
s: :search,
|
166
|
+
ser: :search,
|
167
|
+
i: :install,
|
168
|
+
ins: :install,
|
169
|
+
g: :generate,
|
170
|
+
gen: :generate,
|
171
|
+
b: :bundle,
|
172
|
+
bun: :bundle
|
173
|
+
}
|
174
|
+
end
|
175
|
+
|
176
|
+
def command_aliases(cmd)
|
177
|
+
aliases.keys.select { |k| aliases[k] == cmd }
|
178
|
+
end
|
163
179
|
|
164
180
|
def commands
|
165
181
|
command_parsers.keys
|
166
182
|
end
|
167
183
|
|
168
184
|
def valid_command?(command)
|
169
|
-
commands.include?(command)
|
185
|
+
commands.include?(command) || aliases[command]
|
186
|
+
end
|
187
|
+
|
188
|
+
def command_from_arg(arg)
|
189
|
+
if commands.include?(arg)
|
190
|
+
arg
|
191
|
+
elsif aliases[arg]
|
192
|
+
aliases[arg]
|
193
|
+
end
|
170
194
|
end
|
171
195
|
|
172
196
|
def command_parser(cmd)
|
173
|
-
cmd_hash = command_parsers[cmd]
|
197
|
+
cmd_hash = command_parsers[cmd] || command_parsers[aliases[cmd]]
|
174
198
|
cmd_hash ? cmd_hash[:parser].call(cmd) : nil
|
175
199
|
end
|
176
200
|
|
@@ -15,7 +15,6 @@ module Arli
|
|
15
15
|
|
16
16
|
attr_accessor :settings, :dir
|
17
17
|
|
18
|
-
|
19
18
|
def setup
|
20
19
|
config.generate.project_name = config.runtime.argv.first
|
21
20
|
|
@@ -32,40 +31,45 @@ module Arli
|
|
32
31
|
def run
|
33
32
|
Dir.chdir(workspace) do
|
34
33
|
run_with_info(
|
35
|
-
"
|
34
|
+
"Grabbing the template from\n • #{template_repo.bold.green}...",
|
36
35
|
"git clone -v #{template_repo} #{project_name} 2>&1"
|
37
36
|
)
|
38
37
|
Dir.chdir(project_name) do
|
39
38
|
FileUtils.rm_rf('.git')
|
40
39
|
FileUtils.rm_rf('example')
|
41
40
|
run_with_info(
|
42
|
-
"
|
41
|
+
"Configuring the new project #{project_name.bold.yellow}",
|
43
42
|
'git init .'
|
44
43
|
)
|
45
|
-
run_with_info('
|
44
|
+
run_with_info('Customizing your README and other files...')
|
46
45
|
rename_files!
|
47
46
|
configure_template!
|
48
47
|
run_with_info(
|
49
|
-
'
|
48
|
+
'Running setup of the dependencies...',
|
49
|
+
'bin/setup'
|
50
50
|
)
|
51
|
-
|
52
|
-
|
51
|
+
run_with_info("The project #{project_name.bold.yellow} is ready.\n" +
|
52
|
+
'Follow README.md for build instructions.')
|
53
53
|
end
|
54
54
|
end
|
55
|
+
__pt hr
|
55
56
|
end
|
56
57
|
|
57
58
|
def run_with_info(message, command = nil)
|
58
|
-
|
59
|
+
indent = ' '
|
60
|
+
ok_indent = indent + ' ✔ '.green
|
61
|
+
err_indent = indent + ' X '.red
|
62
|
+
info("\n" + message.magenta)
|
59
63
|
return unless command
|
60
|
-
|
61
|
-
|
62
|
-
err_indent = ' x '.red
|
64
|
+
info(indent + command.bold.yellow)
|
65
|
+
o, e, s = run_system_command(command)
|
63
66
|
info(ok_indent + o.chomp.gsub(/\n/, "\n#{ok_indent}").blue) if o && o.chomp != ''
|
64
67
|
warn(err_indent + +e.chomp.gsub(/\n/, "\n#{err_indent}").red) if e && e.chomp != ''
|
65
68
|
end
|
66
69
|
|
67
70
|
def additional_info
|
68
|
-
"\nGenerating project #{project_name.bold.green}
|
71
|
+
"\nGenerating project #{project_name.bold.green} into #{workspace.bold.yellow}\n" +
|
72
|
+
"Template: #{template_repo.bold.red}\n"
|
69
73
|
end
|
70
74
|
|
71
75
|
private
|
@@ -74,22 +78,21 @@ module Arli
|
|
74
78
|
FileUtils.mv('README.md', 'README-Arli-CMake.md')
|
75
79
|
Dir.chdir('src') do
|
76
80
|
FileUtils.mv('MyProject.cpp', "#{project_name}.cpp")
|
77
|
-
|
81
|
+
run_with_info('Updating CMakeLists.txt file...',
|
82
|
+
"sed -i 's/MyProject/#{project_name}/g' CMakeLists.txt")
|
78
83
|
end
|
79
|
-
|
84
|
+
run_with_info('Updating CMakeLists.txt file...',
|
85
|
+
"sed -i 's/MyProject/#{project_name}/g' CMakeLists.txt")
|
80
86
|
end
|
81
87
|
|
82
88
|
def configure_template!
|
83
89
|
File.open('README.md', 'w') do |f|
|
84
90
|
f.write <<-EOF
|
85
91
|
|
86
|
-
|
87
|
-
> This project has been auto-generated using:
|
92
|
+
> **NOTE**: This project has been auto-generated using:
|
88
93
|
>
|
89
94
|
> * [arli](https://github.com/kigster/arli) Arduino toolkit, and using the `generate` command. Thank you for using Arli!
|
90
|
-
>
|
91
95
|
> * [arli-cmake](https://github.com/kigster/arli-cmake) is the template project that was used as a source for this one.
|
92
|
-
>
|
93
96
|
> * [arduino-cmake](https://github.com/arduino-cmake/arduino-cmake) is the CMake-based build system for Arduino projects.
|
94
97
|
>
|
95
98
|
> There is a discussion board for Arli/CMake-based projects. Please join if you have any questions or suggestions!
|
@@ -112,25 +115,6 @@ module Arli
|
|
112
115
|
|
113
116
|
## Building #{project_name}
|
114
117
|
|
115
|
-
### Using the BASH Helper `bin/build`
|
116
|
-
|
117
|
-
This project contains a BASH script that can automate your setup and build process. The following script takes care of most dependencies, including a missing Ruby.
|
118
|
-
|
119
|
-
```bash
|
120
|
-
$ cd ~/workspace/#{project_name}
|
121
|
-
$ bin/build [ setup | clean | make-flags ]
|
122
|
-
```
|
123
|
-
|
124
|
-
You should see a bunch of output, and upon completion, run `arli` without arguments to see if the command got installed and shows you proper help message. If you get `command not found`, please `[sudo] gem install arli --no-ri --no-rdoc`. Add sudo if your ruby installation is the system one, ie, `which ruby` returns `/usr/bin/ruby`.
|
125
|
-
|
126
|
-
|
127
|
-
### Manual Build
|
128
|
-
|
129
|
-
If you prefer to have more control over the build, you can of course build manually,
|
130
|
-
and manage `CMakeLists.txt` however you want.
|
131
|
-
|
132
|
-
Once you've run the setup, the manual build is:
|
133
|
-
|
134
118
|
```bash
|
135
119
|
$ cd ~/workspace/#{project_name}
|
136
120
|
$ rm -rf build && mkdir -p build && cd build
|
@@ -141,7 +125,7 @@ $ # this next command opens a serial port monitor inside a screen session
|
|
141
125
|
$ make #{project_name}-serial
|
142
126
|
```
|
143
127
|
|
144
|
-
|
128
|
+
### Customizing the Build
|
145
129
|
|
146
130
|
You can use environment variables to set the board, CPU and the port. Simply prefix the following variables before you run `cmake ..`
|
147
131
|
|
@@ -163,6 +147,22 @@ Go ahead and edit that file, and under `dependencies:` you want to list all of y
|
|
163
147
|
|
164
148
|
The best way to do that is to **first search for the library** using the `arli search terms` command. Once you find the library you want, just copy it's name as is into `Arlifile`. If it contains spaces, put quotes around it.
|
165
149
|
|
150
|
+
For example:
|
151
|
+
|
152
|
+
```bash
|
153
|
+
❯ arli search /adafruit.*bmp085/i
|
154
|
+
|
155
|
+
Arli (1.0.2), Command: search
|
156
|
+
Library Path: ~/Documents/Arduino/Libraries
|
157
|
+
|
158
|
+
Adafruit BMP085 Library (1.0.0) ( 1 total versions )
|
159
|
+
Adafruit BMP085 Unified (1.0.0) ( 1 total versions )
|
160
|
+
———————————————————————
|
161
|
+
Total Versions : 2
|
162
|
+
Unique Libraries : 2
|
163
|
+
———————————————————————
|
164
|
+
```
|
165
|
+
|
166
166
|
If the library is not in the official database, just add it with a name and a url. Arli will use the url field to fetch it.
|
167
167
|
|
168
168
|
To verify that your Arlifile can resolve all libraries, please run `arli bundle` inside the `src` folder. If Arli suceeds, you've got it right, and the `libraries` folder inside `src` should contain all referenced libraries.
|
@@ -30,12 +30,16 @@ module Arli
|
|
30
30
|
raise Arli::Errors::LibraryNotFound,
|
31
31
|
"Library #{cfg.to_hash} was not found" unless library
|
32
32
|
|
33
|
-
self.arlifile = Arli::ArliFile.new(config: config, libraries: [
|
33
|
+
self.arlifile = Arli::ArliFile.new(config: config, libraries: [library])
|
34
34
|
if config.trace
|
35
35
|
info("found library using #{install_method}:\n#{library.inspect}")
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
def additional_info
|
40
|
+
"\nInstalling: #{runtime.argv.join(' ').bold.green}\n"
|
41
|
+
end
|
42
|
+
|
39
43
|
def run
|
40
44
|
arlifile.install
|
41
45
|
end
|
@@ -44,14 +48,14 @@ module Arli
|
|
44
48
|
def identify_library(arg)
|
45
49
|
results = if arg =~ %r[https?://]i
|
46
50
|
self.install_method = :url
|
47
|
-
r
|
51
|
+
r = search(url: /^#{arg}$/i)
|
48
52
|
if r.empty?
|
49
53
|
self.install_method = :website
|
50
|
-
r
|
54
|
+
r = search(website: /^#{arg}$/i)
|
51
55
|
end
|
52
56
|
if r.empty?
|
53
57
|
self.install_method = :custom
|
54
|
-
r
|
58
|
+
r = [Arduino::Library::Model.from_hash(url: arg, name: File.basename(arg))]
|
55
59
|
end
|
56
60
|
r
|
57
61
|
elsif File.exist?(arg) || arg =~ /\.zip$/
|
data/lib/arli/commands/search.rb
CHANGED
@@ -25,12 +25,16 @@ module Arli
|
|
25
25
|
|
26
26
|
def initialize(*args)
|
27
27
|
super(*args)
|
28
|
-
self.format
|
28
|
+
self.format = config.search.results.output_format
|
29
29
|
valid_methods = Arli::Library::MultiVersion.format_methods
|
30
30
|
raise Arli::Errors::InvalidSearchSyntaxError,
|
31
31
|
"invalid format #{format}" unless valid_methods.include?(format)
|
32
32
|
end
|
33
33
|
|
34
|
+
def additional_info
|
35
|
+
"\nSearching For: #{runtime.argv.join(' ').bold.green}\n"
|
36
|
+
end
|
37
|
+
|
34
38
|
def run
|
35
39
|
self.search_opts = process_search_options!
|
36
40
|
self.results = search(database, **search_opts).sort
|
@@ -112,7 +116,7 @@ module Arli
|
|
112
116
|
def handle_and_raise_error(e)
|
113
117
|
message = e.message
|
114
118
|
if message =~ /undefined method.*Arduino::Library::Model/
|
115
|
-
message =
|
119
|
+
message = 'Invalid attributed search. Possible values are:' +
|
116
120
|
"\n#{Arduino::Library::Types::LIBRARY_PROPERTIES.keys}"
|
117
121
|
end
|
118
122
|
raise Arli::Errors::InvalidSearchSyntaxError,
|
@@ -121,10 +125,10 @@ module Arli
|
|
121
125
|
end
|
122
126
|
|
123
127
|
def print_total_with_help
|
124
|
-
|
128
|
+
hr_short
|
125
129
|
puts " Total Versions : #{results.size.to_s.bold.magenta}\n"
|
126
130
|
puts "Unique Libraries : #{unique_libraries.size.to_s.bold.magenta}\n"
|
127
|
-
|
131
|
+
hr_short
|
128
132
|
if results.size == Arli::Configuration::DEFAULT_RESULTS_LIMIT
|
129
133
|
puts "Hint: use #{'-m 5'.bold.green} to limit the result set."
|
130
134
|
end
|
@@ -133,6 +137,11 @@ module Arli
|
|
133
137
|
def params
|
134
138
|
search_opts
|
135
139
|
end
|
140
|
+
|
141
|
+
private
|
142
|
+
def hr_short
|
143
|
+
puts '———————————————————————'
|
144
|
+
end
|
136
145
|
end
|
137
146
|
end
|
138
147
|
end
|
data/lib/arli/helpers/output.rb
CHANGED
@@ -150,13 +150,13 @@ module Arli
|
|
150
150
|
out << "\n#{command.params.to_s.blue}\n"
|
151
151
|
end
|
152
152
|
out << command.additional_info if command.respond_to?(:additional_info)
|
153
|
-
out << "
|
154
|
-
out << "#{hr}
|
153
|
+
out << "Library Path: #{Arli.default_library_path.green}\n"
|
154
|
+
out << "#{hr}"
|
155
155
|
info out
|
156
156
|
end
|
157
157
|
|
158
158
|
def hr
|
159
|
-
('
|
159
|
+
('—' * ((ENV['COLUMNS'] || 70).to_i - 1)).red.dark
|
160
160
|
end
|
161
161
|
|
162
162
|
# Some shortcuts
|
@@ -20,7 +20,7 @@ module Arli
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def install
|
23
|
-
___ "#{library.name.blue} "
|
23
|
+
___ "#{library.name.blue.bold} "
|
24
24
|
if library.nil? && library.library.nil?
|
25
25
|
___ ' (no library) '
|
26
26
|
fuck
|
@@ -28,13 +28,13 @@ module Arli
|
|
28
28
|
___ ' (no url) '
|
29
29
|
fuck
|
30
30
|
else
|
31
|
-
___ "(#{library.version.
|
31
|
+
___ "(#{library.version.yellow.bold}) " if library.version
|
32
32
|
indent_cursor
|
33
33
|
actions(library).each do |action|
|
34
34
|
run_action(action)
|
35
35
|
end
|
36
36
|
end
|
37
|
-
___ "\n"
|
37
|
+
___ "\n\n"
|
38
38
|
end
|
39
39
|
|
40
40
|
def run_action(action_name)
|
data/lib/arli/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Konstantin Gredeskoul
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01-
|
11
|
+
date: 2018-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: arduino-library
|
@@ -234,11 +234,14 @@ dependencies:
|
|
234
234
|
- - ">="
|
235
235
|
- !ruby/object:Gem::Version
|
236
236
|
version: '0'
|
237
|
-
description:
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
237
|
+
description: |2
|
238
|
+
This is an Arduino helper toolkit that builds on top of the arduino-cmake
|
239
|
+
project — a powerful alternative build system for Arduino. What Arli provides
|
240
|
+
is capability to search for libraries by any attributes and regular expressions,
|
241
|
+
install a whole set of libraries defined in a YAML file Arlifile, and finally,
|
242
|
+
it can generate a brand new Sketch Project based on arduino-cmake, that builds
|
243
|
+
out the box. Arli is a command line tool, so run "arli" after installing the gem
|
244
|
+
for more information.
|
242
245
|
email:
|
243
246
|
- kigster@gmail.com
|
244
247
|
executables:
|
@@ -329,9 +332,10 @@ rubyforge_project:
|
|
329
332
|
rubygems_version: 2.6.13
|
330
333
|
signing_key:
|
331
334
|
specification_version: 4
|
332
|
-
summary: This is an Arduino
|
333
|
-
|
334
|
-
|
335
|
-
of
|
336
|
-
|
335
|
+
summary: This is an Arduino helper toolkit that builds on top of the arduino-cmake
|
336
|
+
project — a powerful alternative build system for Arduino. What Arli provides is
|
337
|
+
capability to search for libraries by any attributes and regular expressions, install
|
338
|
+
a whole set of libraries defined in a YAML file Arlifile, and finally, it can generate
|
339
|
+
a brand new Sketch Project based on arduino-cmake, that builds out the box. Arli
|
340
|
+
is a command line tool, so run "arli" after installing the gem for more information.
|
337
341
|
test_files: []
|