pkgforge 0.12.5 → 0.13.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: 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