pkgforge 0.12.5 → 0.13.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: 1e2ee305fa6105b96babf437853f50abb8301692
4
- data.tar.gz: 7e95aaffd4ed6a56f4ca463bfd48a5fadf67ae02
3
+ metadata.gz: 0f425f94459cf26692a4b0777fd948c0b5df4374
4
+ data.tar.gz: 7c13454851dbba27203e436b16f70191d0d764f7
5
5
  SHA512:
6
- metadata.gz: 75aceeb92338482b6bd1c623e88d7370f1ef80ff3684379a1e4632cbacd6bb6d91193cedcdf75ea6f4eaae2b485603ec14e7f8a1605a698062f8c208b70c2ab4
7
- data.tar.gz: 9cc26ed202f2ac58781c8928e1a93106cc57780e719d77e4cb401c567b5a3de25313f24a493f48cd85c23358ccc5c5babd2076b47acdf0ed32fae562b7c4612f
6
+ metadata.gz: 2d36da18b2d7683e39e02346d45a1eddc947c56f67717e99af3ae278afe0ab554909631d25ccbed2ea586617f3794b65418ae932ba55af312e02efea22c04b94
7
+ data.tar.gz: b72637cbbab74905f0e2cee9a37bf94d15988de832a90e3271a3dd89ee16b5f3bdaee9928194f9d231e01bdfe44af106a776be4893500fa410e1e5196b7ae02d
data/.circle-ruby CHANGED
@@ -1,3 +1,4 @@
1
- 2.3.1
2
- 2.2.5
1
+ 2.4.0
2
+ 2.3.3
3
+ 2.2.6
3
4
  2.1.10
data/bin/pkgforge CHANGED
@@ -9,10 +9,11 @@ def add_common_opts(cmd)
9
9
  # rubocop:disable Metrics/LineLength
10
10
  cmd.option :directory, '-d DIR', '--directory DIR', 'Change to directory before loading'
11
11
  cmd.option :skipcleanup, '-s', '--skipcleanup', 'Skip cleanup of tmpdirs and tmpfiles'
12
+ cmd.option :statefile, '--statefile FILE', 'State file to re-use build directories'
12
13
  # rubocop:enable Metrics/LineLength
13
14
  end
14
15
 
15
- def run_on_file(options)
16
+ def get_file(options)
16
17
  options[:directory] ||= '.'
17
18
  Dir.chdir(options[:directory]) do
18
19
  raise("No #{FILE_NAME} file") unless File.exist? FILE_NAME
@@ -21,6 +22,31 @@ def run_on_file(options)
21
22
  end
22
23
  end
23
24
 
25
+ def run(forge, skipcleanup, release = false, build = true)
26
+ if build
27
+ forge.build!
28
+ forge.test!
29
+ forge.package!
30
+ end
31
+ forge.push! if release
32
+ ensure
33
+ forge.cleanup! unless skipcleanup
34
+ end
35
+
36
+ def run_with_state(forge, options, release = false)
37
+ statefile = options[:statefile]
38
+ forge.load_state!(statefile) if release
39
+ run(forge, options[:skipcleanup] || !release, release, !release)
40
+ forge.write_state!(statefile) unless release
41
+ end
42
+
43
+ def run_with_options(options, release = false)
44
+ get_file(options) do |forge|
45
+ return run(forge, options[:skipcleanup], release) unless options[:statefile]
46
+ run_with_state(forge, options, release)
47
+ end
48
+ end
49
+
24
50
  # rubocop:disable Metrics/BlockLength
25
51
  Mercenary.program(:pkgforge) do |p|
26
52
  p.version PkgForge::VERSION
@@ -33,15 +59,7 @@ Mercenary.program(:pkgforge) do |p|
33
59
  add_common_opts(c)
34
60
 
35
61
  c.action do |_, options|
36
- run_on_file(options) do |forge|
37
- begin
38
- forge.build!
39
- forge.test!
40
- forge.package!
41
- ensure
42
- forge.cleanup! unless options[:skipcleanup]
43
- end
44
- end
62
+ run_with_options(options)
45
63
  end
46
64
  end
47
65
 
@@ -51,16 +69,7 @@ Mercenary.program(:pkgforge) do |p|
51
69
  add_common_opts(c)
52
70
 
53
71
  c.action do |_, options|
54
- run_on_file(options) do |forge|
55
- begin
56
- forge.build!
57
- forge.test!
58
- forge.package!
59
- forge.push!
60
- ensure
61
- forge.cleanup! unless options[:skipcleanup]
62
- end
63
- end
72
+ run_with_options(options, true)
64
73
  end
65
74
  end
66
75
 
@@ -70,7 +79,7 @@ Mercenary.program(:pkgforge) do |p|
70
79
  add_common_opts(c)
71
80
 
72
81
  c.action do |_, options|
73
- run_on_file(options) do |forge|
82
+ get_file(options) do |forge|
74
83
  puts "name: #{forge.name}"
75
84
  end
76
85
  end
data/lib/pkgforge.rb CHANGED
@@ -15,6 +15,8 @@ require 'pkgforge/components/source'
15
15
  require 'pkgforge/components/test'
16
16
  require 'pkgforge/components/upload'
17
17
  require 'pkgforge/components/cleanup'
18
+ require 'pkgforge/components/state'
19
+
18
20
  ##
19
21
  # DSL engine for compiling Arch packages
20
22
  module PkgForge
@@ -63,6 +63,17 @@ module PkgForge
63
63
  nil
64
64
  end
65
65
 
66
+ Contract String, Maybe[String] => nil
67
+ def cp(src, dest = nil)
68
+ dest ||= src
69
+ dest = File.join(releasedir, dest)
70
+ src = File.join(tmpdir(:build), src)
71
+ dest_dir = File.dirname dest
72
+ FileUtils.mkdir_p dest_dir
73
+ FileUtils.cp_r src, dest
74
+ nil
75
+ end
76
+
66
77
  Contract None => HashOf[String => String]
67
78
  def default_env
68
79
  {
@@ -0,0 +1,25 @@
1
+ require 'json'
2
+
3
+ module PkgForge
4
+ ##
5
+ # Add state methods to Forge
6
+ class Forge
7
+ Contract String => nil
8
+ def load_state!(statefile)
9
+ state = JSON.parse(File.read(statefile))
10
+ @tmpfiles = state[:tmpfiles]
11
+ @tmpdirs = state[:tmpdirs]
12
+ end
13
+
14
+ Contract String => nil
15
+ def write_state!(statefile)
16
+ File.open(statefile, 'w') do |fh|
17
+ fh << {
18
+ tmpfiles: @tmpfiles,
19
+ tmpdirs: @tmpdirs
20
+ }.to_json
21
+ end
22
+ nil
23
+ end
24
+ end
25
+ end
@@ -1,5 +1,5 @@
1
1
  ##
2
2
  # Declare version number
3
3
  module PkgForge
4
- VERSION = '0.12.5'.freeze
4
+ VERSION = '0.13.0'.freeze
5
5
  end
data/pkgforge.gemspec CHANGED
@@ -20,8 +20,8 @@ Gem::Specification.new do |s|
20
20
  s.add_dependency 'mercenary', '~> 0.3.4'
21
21
  s.add_dependency 'contracts', '~> 0.14.0'
22
22
 
23
- s.add_development_dependency 'rubocop', '~> 0.44.1'
24
- s.add_development_dependency 'rake', '~> 11.3.0'
23
+ s.add_development_dependency 'rubocop', '~> 0.46.0'
24
+ s.add_development_dependency 'rake', '~> 12.0.0'
25
25
  s.add_development_dependency 'codecov', '~> 0.1.1'
26
26
  s.add_development_dependency 'rspec', '~> 3.5.0'
27
27
  s.add_development_dependency 'fuubar', '~> 2.2.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.12.5
4
+ version: 0.13.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: 2016-10-30 00:00:00.000000000 Z
11
+ date: 2017-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mercenary
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.44.1
47
+ version: 0.46.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.44.1
54
+ version: 0.46.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 11.3.0
61
+ version: 12.0.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: 11.3.0
68
+ version: 12.0.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: codecov
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -139,6 +139,7 @@ files:
139
139
  - lib/pkgforge/components/patch.rb
140
140
  - lib/pkgforge/components/run.rb
141
141
  - lib/pkgforge/components/source.rb
142
+ - lib/pkgforge/components/state.rb
142
143
  - lib/pkgforge/components/test.rb
143
144
  - lib/pkgforge/components/upload.rb
144
145
  - lib/pkgforge/version.rb
@@ -165,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
166
  version: '0'
166
167
  requirements: []
167
168
  rubyforge_project:
168
- rubygems_version: 2.5.1
169
+ rubygems_version: 2.5.2
169
170
  signing_key:
170
171
  specification_version: 4
171
172
  summary: DSL engine for building Arch packages