rake-dependencies 0.5.0 → 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a29504c7126477c50bb2533eba80580e5b364944
4
- data.tar.gz: 505641763ac6cdc8022a2eb1854946b24a618150
3
+ metadata.gz: 45861c4eab7c2655457e418b6f48e48501fec707
4
+ data.tar.gz: a9dfa04cadea1ad2c60545986ce80371d54dd207
5
5
  SHA512:
6
- metadata.gz: 2da47a12c56d46598dbe06e5ca049aab9771da7d4dcca60147a1e1e9a8b330ab5c881e3e08905db47306385c8c2421eb047eb936c1dbaa622cce0c04fe30260c
7
- data.tar.gz: 93cb56ac3c1e9c566801f909df296b53d7800b94c5edc17df4104bdfdc2732aec39ed25676f6cf86216d1803391eee253c5099cafea962b4d540c054e5ab1750
6
+ metadata.gz: 6a7eaa0cc76abe234b96ebb904b68b6132db2a5883093288ce5ff50ec2a19ca2b5c956dc6ff2f8f603dd4995c876056bffa87651c378d67242fb11672da1457e
7
+ data.tar.gz: e2870b3217fea5b4dcbec4f96624a6ae6deec1a5b394a50c208be7e3afe912aebf8a487df854d0cd687334621797dc50d8f18274d95890a5bb737f11b9854745
data/.gitignore CHANGED
@@ -17,6 +17,7 @@
17
17
  /_yardoc/
18
18
  /doc/
19
19
  /rdoc/
20
+ /coverage/
20
21
 
21
22
  ## Environment normalization:
22
23
  /.bundle/
data/Gemfile.lock CHANGED
@@ -1,8 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rake-dependencies (0.5.0)
4
+ rake-dependencies (0.6.0)
5
5
  hamster (~> 3.0)
6
+ minitar (~> 0.6)
7
+ rubyzip (~> 1.2)
6
8
 
7
9
  GEM
8
10
  remote: https://rubygems.org/
@@ -13,16 +15,18 @@ GEM
13
15
  minitest (~> 5.1)
14
16
  thread_safe (~> 0.3, >= 0.3.4)
15
17
  tzinfo (~> 1.1)
16
- concurrent-ruby (1.0.2)
18
+ concurrent-ruby (1.0.4)
17
19
  diff-lcs (1.3)
20
+ docile (1.1.5)
18
21
  fakefs (0.10.2)
19
22
  gem-release (0.7.4)
20
23
  hamster (3.0.0)
21
24
  concurrent-ruby (~> 1.0)
22
25
  i18n (0.8.0)
23
26
  json (1.8.6)
27
+ minitar (0.6.1)
24
28
  minitest (5.10.1)
25
- rake (10.5.0)
29
+ rake (11.2.2)
26
30
  rspec (3.5.0)
27
31
  rspec-core (~> 3.5.0)
28
32
  rspec-expectations (~> 3.5.0)
@@ -36,6 +40,12 @@ GEM
36
40
  diff-lcs (>= 1.2.0, < 2.0)
37
41
  rspec-support (~> 3.5.0)
38
42
  rspec-support (3.5.0)
43
+ rubyzip (1.2.1)
44
+ simplecov (0.13.0)
45
+ docile (~> 1.1.0)
46
+ json (>= 1.8, < 3)
47
+ simplecov-html (~> 0.10.0)
48
+ simplecov-html (0.10.0)
39
49
  thread_safe (0.3.5)
40
50
  tzinfo (1.2.2)
41
51
  thread_safe (~> 0.1)
@@ -48,9 +58,10 @@ DEPENDENCIES
48
58
  bundler (~> 1.14)
49
59
  fakefs (~> 0.10)
50
60
  gem-release (~> 0.7)
51
- rake (~> 10.0)
61
+ rake (~> 11.0)
52
62
  rake-dependencies!
53
63
  rspec (~> 3.0)
64
+ simplecov (~> 0.13)
54
65
 
55
66
  BUNDLED WITH
56
67
  1.14.3
@@ -1,4 +1,5 @@
1
1
  require 'rake_dependencies/tasks'
2
+ require 'rake_dependencies/extractors'
2
3
  require 'rake_dependencies/template'
3
4
  require 'rake_dependencies/version'
4
5
 
@@ -0,0 +1,57 @@
1
+ require 'zip'
2
+ require 'zlib'
3
+ require 'archive/tar/minitar'
4
+
5
+ module RakeDependencies
6
+ module Extractors
7
+ class ZipExtractor
8
+ def initialize(file_path, extract_path, options = {})
9
+ @file_path = file_path
10
+ @extract_path = extract_path
11
+ @options = options
12
+ end
13
+
14
+ def extract
15
+ FileUtils.mkdir_p(@extract_path)
16
+ Zip::File.open(@file_path) do |zip_file_entries|
17
+ zip_file_entries.each do |entry|
18
+ entry_pathname = Pathname.new(entry.name)
19
+ strip_pathname = Pathname.new(@options[:strip_path] || '')
20
+ target_pathname = entry_pathname.relative_path_from(strip_pathname)
21
+
22
+ file_path = File.join(@extract_path, target_pathname)
23
+ FileUtils.mkdir_p(File.dirname(file_path))
24
+ zip_file_entries.extract(entry, file_path) unless File.exist?(file_path)
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ class TarGzExtractor
31
+ def initialize(file_path, extract_path, options = {})
32
+ @file_path = file_path
33
+ @extract_path = extract_path
34
+ @options = options
35
+ end
36
+
37
+ def extract
38
+ FileUtils.mkdir_p(@extract_path)
39
+ Zlib::GzipReader.open(@file_path) do |tar_file|
40
+ Archive::Tar::Minitar.open(tar_file) do |tar_file_entries|
41
+ tar_file_entries.each do |entry|
42
+ entry_pathname = Pathname.new(entry.name)
43
+ strip_pathname = Pathname.new(@options[:strip_path] || '')
44
+ target_pathname = entry_pathname.relative_path_from(strip_pathname)
45
+
46
+ file_path = File.join(@extract_path, target_pathname)
47
+ FileUtils.mkdir_p(File.dirname(file_path))
48
+ if entry.file? && !File.exist?(file_path)
49
+ File.open(file_path, 'w', entry.mode) { |f| f.write(entry.read) }
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -1,2 +1,3 @@
1
1
  require_relative 'tasks/clean'
2
- require_relative 'tasks/download'
2
+ require_relative 'tasks/download'
3
+ require_relative 'tasks/extract'
@@ -10,7 +10,7 @@ module RakeDependencies
10
10
  parameter :name, default: :download
11
11
  parameter :type, default: :zip
12
12
  parameter :os_ids, default: {mac: 'mac', linux: 'linux'}
13
- parameter :directory, default: 'dist'
13
+ parameter :distribution_directory, default: 'dist'
14
14
  parameter :version
15
15
  parameter :path, required: true
16
16
  parameter :dependency, required: true
@@ -38,7 +38,7 @@ module RakeDependencies
38
38
  download_file_name = Template.new(file_name_template)
39
39
  .with_parameters(parameters)
40
40
  .render
41
- download_file_directory = File.join(path, directory)
41
+ download_file_directory = File.join(path, distribution_directory)
42
42
  download_file_path = File.join(download_file_directory, download_file_name)
43
43
 
44
44
  temporary_file = open(uri)
@@ -58,8 +58,11 @@ module RakeDependencies
58
58
  RUBY_PLATFORM =~ /darwin/ ? :mac : :linux
59
59
  end
60
60
 
61
+ def resolved_type
62
+ type.is_a?(Hash) ? type[platform].to_sym : type.to_sym
63
+ end
64
+
61
65
  def ext
62
- resolved_type = type.is_a?(Hash) ? type[platform].to_sym : type.to_sym
63
66
  case resolved_type
64
67
  when :tar_gz then '.tar.gz'
65
68
  when :tgz then '.tgz'
@@ -0,0 +1,100 @@
1
+ require 'zip'
2
+ require_relative '../tasklib'
3
+ require_relative '../template'
4
+ require_relative '../extractors'
5
+
6
+ module RakeDependencies
7
+ module Tasks
8
+ class Extract < TaskLib
9
+ parameter :name, default: :extract
10
+
11
+ parameter :type, default: :zip
12
+ parameter :os_ids, default: {
13
+ mac: 'mac',
14
+ linux: 'linux'
15
+ }
16
+ parameter :extractors, default: {
17
+ zip: Extractors::ZipExtractor,
18
+ tar_gz: Extractors::TarGzExtractor,
19
+ tgz: Extractors::TarGzExtractor
20
+ }
21
+
22
+ parameter :distribution_directory, default: 'dist'
23
+ parameter :binary_directory, default: 'bin'
24
+
25
+ parameter :dependency, required: true
26
+ parameter :version
27
+ parameter :path, required: true
28
+ parameter :file_name_template, required: true
29
+ parameter :strip_path_template
30
+
31
+ def process_arguments args
32
+ super(args)
33
+ self.name = args[0] if args[0]
34
+ end
35
+
36
+ def define
37
+ desc "Extract #{dependency} archive"
38
+ task name do
39
+ parameters = {
40
+ version: version,
41
+ platform: platform,
42
+ os_id: os_id,
43
+ ext: ext
44
+ }
45
+
46
+ distribution_file_name = Template.new(file_name_template)
47
+ .with_parameters(parameters)
48
+ .render
49
+ distribution_file_directory = File.join(path, distribution_directory)
50
+ distribution_file_path = File.join(
51
+ distribution_file_directory, distribution_file_name)
52
+
53
+ extraction_path = File.join(path, binary_directory)
54
+
55
+ options = {}
56
+ if strip_path_template
57
+ options[:strip_path] = Template.new(strip_path_template)
58
+ .with_parameters(parameters)
59
+ .render
60
+ end
61
+
62
+ extractor = extractor_for_extension.new(
63
+ distribution_file_path,
64
+ extraction_path,
65
+ options)
66
+ extractor.extract
67
+ end
68
+ end
69
+
70
+ private
71
+
72
+ def extractor_for_extension
73
+ extractors[resolved_type]
74
+ end
75
+
76
+ def os_id
77
+ os_ids[platform]
78
+ end
79
+
80
+ def platform
81
+ RUBY_PLATFORM =~ /darwin/ ? :mac : :linux
82
+ end
83
+
84
+ def resolved_type
85
+ type.is_a?(Hash) ? type[platform].to_sym : type.to_sym
86
+ end
87
+
88
+ def ext
89
+ case resolved_type
90
+ when :tar_gz then '.tar.gz'
91
+ when :tgz then '.tgz'
92
+ when :zip then '.zip'
93
+ when :uncompressed then ''
94
+ else
95
+ raise "Unknown type: #{type}"
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
@@ -1,3 +1,3 @@
1
1
  module RakeDependencies
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -25,11 +25,14 @@ Gem::Specification.new do |spec|
25
25
  spec.required_ruby_version = '>= 2.0'
26
26
 
27
27
  spec.add_dependency 'hamster', '~> 3.0'
28
+ spec.add_dependency 'rubyzip', '~> 1.2'
29
+ spec.add_dependency 'minitar', '~> 0.6'
28
30
 
29
31
  spec.add_development_dependency 'bundler', '~> 1.14'
30
- spec.add_development_dependency 'rake', '~> 10.0'
32
+ spec.add_development_dependency 'rake', '~> 11.0'
31
33
  spec.add_development_dependency 'rspec', '~> 3.0'
32
34
  spec.add_development_dependency 'gem-release', '~> 0.7'
33
35
  spec.add_development_dependency 'activesupport', '~> 4.2'
34
36
  spec.add_development_dependency 'fakefs', '~> 0.10'
37
+ spec.add_development_dependency 'simplecov', '~> 0.13'
35
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.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toby Clemson
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rubyzip
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '1.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitar
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '0.6'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '0.6'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: bundler
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +72,14 @@ dependencies:
44
72
  requirements:
45
73
  - - ~>
46
74
  - !ruby/object:Gem::Version
47
- version: '10.0'
75
+ version: '11.0'
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
80
  - - ~>
53
81
  - !ruby/object:Gem::Version
54
- version: '10.0'
82
+ version: '11.0'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: rspec
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +136,20 @@ dependencies:
108
136
  - - ~>
109
137
  - !ruby/object:Gem::Version
110
138
  version: '0.10'
139
+ - !ruby/object:Gem::Dependency
140
+ name: simplecov
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ~>
144
+ - !ruby/object:Gem::Version
145
+ version: '0.13'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ~>
151
+ - !ruby/object:Gem::Version
152
+ version: '0.13'
111
153
  description: Provides rake tasks for downloading and extracting tools depended on
112
154
  for further build activities.
113
155
  email:
@@ -129,10 +171,12 @@ files:
129
171
  - bin/setup
130
172
  - lib/rake_dependencies.rb
131
173
  - lib/rake_dependencies/exceptions.rb
174
+ - lib/rake_dependencies/extractors.rb
132
175
  - lib/rake_dependencies/tasklib.rb
133
176
  - lib/rake_dependencies/tasks.rb
134
177
  - lib/rake_dependencies/tasks/clean.rb
135
178
  - lib/rake_dependencies/tasks/download.rb
179
+ - lib/rake_dependencies/tasks/extract.rb
136
180
  - lib/rake_dependencies/template.rb
137
181
  - lib/rake_dependencies/version.rb
138
182
  - rake_dependencies.gemspec