pkgforge 0.13.4 → 0.14.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: 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