rake-dependencies 0.5.0 → 0.6.0

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