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.
@@ -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 Tasks::Clean, name: RakeFactory::DynamicValue.new { |ts|
46
- ts.clean_task_name
47
- }
48
- task Tasks::Download, name: RakeFactory::DynamicValue.new { |ts|
49
- ts.download_task_name
50
- }
51
- task Tasks::Extract, name: RakeFactory::DynamicValue.new { |ts|
52
- ts.extract_task_name
53
- }
54
- task Tasks::Install, {
55
- name: RakeFactory::DynamicValue.new { |ts|
56
- ts.install_task_name
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
- } do |ts, t|
60
- t.binary_name_template =
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,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'task_sets/all'
2
4
 
3
5
  module RakeDependencies
4
6
  module TaskSets
5
7
  end
6
- end
8
+ 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 RakeFactory::DynamicValue.new { |t|
9
+ default_description(RakeFactory::DynamicValue.new do |t|
8
10
  "Clean vendored #{t.dependency}"
9
- }
11
+ end)
10
12
 
11
- parameter :dependency, :required => true
12
- parameter :path, :required => true
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 RakeFactory::DynamicValue.new { |t|
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, download_file_name)
47
+ download_file_path = File.join(download_file_directory,
48
+ download_file_name)
46
49
 
47
- temporary_file = URI.open(uri)
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
- '.tar.gz'
75
- when :tgz then
76
- '.tgz'
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 RakeFactory::DynamicValue.new { |t|
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
- Rake::Task[install_name]
32
- end
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 RakeFactory::DynamicValue.new { |t|
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
- zip: Extractors::ZipExtractor,
23
- tar_gz: Extractors::TarGzExtractor,
24
- tgz: Extractors::TarGzExtractor,
25
- uncompressed: Extractors::UncompressedExtractor
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
- parameters = {
41
- version: version,
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
- distribution_file_directory, distribution_file_name)
45
+ distribution_file_directory, distribution_file_name
46
+ )
54
47
 
55
- extraction_path = File.join(path, binary_directory)
48
+ extraction_path = relative_to_path(binary_directory)
56
49
 
57
50
  options = {}
58
51
  if strip_path_template
59
- options[:strip_path] = Template.new(strip_path_template)
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] = Template.new(source_binary_name_template)
66
- .with_parameters(parameters)
67
- .render
68
- options[:rename_to] = Template.new(target_binary_name_template)
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
- distribution_file_path,
75
- extraction_path,
76
- options)
63
+ distribution_file_path,
64
+ extraction_path,
65
+ options
66
+ )
77
67
  extractor.extract
78
68
  end
79
69
 
80
- private
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
- '.tar.gz'
106
- when :tgz then
107
- '.tgz'
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 RakeFactory::DynamicValue.new { |t|
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
- Rake::Task[t.scope.path_with_task_name(t.download_task_name)],
18
- Rake::Task[t.scope.path_with_task_name(t.extract_task_name)]
19
- ].each do |task|
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 RakeFactory::DynamicValue.new { |t|
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
- version: version,
30
- platform: platform,
31
- platform_cpu_name: platform_cpu_name,
32
- platform_os_name: platform_os_name,
33
- ext: ext
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
- .with_parameters(parameters)
38
- .render
39
+ .with_parameters(parameters)
40
+ .render
39
41
  binary_file_directory = File.join(path, binary_directory)
40
42
  binary_file_path = File.join(
41
- binary_file_directory, binary_file_name)
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
- '.tar.gz'
69
- when :tgz then
70
- '.tgz'
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,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'tasks/clean'
2
4
  require_relative 'tasks/download'
3
5
  require_relative 'tasks/extract'
@@ -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
- template,
8
- parameters = {})
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 key, value
16
+ def with_parameter(key, value)
14
17
  Template.new(@template, @parameters.put(key, value))
15
18
  end
16
19
 
17
- def with_parameters pairs
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RakeDependencies
2
- VERSION = "3.2.0.pre.1"
4
+ VERSION = '3.2.0.pre.4'
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rake_dependencies/tasks'
2
4
  require 'rake_dependencies/task_sets'
3
5
  require 'rake_dependencies/extractors'
@@ -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