rake_dependencies 3.2.0.pre.3 → 3.2.0.pre.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.3"
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