rake_dependencies 3.2.0.pre.1 → 3.2.0.pre.4
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/Gemfile +2 -0
- data/Gemfile.lock +35 -6
- data/Rakefile +67 -45
- data/bin/console +4 -3
- data/lib/rake_dependencies/extractors.rb +195 -42
- data/lib/rake_dependencies/kernel_extensions.rb +2 -0
- data/lib/rake_dependencies/platform_names.rb +6 -2
- data/lib/rake_dependencies/task_sets/all.rb +37 -24
- data/lib/rake_dependencies/task_sets.rb +3 -1
- data/lib/rake_dependencies/tasks/clean.rb +7 -5
- data/lib/rake_dependencies/tasks/download.rb +12 -13
- data/lib/rake_dependencies/tasks/ensure.rb +6 -4
- data/lib/rake_dependencies/tasks/extract.rb +61 -41
- data/lib/rake_dependencies/tasks/fetch.rb +7 -7
- data/lib/rake_dependencies/tasks/install.rb +17 -18
- data/lib/rake_dependencies/tasks.rb +2 -0
- data/lib/rake_dependencies/template.rb +8 -5
- data/lib/rake_dependencies/version.rb +3 -1
- data/lib/rake_dependencies.rb +2 -0
- data/rake_dependencies.gemspec +61 -0
- metadata +75 -17
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rake_factory'
|
2
4
|
|
3
5
|
require_relative '../tasks/clean'
|
@@ -6,7 +8,6 @@ require_relative '../tasks/ensure'
|
|
6
8
|
require_relative '../tasks/extract'
|
7
9
|
require_relative '../tasks/fetch'
|
8
10
|
|
9
|
-
|
10
11
|
module RakeDependencies
|
11
12
|
module TaskSets
|
12
13
|
class All < RakeFactory::TaskSet
|
@@ -42,30 +43,42 @@ module RakeDependencies
|
|
42
43
|
parameter :fetch_task_name, default: :fetch
|
43
44
|
parameter :ensure_task_name, default: :ensure
|
44
45
|
|
45
|
-
task
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
}
|
46
|
+
task(
|
47
|
+
Tasks::Clean, {
|
48
|
+
name: (RakeFactory::DynamicValue.new { |ts| ts.clean_task_name })
|
49
|
+
}
|
50
|
+
)
|
51
|
+
task(
|
52
|
+
Tasks::Download, {
|
53
|
+
name: (RakeFactory::DynamicValue.new { |ts| ts.download_task_name })
|
54
|
+
}
|
55
|
+
)
|
56
|
+
task(
|
57
|
+
Tasks::Extract, {
|
58
|
+
name: (RakeFactory::DynamicValue.new { |ts| ts.extract_task_name })
|
59
|
+
}
|
60
|
+
)
|
61
|
+
task(
|
62
|
+
Tasks::Fetch, {
|
63
|
+
name: (RakeFactory::DynamicValue.new { |ts| ts.fetch_task_name })
|
64
|
+
}
|
65
|
+
)
|
66
|
+
task(
|
67
|
+
Tasks::Ensure, {
|
68
|
+
name: (RakeFactory::DynamicValue.new { |ts| ts.ensure_task_name })
|
69
|
+
}
|
70
|
+
)
|
71
|
+
task(
|
72
|
+
Tasks::Install, {
|
73
|
+
name:
|
74
|
+
(RakeFactory::DynamicValue.new { |ts| ts.install_task_name }),
|
75
|
+
binary_name_template:
|
76
|
+
(RakeFactory::DynamicValue.new do |ts|
|
77
|
+
ts.target_binary_name_template || ts.dependency
|
78
|
+
end),
|
58
79
|
define_if: ->(ts) { ts.installation_directory }
|
59
|
-
|
60
|
-
|
61
|
-
ts.target_binary_name_template || ts.dependency
|
62
|
-
end
|
63
|
-
task Tasks::Fetch, name: RakeFactory::DynamicValue.new { |ts|
|
64
|
-
ts.fetch_task_name
|
65
|
-
}
|
66
|
-
task Tasks::Ensure, name: RakeFactory::DynamicValue.new { |ts|
|
67
|
-
ts.ensure_task_name
|
68
|
-
}
|
80
|
+
}
|
81
|
+
)
|
69
82
|
end
|
70
83
|
end
|
71
84
|
end
|
@@ -1,19 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rake_factory'
|
2
4
|
|
3
5
|
module RakeDependencies
|
4
6
|
module Tasks
|
5
7
|
class Clean < RakeFactory::Task
|
6
8
|
default_name :clean
|
7
|
-
default_description
|
9
|
+
default_description(RakeFactory::DynamicValue.new do |t|
|
8
10
|
"Clean vendored #{t.dependency}"
|
9
|
-
|
11
|
+
end)
|
10
12
|
|
11
|
-
parameter :dependency, :
|
12
|
-
parameter :path, :
|
13
|
+
parameter :dependency, required: true
|
14
|
+
parameter :path, required: true
|
13
15
|
|
14
16
|
action do |t|
|
15
17
|
rm_rf t.path
|
16
18
|
end
|
17
19
|
end
|
18
20
|
end
|
19
|
-
end
|
21
|
+
end
|
@@ -1,5 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'down'
|
1
4
|
require 'rake_factory'
|
2
|
-
require 'open-uri'
|
3
5
|
require 'rubygems'
|
4
6
|
|
5
7
|
require_relative '../template'
|
@@ -9,9 +11,9 @@ module RakeDependencies
|
|
9
11
|
module Tasks
|
10
12
|
class Download < RakeFactory::Task
|
11
13
|
default_name :download
|
12
|
-
default_description
|
14
|
+
default_description(RakeFactory::DynamicValue.new do |t|
|
13
15
|
"Download #{t.dependency} distribution"
|
14
|
-
|
16
|
+
end)
|
15
17
|
|
16
18
|
parameter :type, default: :zip
|
17
19
|
|
@@ -42,9 +44,10 @@ module RakeDependencies
|
|
42
44
|
.with_parameters(parameters)
|
43
45
|
.render
|
44
46
|
download_file_directory = File.join(path, distribution_directory)
|
45
|
-
download_file_path = File.join(download_file_directory,
|
47
|
+
download_file_path = File.join(download_file_directory,
|
48
|
+
download_file_name)
|
46
49
|
|
47
|
-
temporary_file =
|
50
|
+
temporary_file = Down.download(uri)
|
48
51
|
|
49
52
|
mkdir_p download_file_directory
|
50
53
|
cp temporary_file.path, download_file_path
|
@@ -70,14 +73,10 @@ module RakeDependencies
|
|
70
73
|
|
71
74
|
def ext
|
72
75
|
case resolved_type
|
73
|
-
when :tar_gz then
|
74
|
-
|
75
|
-
when :
|
76
|
-
|
77
|
-
when :zip then
|
78
|
-
'.zip'
|
79
|
-
when :uncompressed then
|
80
|
-
''
|
76
|
+
when :tar_gz then '.tar.gz'
|
77
|
+
when :tgz then '.tgz'
|
78
|
+
when :zip then '.zip'
|
79
|
+
when :uncompressed then ''
|
81
80
|
else
|
82
81
|
raise "Unknown type: #{type}"
|
83
82
|
end
|
@@ -1,12 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rake_factory'
|
2
4
|
|
3
5
|
module RakeDependencies
|
4
6
|
module Tasks
|
5
7
|
class Ensure < RakeFactory::Task
|
6
8
|
default_name :ensure
|
7
|
-
default_description
|
9
|
+
default_description(RakeFactory::DynamicValue.new do |t|
|
8
10
|
"Ensure #{t.dependency} present"
|
9
|
-
|
11
|
+
end)
|
10
12
|
|
11
13
|
parameter :dependency, required: true
|
12
14
|
parameter :version
|
@@ -28,8 +30,8 @@ module RakeDependencies
|
|
28
30
|
|
29
31
|
install_name = t.scope.path_with_task_name(t.install_task_name)
|
30
32
|
install = if Rake::Task.task_defined?(install_name)
|
31
|
-
|
32
|
-
|
33
|
+
Rake::Task[install_name]
|
34
|
+
end
|
33
35
|
|
34
36
|
if needs_fetch.call(t)
|
35
37
|
[clean, download, extract, install].compact.map(&:invoke)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rake_factory'
|
2
4
|
require 'zip'
|
3
5
|
require 'rubygems'
|
@@ -9,9 +11,9 @@ module RakeDependencies
|
|
9
11
|
module Tasks
|
10
12
|
class Extract < RakeFactory::Task
|
11
13
|
default_name :extract
|
12
|
-
default_description
|
14
|
+
default_description(RakeFactory::DynamicValue.new do |t|
|
13
15
|
"Extract #{t.dependency} archive"
|
14
|
-
|
16
|
+
end)
|
15
17
|
|
16
18
|
parameter :type, default: :zip
|
17
19
|
|
@@ -19,10 +21,10 @@ module RakeDependencies
|
|
19
21
|
parameter :platform_os_names, default: PlatformNames::OS
|
20
22
|
|
21
23
|
parameter :extractors, default: {
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
24
|
+
zip: Extractors::ZipExtractor,
|
25
|
+
tar_gz: Extractors::TarGzExtractor,
|
26
|
+
tgz: Extractors::TarGzExtractor,
|
27
|
+
uncompressed: Extractors::UncompressedExtractor
|
26
28
|
}
|
27
29
|
|
28
30
|
parameter :distribution_directory, default: 'dist'
|
@@ -37,47 +39,69 @@ module RakeDependencies
|
|
37
39
|
parameter :strip_path_template
|
38
40
|
|
39
41
|
action do
|
40
|
-
|
41
|
-
|
42
|
-
platform: platform,
|
43
|
-
platform_cpu_name: platform_cpu_name,
|
44
|
-
platform_os_name: platform_os_name,
|
45
|
-
ext: ext
|
46
|
-
}
|
47
|
-
|
48
|
-
distribution_file_name = Template.new(file_name_template)
|
49
|
-
.with_parameters(parameters)
|
50
|
-
.render
|
51
|
-
distribution_file_directory = File.join(path, distribution_directory)
|
42
|
+
distribution_file_name = interpolate_file_name_template(parameters)
|
43
|
+
distribution_file_directory = relative_to_path(distribution_directory)
|
52
44
|
distribution_file_path = File.join(
|
53
|
-
|
45
|
+
distribution_file_directory, distribution_file_name
|
46
|
+
)
|
54
47
|
|
55
|
-
extraction_path =
|
48
|
+
extraction_path = relative_to_path(binary_directory)
|
56
49
|
|
57
50
|
options = {}
|
58
51
|
if strip_path_template
|
59
|
-
options[:strip_path] =
|
60
|
-
.with_parameters(parameters)
|
61
|
-
.render
|
52
|
+
options[:strip_path] = interpolate_strip_path_template(parameters)
|
62
53
|
end
|
63
54
|
|
64
55
|
if source_binary_name_template && target_binary_name_template
|
65
|
-
options[:rename_from] =
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
.with_parameters(parameters)
|
70
|
-
.render
|
56
|
+
options[:rename_from] =
|
57
|
+
interpolate_source_binary_name_template(parameters)
|
58
|
+
options[:rename_to] =
|
59
|
+
interpolate_target_binary_name_template(parameters)
|
71
60
|
end
|
72
61
|
|
73
62
|
extractor = extractor_for_extension.new(
|
74
|
-
|
75
|
-
|
76
|
-
|
63
|
+
distribution_file_path,
|
64
|
+
extraction_path,
|
65
|
+
options
|
66
|
+
)
|
77
67
|
extractor.extract
|
78
68
|
end
|
79
69
|
|
80
|
-
|
70
|
+
def parameters
|
71
|
+
{
|
72
|
+
version: version,
|
73
|
+
platform: platform,
|
74
|
+
platform_cpu_name: platform_cpu_name,
|
75
|
+
platform_os_name: platform_os_name,
|
76
|
+
ext: ext
|
77
|
+
}
|
78
|
+
end
|
79
|
+
|
80
|
+
def interpolate_template(template, parameters)
|
81
|
+
Template.new(template)
|
82
|
+
.with_parameters(parameters)
|
83
|
+
.render
|
84
|
+
end
|
85
|
+
|
86
|
+
def interpolate_file_name_template(parameters)
|
87
|
+
interpolate_template(file_name_template, parameters)
|
88
|
+
end
|
89
|
+
|
90
|
+
def interpolate_strip_path_template(parameters)
|
91
|
+
interpolate_template(strip_path_template, parameters)
|
92
|
+
end
|
93
|
+
|
94
|
+
def interpolate_source_binary_name_template(parameters)
|
95
|
+
interpolate_template(source_binary_name_template, parameters)
|
96
|
+
end
|
97
|
+
|
98
|
+
def interpolate_target_binary_name_template(parameters)
|
99
|
+
interpolate_template(target_binary_name_template, parameters)
|
100
|
+
end
|
101
|
+
|
102
|
+
def relative_to_path(other)
|
103
|
+
File.join(path, other)
|
104
|
+
end
|
81
105
|
|
82
106
|
def extractor_for_extension
|
83
107
|
extractors[resolved_type]
|
@@ -101,14 +125,10 @@ module RakeDependencies
|
|
101
125
|
|
102
126
|
def ext
|
103
127
|
case resolved_type
|
104
|
-
when :tar_gz then
|
105
|
-
|
106
|
-
when :
|
107
|
-
|
108
|
-
when :zip then
|
109
|
-
'.zip'
|
110
|
-
when :uncompressed then
|
111
|
-
''
|
128
|
+
when :tar_gz then '.tar.gz'
|
129
|
+
when :tgz then '.tgz'
|
130
|
+
when :zip then '.zip'
|
131
|
+
when :uncompressed then ''
|
112
132
|
else
|
113
133
|
raise "Unknown type: #{type}"
|
114
134
|
end
|
@@ -1,12 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rake_factory'
|
2
4
|
|
3
5
|
module RakeDependencies
|
4
6
|
module Tasks
|
5
7
|
class Fetch < RakeFactory::Task
|
6
8
|
default_name :fetch
|
7
|
-
default_description
|
9
|
+
default_description(RakeFactory::DynamicValue.new do |t|
|
8
10
|
"Fetch #{t.dependency}"
|
9
|
-
|
11
|
+
end)
|
10
12
|
|
11
13
|
parameter :dependency, required: true
|
12
14
|
parameter :download_task_name, default: :download
|
@@ -14,11 +16,9 @@ module RakeDependencies
|
|
14
16
|
|
15
17
|
action do |t|
|
16
18
|
[
|
17
|
-
|
18
|
-
|
19
|
-
].each
|
20
|
-
task.invoke
|
21
|
-
end
|
19
|
+
Rake::Task[t.scope.path_with_task_name(t.download_task_name)],
|
20
|
+
Rake::Task[t.scope.path_with_task_name(t.extract_task_name)]
|
21
|
+
].each(&:invoke)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rake_factory'
|
2
4
|
require 'rubygems'
|
3
5
|
|
@@ -7,9 +9,9 @@ module RakeDependencies
|
|
7
9
|
module Tasks
|
8
10
|
class Install < RakeFactory::Task
|
9
11
|
default_name :install
|
10
|
-
default_description
|
12
|
+
default_description(RakeFactory::DynamicValue.new do |t|
|
11
13
|
"Install #{t.dependency}"
|
12
|
-
|
14
|
+
end)
|
13
15
|
|
14
16
|
parameter :platform_cpu_names, default: PlatformNames::CPU
|
15
17
|
parameter :platform_os_names, default: PlatformNames::OS
|
@@ -26,19 +28,20 @@ module RakeDependencies
|
|
26
28
|
|
27
29
|
action do
|
28
30
|
parameters = {
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
version: version,
|
32
|
+
platform: platform,
|
33
|
+
platform_cpu_name: platform_cpu_name,
|
34
|
+
platform_os_name: platform_os_name,
|
35
|
+
ext: ext
|
34
36
|
}
|
35
37
|
|
36
38
|
binary_file_name = Template.new(binary_name_template)
|
37
|
-
|
38
|
-
|
39
|
+
.with_parameters(parameters)
|
40
|
+
.render
|
39
41
|
binary_file_directory = File.join(path, binary_directory)
|
40
42
|
binary_file_path = File.join(
|
41
|
-
|
43
|
+
binary_file_directory, binary_file_name
|
44
|
+
)
|
42
45
|
|
43
46
|
mkdir_p installation_directory
|
44
47
|
cp binary_file_path, installation_directory
|
@@ -64,14 +67,10 @@ module RakeDependencies
|
|
64
67
|
|
65
68
|
def ext
|
66
69
|
case resolved_type
|
67
|
-
when :tar_gz then
|
68
|
-
|
69
|
-
when :
|
70
|
-
|
71
|
-
when :zip then
|
72
|
-
'.zip'
|
73
|
-
when :uncompressed then
|
74
|
-
''
|
70
|
+
when :tar_gz then '.tar.gz'
|
71
|
+
when :tgz then '.tgz'
|
72
|
+
when :zip then '.zip'
|
73
|
+
when :uncompressed then ''
|
75
74
|
else
|
76
75
|
raise "Unknown type: #{type}"
|
77
76
|
end
|
@@ -1,20 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'hamster'
|
2
4
|
require 'erb'
|
3
5
|
|
4
6
|
module RakeDependencies
|
5
7
|
class Template
|
6
8
|
def initialize(
|
7
|
-
|
8
|
-
|
9
|
+
template,
|
10
|
+
parameters = {}
|
11
|
+
)
|
9
12
|
@template = template
|
10
13
|
@parameters = Hamster::Hash.new(parameters)
|
11
14
|
end
|
12
15
|
|
13
|
-
def with_parameter
|
16
|
+
def with_parameter(key, value)
|
14
17
|
Template.new(@template, @parameters.put(key, value))
|
15
18
|
end
|
16
19
|
|
17
|
-
def with_parameters
|
20
|
+
def with_parameters(pairs)
|
18
21
|
pairs.to_a.reduce(self) do |memo, parameter|
|
19
22
|
memo.with_parameter(*parameter)
|
20
23
|
end
|
@@ -29,4 +32,4 @@ module RakeDependencies
|
|
29
32
|
ERB.new(@template).result(context_binding)
|
30
33
|
end
|
31
34
|
end
|
32
|
-
end
|
35
|
+
end
|
data/lib/rake_dependencies.rb
CHANGED
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require 'rake_dependencies/version'
|
6
|
+
|
7
|
+
files = %w[
|
8
|
+
bin
|
9
|
+
lib
|
10
|
+
CODE_OF_CONDUCT.md
|
11
|
+
rake_dependencies.gemspec
|
12
|
+
Gemfile
|
13
|
+
LICENSE.txt
|
14
|
+
Rakefile
|
15
|
+
README.md
|
16
|
+
]
|
17
|
+
|
18
|
+
Gem::Specification.new do |spec|
|
19
|
+
spec.name = 'rake_dependencies'
|
20
|
+
spec.version = RakeDependencies::VERSION
|
21
|
+
spec.authors = ['InfraBlocks Maintainers']
|
22
|
+
spec.email = ['maintainers@infrablocks.io']
|
23
|
+
|
24
|
+
spec.summary = 'Rake tasks for managing build dependencies.'
|
25
|
+
spec.description = 'Provides rake tasks for downloading and extracting ' \
|
26
|
+
'tools depended on for further build activities.'
|
27
|
+
spec.homepage = 'https://github.com/infrablocks/rake_dependencies'
|
28
|
+
spec.license = 'MIT'
|
29
|
+
|
30
|
+
spec.files = `git ls-files -z`.split("\x0").select do |f|
|
31
|
+
f.match(/^(#{files.map { |g| Regexp.escape(g) }.join('|')})/)
|
32
|
+
end
|
33
|
+
spec.bindir = 'exe'
|
34
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
35
|
+
spec.require_paths = ['lib']
|
36
|
+
|
37
|
+
spec.required_ruby_version = '>= 2.7'
|
38
|
+
|
39
|
+
spec.add_dependency 'down', '~> 5.3'
|
40
|
+
spec.add_dependency 'hamster', '~> 3.0'
|
41
|
+
spec.add_dependency 'minitar', '~> 0.9'
|
42
|
+
spec.add_dependency 'rake_factory', '~> 0.23'
|
43
|
+
spec.add_dependency 'rubyzip', '>= 1.3'
|
44
|
+
|
45
|
+
spec.add_development_dependency 'activesupport'
|
46
|
+
spec.add_development_dependency 'bundler'
|
47
|
+
spec.add_development_dependency 'fakefs'
|
48
|
+
spec.add_development_dependency 'gem-release'
|
49
|
+
spec.add_development_dependency 'rake'
|
50
|
+
spec.add_development_dependency 'rake_circle_ci'
|
51
|
+
spec.add_development_dependency 'rake_github'
|
52
|
+
spec.add_development_dependency 'rake_gpg'
|
53
|
+
spec.add_development_dependency 'rake_ssh'
|
54
|
+
spec.add_development_dependency 'rspec'
|
55
|
+
spec.add_development_dependency 'rubocop'
|
56
|
+
spec.add_development_dependency 'rubocop-rake'
|
57
|
+
spec.add_development_dependency 'rubocop-rspec'
|
58
|
+
spec.add_development_dependency 'simplecov'
|
59
|
+
|
60
|
+
spec.metadata['rubygems_mfa_required'] = 'false'
|
61
|
+
end
|