pkgforge 0.13.4 → 0.14.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: 12c89a952f77c7e3dfaa4ff2a034a3b808678680
4
- data.tar.gz: 71bcadc9a159de749499945549bcdc94c8243b03
3
+ metadata.gz: 428a82a9cfa731a5feb65f5bf908c18467c06586
4
+ data.tar.gz: a555b15ee6fa07d23aaa2ef365e30f6a84baa7f6
5
5
  SHA512:
6
- metadata.gz: c111fb536a77e7952c944c64d302cd8607adb665e2fb4db8c69f7cfec08bbbcfffb26d266527a50fa0d531965f8c07b2315063afe91c91df19538b00a8a6176d
7
- data.tar.gz: eaa977128fd846a5d34bbca9da554c7073d3c62d83cfd83141e3b4420e2d74e57ae4b1daab24ab8604cff5c34e1298e5b995ba76beae20b67dc1c526f7c96753
6
+ metadata.gz: 881dab36446d83e905fa3fd0a7e0fe55782b80ff9d44f72d885699d78d0dddbc9fcef96f0d3889e9f3cb07d012768c01ff1eff6fe189529f3e9ba19a0dab2e10
7
+ data.tar.gz: f4299848fab16b2ae0a9a5f291537ab48d32653aa93460580906a0ebe41b6e674c0d2ed0d2b35d400299302ed26de7446cbfc5b5e6f76900e6f652a14939cb9d
data/.rubocop.yml CHANGED
@@ -1,2 +1,4 @@
1
1
  Encoding:
2
2
  Enabled: false
3
+ Style/FormatString:
4
+ EnforcedStyle: percent
data/circle.yml CHANGED
@@ -1,5 +1,6 @@
1
1
  dependencies:
2
2
  override:
3
+ - 'for i in $(cat .circle-ruby) ; do rvm-exec $i gem update --system --no-doc || exit 1 ; done'
3
4
  - 'for i in $(cat .circle-ruby) ; do rvm-exec $i bundle install || exit 1 ; done'
4
5
  test:
5
6
  override:
@@ -6,7 +6,7 @@ module PkgForge
6
6
  class Forge
7
7
  attr_writer :deps, :remove_linker_archives, :remove_pkgconfig_files
8
8
 
9
- Contract None => HashOf[Symbol => String]
9
+ Contract None => HashOf[Symbol => Or[String, Hash]]
10
10
  def deps
11
11
  @deps ||= {}
12
12
  end
@@ -32,14 +32,46 @@ module PkgForge
32
32
 
33
33
  Contract None => nil
34
34
  def download_deps!
35
- deps.each do |dep_name, dep_version|
36
- url = "https://github.com/#{org}/#{dep_name}/releases/download/#{dep_version}/#{dep_name}.tar.gz" # rubocop:disable Metrics/LineLength
37
- open(tmpfile(dep_name), 'wb') { |fh| fh << open(url, 'rb').read }
38
- run_local "tar -x -C #{tmpdir(dep_name)} -f #{tmpfile(dep_name)}"
35
+ deps.each do |dep_name, dep_hash|
36
+ dep_hash = build_dep_hash(dep_hash)
37
+ file = tmpfile(dep_name)
38
+ dir = tmpdir(dep_name)
39
+ download_file(dep_name, file, dep_hash[:version])
40
+ verify_file(file, dep_hash[:checksum])
41
+ extract_file(file, dir)
39
42
  end
40
43
  nil
41
44
  end
42
45
 
46
+ Contract String => Hash
47
+ def build_dep_hash(dep_version)
48
+ { version: dep_version }
49
+ end
50
+
51
+ Contract Hash => Hash
52
+ def build_dep_hash(dep_hash) # rubocop:disable Lint/DuplicateMethods
53
+ dep_hash
54
+ end
55
+
56
+ Contract Symbol, String, String => nil
57
+ def download_file(dep_name, file, dep_version)
58
+ url = "https://github.com/#{org}/#{dep_name}/releases/download/#{dep_version}/#{dep_name}.tar.gz" # rubocop:disable Metrics/LineLength
59
+ open(file, 'wb') { |fh| fh << open(url, 'rb').read }
60
+ nil
61
+ end
62
+
63
+ Contract String, String => nil
64
+ def verify_file(file, expected)
65
+ actual = Digest::SHA256.file(file).hexdigest
66
+ return if actual == expected
67
+ raise "Checksum fail for #{file}: #{actual} (actual) != #{expected} (expected)" # rubocop:disable Metrics/LineLength
68
+ end
69
+
70
+ Contract String, String => nil
71
+ def extract_file(file, dir)
72
+ run_local "tar -x -C #{dir} -f #{file}"
73
+ end
74
+
43
75
  Contract None => nil
44
76
  def remove_linker_archives!
45
77
  deps.keys.each do |dep_name|
@@ -61,7 +93,7 @@ module PkgForge
61
93
  ##
62
94
  # Add dep methods to Forge DSL
63
95
  class Forge
64
- Contract HashOf[Symbol => String] => nil
96
+ Contract HashOf[Symbol => Or[String, Hash]] => nil
65
97
  def deps(value)
66
98
  @forge.deps = value
67
99
  nil
@@ -1,5 +1,5 @@
1
1
  ##
2
2
  # Declare version number
3
3
  module PkgForge
4
- VERSION = '0.13.4'.freeze
4
+ VERSION = '0.14.0'.freeze
5
5
  end
data/pkgforge.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.add_dependency 'contracts', '~> 0.14.0'
22
22
  s.add_dependency 'cymbal', '~> 1.0.0'
23
23
 
24
- s.add_development_dependency 'rubocop', '~> 0.46.0'
24
+ s.add_development_dependency 'rubocop', '~> 0.47.0'
25
25
  s.add_development_dependency 'rake', '~> 12.0.0'
26
26
  s.add_development_dependency 'codecov', '~> 0.1.1'
27
27
  s.add_development_dependency 'rspec', '~> 3.5.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pkgforge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.4
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Les Aker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-05 00:00:00.000000000 Z
11
+ date: 2017-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mercenary
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.46.0
61
+ version: 0.47.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.46.0
68
+ version: 0.47.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -180,7 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
180
180
  version: '0'
181
181
  requirements: []
182
182
  rubyforge_project:
183
- rubygems_version: 2.5.2
183
+ rubygems_version: 2.6.8
184
184
  signing_key:
185
185
  specification_version: 4
186
186
  summary: DSL engine for building Arch packages