rake_dependencies 0.16.1.pre1 → 0.16.1.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/README.md +55 -1
- data/lib/rake_dependencies/tasks/all.rb +19 -1
- data/lib/rake_dependencies/tasks/ensure.rb +12 -2
- data/lib/rake_dependencies/tasks/extract.rb +17 -13
- data/lib/rake_dependencies/tasks/install.rb +78 -0
- data/lib/rake_dependencies/tasks.rb +2 -1
- data/lib/rake_dependencies/version.rb +1 -1
- data/rake_dependencies.gemspec +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b677ec56cc6b429fcb7bd61f37774b8c16b59518207ee9854077ca03f78155c1
|
4
|
+
data.tar.gz: 595cfaf1f921dd1aa59324ed36e7966978e26d550c158f90e6e7f8e6c7801232
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dc9c6ce97449ced353b879752bbbaf1ae805244123e4d5d6695dba031cdce785be80bd5624b24dbe8a9dc0e6eb6984c74740f9b83e1c0938d71a5bcb6820008e
|
7
|
+
data.tar.gz: 6fbbd0649e0fee2495911b1f4dea52728a039fb466d35be9cc02545abe14e5b65781e3ba3b6849a97b436964a926b37e759ca634418a19bf89e90301108f6215
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rake_dependencies (0.16.1.
|
4
|
+
rake_dependencies (0.16.1.pre2)
|
5
5
|
hamster (~> 3.0)
|
6
6
|
minitar (~> 0.6)
|
7
7
|
rubyzip (~> 1.1)
|
@@ -56,7 +56,7 @@ PLATFORMS
|
|
56
56
|
DEPENDENCIES
|
57
57
|
activesupport (~> 4.2)
|
58
58
|
bundler (~> 1.14)
|
59
|
-
fakefs (~> 0.
|
59
|
+
fakefs (~> 0.18)
|
60
60
|
gem-release (~> 0.7)
|
61
61
|
rake (~> 11.0)
|
62
62
|
rake_dependencies!
|
data/README.md
CHANGED
@@ -81,19 +81,49 @@ task :provision_database => ['terraform:ensure'] do
|
|
81
81
|
end
|
82
82
|
```
|
83
83
|
|
84
|
+
If the `installation_directory` attribute is supplied, an additional `install`
|
85
|
+
task will be defined:
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
RakeDependencies::Tasks::All.new do |t|
|
89
|
+
t.namespace = :terraform
|
90
|
+
t.dependency = 'terraform'
|
91
|
+
|
92
|
+
# ...
|
93
|
+
t.installation_directory = "#{ENV['HOME']}/bin"
|
94
|
+
# ...
|
95
|
+
end
|
96
|
+
```
|
97
|
+
|
98
|
+
Then:
|
99
|
+
|
100
|
+
```bash
|
101
|
+
> rake -T
|
102
|
+
rake terraform:clean # Clean vendored terraform
|
103
|
+
rake terraform:download # Download terraform distribution
|
104
|
+
rake terraform:ensure # Ensure terraform present
|
105
|
+
rake terraform:extract # Extract terraform archive
|
106
|
+
rake terraform:fetch # Fetch terraform
|
107
|
+
rake terraform:install # Install terraform
|
108
|
+
```
|
109
|
+
|
110
|
+
The `<ns>:install` task copies the binary into the defined installation
|
111
|
+
directory which can be anywhere on the filesystem.
|
112
|
+
|
84
113
|
The `RakeDependencies::Tasks::All` tasklib supports the following configuration
|
85
114
|
parameters:
|
86
115
|
|
87
116
|
| Name | Description | Default | Required |
|
88
117
|
|-------------------------------|-----------------------------------------------------------------------------------------------------------------------|----------------------------------|:--------:|
|
89
118
|
| `namespace` | The namespace in which to define the tasks | - | no |
|
90
|
-
| `dependency` | The name of the dependency, used in status reporting
|
119
|
+
| `dependency` | The name of the dependency, used in status reporting and as the default binary name | - | yes |
|
91
120
|
| `version` | The version of the dependency to manage, only required if used in templates or `needs_fetch` | - | no |
|
92
121
|
| `path` | The path in which to install the dependency | - | yes |
|
93
122
|
| `type` | The archive type of the distribution, one of `:zip`, `:tar_gz`, `:tgz` or `:uncompressed` | `:zip` | yes |
|
94
123
|
| `os_ids` | A map of platforms to OS identifiers to use in templates, containing entries for `:mac` and `:linux` | `{:mac: 'mac', :linux: 'linux'}` | yes |
|
95
124
|
| `distribution_directory` | The name of the directory under the supplied path into which to download the distribution | `'dist'` | yes |
|
96
125
|
| `binary_directory` | The name of the directory under the supplied path into which to extract/copy the binaries | `'bin'` | yes |
|
126
|
+
| `installation_directory` | The name of the directory into which to install the binaries, anywhere on the file system | - | no |
|
97
127
|
| `uri_template` | A template for the URI of the distribution | - | yes |
|
98
128
|
| `file_name_template` | A template for the name of the downloaded file | - | yes |
|
99
129
|
| `target_name_template` | A template for the name of the binary after extraction/copying | - | no |
|
@@ -102,6 +132,7 @@ parameters:
|
|
102
132
|
| `clean_task_name` | The name of the clean task, required if it should be different from the default | `:clean` | yes |
|
103
133
|
| `download_task_name` | The name of the download task, required if it should be different from the default | `:download` | yes |
|
104
134
|
| `extract_task_name` | The name of the extract task, required if it should be different from the default | `:extract` | yes |
|
135
|
+
| `install_task_name` | The name of the install task, required if it should be different from the default | `:install` | no |
|
105
136
|
| `fetch_task_name` | The name of the fetch task, required if it should be different from the default | `:fetch` | yes |
|
106
137
|
| `ensure_task_name` | The name of the ensure task, required if it should be different from the default | `:ensure` | yes |
|
107
138
|
|
@@ -125,6 +156,7 @@ in its definition:
|
|
125
156
|
* `RakeDependencies::Tasks::Clean`
|
126
157
|
* `RakeDependencies::Tasks::Download`
|
127
158
|
* `RakeDependencies::Tasks::Extract`
|
159
|
+
* `RakeDependencies::Tasks::Install`
|
128
160
|
* `RakeDependencies::Tasks::Fetch`
|
129
161
|
* `RakeDependencies::Tasks::Ensure`
|
130
162
|
|
@@ -192,6 +224,27 @@ Notes:
|
|
192
224
|
* The extractor map can be overridden but should include entries for all of the
|
193
225
|
above.
|
194
226
|
|
227
|
+
### `RakeDependencies::Tasks::Install`
|
228
|
+
|
229
|
+
The `RakeDependencies::Tasks::Install` tasklib supports the following
|
230
|
+
configuration parameters:
|
231
|
+
|
232
|
+
| Name | Description | Default | Required |
|
233
|
+
|--------------------------|------------------------------------------------------------------------------------------------------|------------------------------------|:--------:|
|
234
|
+
| `name` | The name of the task, required if it should be different from the default | `:install` | yes |
|
235
|
+
| `dependency` | The name of the dependency, used in status reporting | - | yes |
|
236
|
+
| `version` | The version of the dependency to manage, only required if used in templates | - | no |
|
237
|
+
| `path` | The path in which to install the dependency | - | yes |
|
238
|
+
| `type` | The archive type of the original distribution, one of `:zip`, `:tar_gz`, `:tgz` or `:uncompressed` | `:zip` | yes |
|
239
|
+
| `os_ids` | A map of platforms to OS identifiers to use in templates, containing entries for `:mac` and `:linux` | `{:mac: 'mac', :linux: 'linux'}` | yes |
|
240
|
+
| `binary_directory` | The name of the directory under the supplied path into which to extract/copy the binaries | `'bin'` | yes |
|
241
|
+
| `installation_directory` | The name of the directory into which the binary should be installed | - | yes |
|
242
|
+
| `binary_name_template` | A template for the name of the binary | - | yes |
|
243
|
+
|
244
|
+
Notes:
|
245
|
+
* The templates have the same instance variables in scope when rendered as
|
246
|
+
mentioned above.
|
247
|
+
|
195
248
|
### `RakeDependencies::Tasks::Fetch`
|
196
249
|
|
197
250
|
The `RakeDependencies::Tasks::Fetch` tasklib supports the following
|
@@ -220,6 +273,7 @@ configuration parameters:
|
|
220
273
|
| `clean_task` | The full name including namespaces of the clean task | `<current-namespace>:clean` | yes |
|
221
274
|
| `download_task` | The full name including namespaces of the download task | `<current-namespace>:download` | yes |
|
222
275
|
| `extract_task` | The full name including namespaces of the extract task | `<current-namespace>:extract` | yes |
|
276
|
+
| `install_task` | The full name including namespaces of the install task | `<current-namespace>:install` | yes |
|
223
277
|
|
224
278
|
Notes:
|
225
279
|
* The templates have the same instance variables in scope when rendered as
|
@@ -19,6 +19,7 @@ module RakeDependencies
|
|
19
19
|
|
20
20
|
parameter :distribution_directory, default: 'dist'
|
21
21
|
parameter :binary_directory, default: 'bin'
|
22
|
+
parameter :installation_directory
|
22
23
|
|
23
24
|
parameter :uri_template, :required => true
|
24
25
|
parameter :file_name_template, :required => true
|
@@ -30,6 +31,7 @@ module RakeDependencies
|
|
30
31
|
parameter :clean_task_name, :default => :clean
|
31
32
|
parameter :download_task_name, :default => :download
|
32
33
|
parameter :extract_task_name, :default => :extract
|
34
|
+
parameter :install_task_name, :default => :install
|
33
35
|
parameter :fetch_task_name, :default => :fetch
|
34
36
|
parameter :ensure_task_name, :default => :ensure
|
35
37
|
|
@@ -86,6 +88,21 @@ module RakeDependencies
|
|
86
88
|
t.strip_path_template = strip_path_template
|
87
89
|
t.target_name_template = target_name_template
|
88
90
|
end
|
91
|
+
Install.new do |t|
|
92
|
+
t.name = install_task_name
|
93
|
+
|
94
|
+
t.dependency = dependency
|
95
|
+
t.version = version
|
96
|
+
t.path = path
|
97
|
+
t.type = type
|
98
|
+
|
99
|
+
t.os_ids = os_ids
|
100
|
+
|
101
|
+
t.binary_directory = binary_directory
|
102
|
+
t.binary_name_template = target_name_template || dependency
|
103
|
+
|
104
|
+
t.installation_directory = installation_directory
|
105
|
+
end if installation_directory
|
89
106
|
Fetch.new do |t|
|
90
107
|
t.name = fetch_task_name
|
91
108
|
|
@@ -108,8 +125,9 @@ module RakeDependencies
|
|
108
125
|
t.clean_task = clean_task_name
|
109
126
|
t.download_task = download_task_name
|
110
127
|
t.extract_task = extract_task_name
|
128
|
+
t.install_task = install_task_name
|
111
129
|
end
|
112
130
|
end
|
113
131
|
end
|
114
132
|
end
|
115
|
-
end
|
133
|
+
end
|
@@ -16,6 +16,7 @@ module RakeDependencies
|
|
16
16
|
parameter :clean_task, default: :clean
|
17
17
|
parameter :download_task, default: :download
|
18
18
|
parameter :extract_task, default: :extract
|
19
|
+
parameter :install_task, default: :install
|
19
20
|
|
20
21
|
def process_arguments args
|
21
22
|
super(args)
|
@@ -27,6 +28,15 @@ module RakeDependencies
|
|
27
28
|
download = Rake::Task[scoped_task_name(download_task)]
|
28
29
|
extract = Rake::Task[scoped_task_name(extract_task)]
|
29
30
|
|
31
|
+
resolved_install_task = scoped_task_name(install_task)
|
32
|
+
install = if Rake::Task.task_defined?(resolved_install_task)
|
33
|
+
Rake::Task[scoped_task_name(install_task)]
|
34
|
+
else
|
35
|
+
no_op_task = Object.new
|
36
|
+
def no_op_task.invoke; end
|
37
|
+
no_op_task
|
38
|
+
end
|
39
|
+
|
30
40
|
desc "Ensure #{dependency} present"
|
31
41
|
task name do
|
32
42
|
parameters = {
|
@@ -35,7 +45,7 @@ module RakeDependencies
|
|
35
45
|
binary_directory: binary_directory
|
36
46
|
}
|
37
47
|
if needs_fetch.call(parameters)
|
38
|
-
[clean, download, extract].map(&:invoke)
|
48
|
+
[clean, download, extract, install].map(&:invoke)
|
39
49
|
end
|
40
50
|
end
|
41
51
|
end
|
@@ -47,4 +57,4 @@ module RakeDependencies
|
|
47
57
|
end
|
48
58
|
end
|
49
59
|
end
|
50
|
-
end
|
60
|
+
end
|
@@ -46,8 +46,8 @@ module RakeDependencies
|
|
46
46
|
}
|
47
47
|
|
48
48
|
distribution_file_name = Template.new(file_name_template)
|
49
|
-
|
50
|
-
|
49
|
+
.with_parameters(parameters)
|
50
|
+
.render
|
51
51
|
distribution_file_directory = File.join(path, distribution_directory)
|
52
52
|
distribution_file_path = File.join(
|
53
53
|
distribution_file_directory, distribution_file_name)
|
@@ -57,14 +57,14 @@ module RakeDependencies
|
|
57
57
|
options = {}
|
58
58
|
if strip_path_template
|
59
59
|
options[:strip_path] = Template.new(strip_path_template)
|
60
|
-
|
61
|
-
|
60
|
+
.with_parameters(parameters)
|
61
|
+
.render
|
62
62
|
end
|
63
63
|
|
64
64
|
if target_name_template
|
65
65
|
options[:rename_to] = Template.new(target_name_template)
|
66
|
-
|
67
|
-
|
66
|
+
.with_parameters(parameters)
|
67
|
+
.render
|
68
68
|
end
|
69
69
|
|
70
70
|
extractor = extractor_for_extension.new(
|
@@ -95,14 +95,18 @@ module RakeDependencies
|
|
95
95
|
|
96
96
|
def ext
|
97
97
|
case resolved_type
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
98
|
+
when :tar_gz then
|
99
|
+
'.tar.gz'
|
100
|
+
when :tgz then
|
101
|
+
'.tgz'
|
102
|
+
when :zip then
|
103
|
+
'.zip'
|
104
|
+
when :uncompressed then
|
105
|
+
''
|
106
|
+
else
|
107
|
+
raise "Unknown type: #{type}"
|
104
108
|
end
|
105
109
|
end
|
106
110
|
end
|
107
111
|
end
|
108
|
-
end
|
112
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require_relative '../tasklib'
|
2
|
+
|
3
|
+
module RakeDependencies
|
4
|
+
module Tasks
|
5
|
+
class Install < TaskLib
|
6
|
+
parameter :name, default: :install
|
7
|
+
|
8
|
+
parameter :os_ids, default: {
|
9
|
+
mac: 'mac',
|
10
|
+
linux: 'linux'
|
11
|
+
}
|
12
|
+
|
13
|
+
parameter :dependency, required: true
|
14
|
+
parameter :version
|
15
|
+
parameter :path, required: true
|
16
|
+
parameter :type, default: :zip
|
17
|
+
|
18
|
+
parameter :binary_directory, default: 'bin'
|
19
|
+
parameter :binary_name_template, required: true
|
20
|
+
|
21
|
+
parameter :installation_directory, required: true
|
22
|
+
|
23
|
+
def process_arguments args
|
24
|
+
super(args)
|
25
|
+
self.name = args[0] if args[0]
|
26
|
+
end
|
27
|
+
|
28
|
+
def define
|
29
|
+
desc "Install #{dependency}"
|
30
|
+
task name do
|
31
|
+
parameters = {
|
32
|
+
version: version,
|
33
|
+
platform: platform,
|
34
|
+
os_id: os_id,
|
35
|
+
ext: ext
|
36
|
+
}
|
37
|
+
|
38
|
+
binary_file_name = Template.new(binary_name_template)
|
39
|
+
.with_parameters(parameters)
|
40
|
+
.render
|
41
|
+
binary_file_directory = File.join(path, binary_directory)
|
42
|
+
binary_file_path = File.join(
|
43
|
+
binary_file_directory, binary_file_name)
|
44
|
+
|
45
|
+
mkdir_p installation_directory
|
46
|
+
cp binary_file_path, installation_directory
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def os_id
|
51
|
+
os_ids[platform]
|
52
|
+
end
|
53
|
+
|
54
|
+
def platform
|
55
|
+
RUBY_PLATFORM =~ /darwin/ ? :mac : :linux
|
56
|
+
end
|
57
|
+
|
58
|
+
def resolved_type
|
59
|
+
type.is_a?(Hash) ? type[platform].to_sym : type.to_sym
|
60
|
+
end
|
61
|
+
|
62
|
+
def ext
|
63
|
+
case resolved_type
|
64
|
+
when :tar_gz then
|
65
|
+
'.tar.gz'
|
66
|
+
when :tgz then
|
67
|
+
'.tgz'
|
68
|
+
when :zip then
|
69
|
+
'.zip'
|
70
|
+
when :uncompressed then
|
71
|
+
''
|
72
|
+
else
|
73
|
+
raise "Unknown type: #{type}"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
data/rake_dependencies.gemspec
CHANGED
@@ -33,6 +33,6 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
34
34
|
spec.add_development_dependency 'gem-release', '~> 0.7'
|
35
35
|
spec.add_development_dependency 'activesupport', '~> 4.2'
|
36
|
-
spec.add_development_dependency 'fakefs', '~> 0.
|
36
|
+
spec.add_development_dependency 'fakefs', '~> 0.18'
|
37
37
|
spec.add_development_dependency 'simplecov', '~> 0.13'
|
38
38
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rake_dependencies
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.16.1.
|
4
|
+
version: 0.16.1.pre2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toby Clemson
|
@@ -128,14 +128,14 @@ dependencies:
|
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '0.
|
131
|
+
version: '0.18'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: '0.
|
138
|
+
version: '0.18'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: simplecov
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -196,6 +196,7 @@ files:
|
|
196
196
|
- lib/rake_dependencies/tasks/ensure.rb
|
197
197
|
- lib/rake_dependencies/tasks/extract.rb
|
198
198
|
- lib/rake_dependencies/tasks/fetch.rb
|
199
|
+
- lib/rake_dependencies/tasks/install.rb
|
199
200
|
- lib/rake_dependencies/template.rb
|
200
201
|
- lib/rake_dependencies/version.rb
|
201
202
|
- rake_dependencies.gemspec
|