thermite 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +4 -1
- data/CONTRIBUTING.md +63 -0
- data/NEWS.md +25 -0
- data/README.md +26 -2
- data/lib/thermite/config.rb +34 -0
- data/lib/thermite/github_release_binary.rb +5 -3
- data/lib/thermite/tasks.rb +9 -0
- data/thermite.gemspec +3 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 947e1f3888fa02e99c72dc31814d37588e2e70ab
|
4
|
+
data.tar.gz: 623b3ca4569f631b615af1ae78405e2142b55fa9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c053764f561253ca63e9bf6fed628a97d7b2afea8819f2cc55039c7ce7f059b86004db47440a95982d24231f6a0752319d864cbfcf3e1b985d1aedbb5ac75523
|
7
|
+
data.tar.gz: 5cbd681ec63085d09863f4c95b3424c046f6fa89e1342c559775005e8ae503f2936a0efe0183a98249c91495e28777cdfbe73235e079df389900c8dca1e98f21
|
data/.travis.yml
CHANGED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
# Contributing to Thermite
|
2
|
+
|
3
|
+
Thermite is a part of the Rust ecosystem. As such, all contributions to this project follow the
|
4
|
+
[Rust language's code of conduct](https://www.rust-lang.org/conduct.html) where appropriate.
|
5
|
+
|
6
|
+
This project is hosted at [GitHub](https://github.com/malept/thermite). Both pull requests and
|
7
|
+
issues of many different kinds are accepted.
|
8
|
+
|
9
|
+
## Filing Issues
|
10
|
+
|
11
|
+
Issues include bugs, questions, feedback, and feature requests. Before you file a new issue, please
|
12
|
+
make sure that your issue has not already been filed by someone else.
|
13
|
+
|
14
|
+
### Filing Bugs
|
15
|
+
|
16
|
+
When filing a bug, please include the following information:
|
17
|
+
|
18
|
+
* Operating system and version. If on Linux, please also include the distribution name.
|
19
|
+
* System architecture. Examples include: x86-64, x86, and ARMv7.
|
20
|
+
* Ruby and Rake versions that run Thermite.
|
21
|
+
* The version (and/or git revision) of Thermite.
|
22
|
+
* If it's an error related to Rust, the version of Rust, Cargo, and how you installed it.
|
23
|
+
* A detailed list of steps to reproduce the bug. A minimal testcase would be very helpful,
|
24
|
+
if possible.
|
25
|
+
* If there any any error messages in the console, copying them in the bug summary will be
|
26
|
+
very helpful.
|
27
|
+
|
28
|
+
## Filing Pull Requests
|
29
|
+
|
30
|
+
Here are some things to keep in mind as you file a pull request to fix a bug, add a new feature,
|
31
|
+
etc.:
|
32
|
+
|
33
|
+
* Travis CI is used to make sure that the project conforms to the coding standards.
|
34
|
+
* If your PR changes the behavior of an existing feature, or adds a new feature, please add/edit
|
35
|
+
the RDoc inline documentation (using the Markdown format). You can see what it looks like in the
|
36
|
+
rendered documentation by running `bundle exec rake rdoc`.
|
37
|
+
* Please ensure that your changes follow the Rubocop-enforced coding standard, by running
|
38
|
+
`bundle exec rake rubocop`.
|
39
|
+
* If you are contributing a nontrivial change, please add an entry to `NEWS.md`. The format is
|
40
|
+
similar to the one described at [Keep a Changelog](http://keepachangelog.com/).
|
41
|
+
* Please make sure your commits are rebased onto the latest commit in the master branch, and that
|
42
|
+
you limit/squash the number of commits created to a "feature"-level. For instance:
|
43
|
+
|
44
|
+
bad:
|
45
|
+
|
46
|
+
```
|
47
|
+
commit 1: add foo algorithm
|
48
|
+
commit 2: run rustfmt
|
49
|
+
commit 3: add test
|
50
|
+
commit 4: add docs
|
51
|
+
commit 5: add bar
|
52
|
+
commit 6: add test + docs
|
53
|
+
```
|
54
|
+
|
55
|
+
good:
|
56
|
+
|
57
|
+
```
|
58
|
+
commit 1: add foo algorithm
|
59
|
+
commit 2: add bar
|
60
|
+
```
|
61
|
+
|
62
|
+
If you are continuing the work of another person's PR and need to rebase/squash, please retain the
|
63
|
+
attribution of the original author(s) and continue the work in subsequent commits.
|
data/NEWS.md
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# Changes by Version
|
2
|
+
|
3
|
+
## Unreleased
|
4
|
+
|
5
|
+
## [0.2.0] - 2016-06-30
|
6
|
+
|
7
|
+
### Added
|
8
|
+
|
9
|
+
* Config options can be set in `Cargo.toml` (and overrides the options set in the `Thermite::Tasks`
|
10
|
+
constructor)
|
11
|
+
|
12
|
+
### Changed
|
13
|
+
|
14
|
+
* Git tag formats are configurable via `git_tag_format` - defaults to basic semver format
|
15
|
+
|
16
|
+
### Fixed
|
17
|
+
|
18
|
+
* Accessing the TOML config file when searching for Rust binaries
|
19
|
+
|
20
|
+
## [0.1.0] - 2016-06-28
|
21
|
+
|
22
|
+
Initial release.
|
23
|
+
|
24
|
+
[0.2.0]: https://github.com/malept/thermite/compare/v0.1.0...v0.2.0
|
25
|
+
[0.1.0]: https://github.com/malept/thermite/releases/tag/v0.1.0
|
data/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/malept/thermite)
|
4
4
|
[](http://inch-ci.org/github/malept/thermite)
|
5
|
+
[](https://rubygems.org/gems/thermite)
|
5
6
|
|
6
7
|
Thermite is a Rake-based helper for building and distributing Rust-based Ruby extensions.
|
7
8
|
|
@@ -23,12 +24,31 @@ Thermite::Tasks.new
|
|
23
24
|
|
24
25
|
Run `rake -T` to view all of the available tasks in the `thermite` namespace.
|
25
26
|
|
26
|
-
|
27
|
-
|
27
|
+
### Configuration
|
28
|
+
|
29
|
+
Task configuration for your project can be set in two ways:
|
30
|
+
|
31
|
+
* passing arguments to `Thermite::Tasks.new`
|
32
|
+
* adding a `package.metadata.thermite` section to `Cargo.toml`. These settings override the
|
33
|
+
arguments passed to the `Tasks` class. Due to the conflict, it is infeasible for
|
34
|
+
`cargo_project_path` to be set in this way. Example section:
|
35
|
+
|
36
|
+
```toml
|
37
|
+
[package.metadata.thermite]
|
38
|
+
|
39
|
+
github_releases = true
|
40
|
+
```
|
41
|
+
|
42
|
+
Possible options:
|
28
43
|
|
29
44
|
* `cargo_project_path` - the path to the Cargo project. Defaults to the current working directory.
|
30
45
|
* `github_releases` - whether to look for Rust binaries via GitHub releases when installing
|
31
46
|
the gem, and `cargo` is not found. Defaults to `false`.
|
47
|
+
* `git_tag_format` - when `github_releases` is enabled, a regular expression (expressed as a
|
48
|
+
`String`) that determines which tagged releases to look for precompiled Rust tarballs. One group
|
49
|
+
must be specified that indicates the version number to be used in the tarball filename. Defaults
|
50
|
+
to `vN.N.N`, where `N` is any n-digit number. In this case, the group is around the
|
51
|
+
entire expression.
|
32
52
|
* `ruby_project_path` - the top-level directory of the Ruby gem's project. Defaults to the
|
33
53
|
current working directory.
|
34
54
|
|
@@ -50,6 +70,10 @@ According to Wikipedia:
|
|
50
70
|
* A common thermite reaction uses iron oxide and aluminum to produce iron and aluminum oxide:
|
51
71
|
Fe<sub>2</sub>O<sub>3</sub> + 2Al → 2Fe + Al<sub>2</sub>O<sub>3</sub>
|
52
72
|
|
73
|
+
## [Release Notes](https://github.com/malept/thermite/blob/master/NEWS.md)
|
74
|
+
|
75
|
+
## [Contributing](https://github.com/malept/thermite/blob/master/CONTRIBUTING.md)
|
76
|
+
|
53
77
|
## Legal
|
54
78
|
|
55
79
|
This gem is licensed under the MIT license.
|
data/lib/thermite/config.rb
CHANGED
@@ -134,11 +134,45 @@ module Thermite
|
|
134
134
|
ruby_path('lib', shared_library)
|
135
135
|
end
|
136
136
|
|
137
|
+
#
|
138
|
+
# The basic semantic versioning format.
|
139
|
+
#
|
140
|
+
DEFAULT_TAG_FORMAT = /^(v\d+\.\d+\.\d+)$/
|
141
|
+
|
142
|
+
#
|
143
|
+
# The format (as a regular expression) that git tags containing Rust binary
|
144
|
+
# tarballs are supposed to match. Defaults to `DEFAULT_TAG_FORMAT`.
|
145
|
+
#
|
146
|
+
def git_tag_format
|
147
|
+
@git_tag_format ||= begin
|
148
|
+
if @options[:git_tag_format]
|
149
|
+
Regexp.new(@options[:git_tag_format])
|
150
|
+
else
|
151
|
+
DEFAULT_TAG_FORMAT
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
137
156
|
#
|
138
157
|
# Parsed TOML object (courtesy of `tomlrb`).
|
139
158
|
#
|
140
159
|
def toml
|
141
160
|
@toml ||= Tomlrb.load_file(rust_path('Cargo.toml'), symbolize_keys: true)
|
142
161
|
end
|
162
|
+
|
163
|
+
#
|
164
|
+
# The Thermite-specific config from the TOML file.
|
165
|
+
#
|
166
|
+
def toml_config
|
167
|
+
@toml_config ||= begin
|
168
|
+
# Not using .dig to be Ruby < 2.3 compatible
|
169
|
+
if toml && toml[:package] && toml[:package][:metadata] &&
|
170
|
+
toml[:package][:metadata][:thermite]
|
171
|
+
toml[:package][:metadata][:thermite]
|
172
|
+
else
|
173
|
+
{}
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
143
177
|
end
|
144
178
|
end
|
@@ -42,7 +42,7 @@ module Thermite
|
|
42
42
|
def download_latest_binary_from_github_release
|
43
43
|
return false unless options[:github_releases]
|
44
44
|
installed_binary = false
|
45
|
-
github_uri = toml[:package][:repository]
|
45
|
+
github_uri = config.toml[:package][:repository]
|
46
46
|
each_github_release(github_uri) do |version, download_uri|
|
47
47
|
tgz = download_binary_from_github_release(download_uri, version)
|
48
48
|
next unless tgz
|
@@ -63,8 +63,10 @@ module Thermite
|
|
63
63
|
def each_github_release(github_uri)
|
64
64
|
releases_uri = "#{github_uri}/releases.atom"
|
65
65
|
feed = REXML::Document.new(http_get(releases_uri))
|
66
|
-
REXML::XPath.each(feed, '//entry/title
|
67
|
-
|
66
|
+
REXML::XPath.each(feed, '//entry/title/text()') do |tag|
|
67
|
+
match = config.git_tag_format.match(tag.to_s)
|
68
|
+
next unless match
|
69
|
+
version = match[1]
|
68
70
|
download_uri = "#{github_uri}/releases/download/#{tag}/#{config.tarball_filename(version)}"
|
69
71
|
|
70
72
|
yield(version, download_uri)
|
data/lib/thermite/tasks.rb
CHANGED
@@ -54,9 +54,17 @@ module Thermite
|
|
54
54
|
# working directory.
|
55
55
|
# * `github_releases` - whether to look for rust binaries via GitHub releases when installing
|
56
56
|
# the gem, and `cargo` is not found. Defaults to `false`.
|
57
|
+
# * `git_tag_format` - when `github_releases` is enabled, a regular expression (expressed as a
|
58
|
+
# `String`) that determines which tagged releases to look for precompiled Rust tarballs.
|
59
|
+
# One group must be specified that indicates the version number to be used in the tarball
|
60
|
+
# filename. Defaults to `vN.N.N`, where `N` is any n-digit number. In this case, the group is
|
61
|
+
# around the entire expression.
|
57
62
|
# * `ruby_project_path` - the toplevel directory of the Ruby gem's project. Defaults to the
|
58
63
|
# current working directory.
|
59
64
|
#
|
65
|
+
# These values can be overridden by values with the same key name in the
|
66
|
+
# `package.metadata.thermite` section of `Cargo.toml`, if that section exists.
|
67
|
+
#
|
60
68
|
attr_reader :options
|
61
69
|
|
62
70
|
#
|
@@ -71,6 +79,7 @@ module Thermite
|
|
71
79
|
def initialize(options = {})
|
72
80
|
@options = options
|
73
81
|
@config = Config.new(options)
|
82
|
+
@options.merge!(@config.toml_config)
|
74
83
|
define_build_task
|
75
84
|
define_clean_task
|
76
85
|
define_test_task
|
data/thermite.gemspec
CHANGED
@@ -3,7 +3,7 @@ require 'English'
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = 'thermite'
|
6
|
-
s.version = '0.
|
6
|
+
s.version = '0.2.0'
|
7
7
|
s.summary = 'Rake helpers for Rust+Ruby'
|
8
8
|
s.description = 'A Rake-based helper for building and distributing Rust-based Ruby extensions'
|
9
9
|
|
@@ -15,6 +15,8 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
|
16
16
|
s.require_paths = %w(lib)
|
17
17
|
|
18
|
+
# Mostly due to tomlrb
|
19
|
+
s.required_ruby_version = '>= 2.0.0'
|
18
20
|
s.add_runtime_dependency 'rake', '~> 11'
|
19
21
|
s.add_runtime_dependency 'minitar', '~> 0.5'
|
20
22
|
s.add_runtime_dependency 'tomlrb', '~> 1.2'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thermite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Lee
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -91,8 +91,10 @@ files:
|
|
91
91
|
- ".rubocop.yml"
|
92
92
|
- ".travis.yml"
|
93
93
|
- ".yardopts"
|
94
|
+
- CONTRIBUTING.md
|
94
95
|
- Gemfile
|
95
96
|
- LICENSE
|
97
|
+
- NEWS.md
|
96
98
|
- README.md
|
97
99
|
- Rakefile
|
98
100
|
- lib/thermite/cargo.rb
|
@@ -113,7 +115,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
113
115
|
requirements:
|
114
116
|
- - ">="
|
115
117
|
- !ruby/object:Gem::Version
|
116
|
-
version:
|
118
|
+
version: 2.0.0
|
117
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
120
|
requirements:
|
119
121
|
- - ">="
|