pkgforge 0.0.2 → 0.0.4

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: 82a20dd80b7950e7fd7aaadd1792f16bf8b9948a
4
- data.tar.gz: 69d06b93a5a07c5b870b1df7cd246fcd742a5ba1
3
+ metadata.gz: 27cf9f7d1e11c4519e788c2a59bfec80aed2d6b4
4
+ data.tar.gz: da25788a1fd72c98f52a0f1db294e72d392c7240
5
5
  SHA512:
6
- metadata.gz: 51ba6eaaf84f93ad7516b74039ced0b9a735f6674371a68df0698c5d578d8ac37a2ae7ece37a88b01edf947198f1cbf28d67b26166812fe01ac77a1ec60079b4
7
- data.tar.gz: a6c43cb54472fb5e620ae85154a8879d4cb89fd8c5a25168e6f9e9a6bb927920dba47220bd892434c0fc40f3ef30c7fac1bad9ef8cee49c9e5a28ab8135d9d01
6
+ metadata.gz: a80a991db6e26c3deb1ad5eab626507a03debe43a8d459207bebc2b06cc954b1175fa991c12b7b057701872f0ea07a7c0490960c5b7b0a4766e869603368ac8a
7
+ data.tar.gz: 95dc69956034ca3c38d69c433ede695cd11e857a787f6f3a5d0edfdfe9579e0412f8e669fb6605f333b46c15a7c75df3a268a31033565d0f63dd42fb158bc32e
data/.prospectus CHANGED
@@ -6,6 +6,6 @@ item do
6
6
 
7
7
  actual do
8
8
  gemnasium
9
- slug 'akerl/archpackager'
9
+ slug 'akerl/pkgforge'
10
10
  end
11
11
  end
data/bin/pkgforge CHANGED
@@ -5,22 +5,49 @@ require 'mercenary'
5
5
 
6
6
  FILE_NAME = '.pkgforge'.freeze
7
7
 
8
+ def add_common_opts(cmd)
9
+ # rubocop:disable Metrics/LineLength
10
+ cmd.option :directory, '-d DIR', '--directory DIR', 'Change to directory before loading'
11
+ # rubocop:enable Metrics/LineLength
12
+ end
13
+
14
+ def run_on_file(options)
15
+ options[:directory] ||= '.'
16
+ Dir.chdir(options[:directory]) do
17
+ raise("No #{FILE_NAME} file") unless File.exist? FILE_NAME
18
+ forge = PkgForge.load_from_file
19
+ yield forge
20
+ end
21
+ end
22
+
8
23
  Mercenary.program(:pkgforge) do |p|
9
24
  p.version PkgForge::VERSION
10
25
  p.description 'DSL engine for building Arch packages'
11
- p.syntax 'pkgforge [options]'
26
+ p.syntax 'pkgforge <subcommand> [options]'
12
27
 
13
- # rubocop:disable Metrics/LineLength
14
- p.option :directory, '-d DIR', '--directory DIR', 'Change to directory before loading'
15
- # rubocop:enable Metrics/LineLength
28
+ p.command(:build) do |c|
29
+ c.syntax 'build [options]'
30
+ c.description 'Build the package'
31
+ add_common_opts(c)
32
+
33
+ c.action do |_, options|
34
+ run_on_file(options) do |forge|
35
+ forge.build!
36
+ forge.test!
37
+ forge.push!
38
+ end
39
+ end
40
+ end
41
+
42
+ p.command(:info) do |c|
43
+ c.syntax 'info [options]'
44
+ c.description 'Print package info'
45
+ add_common_opts(c)
16
46
 
17
- p.action do |_, options|
18
- options[:directory] ||= '.'
19
- Dir.chdir(options[:directory]) do
20
- raise("No #{FILE_NAME} file") unless File.exist? FILE_NAME
21
- forge = PkgForge.load_from_file
22
- forge.build!
23
- forge.push!
47
+ c.action do |_, options|
48
+ run_on_file(options) do |forge|
49
+ puts "name: #{forge.name}"
50
+ end
24
51
  end
25
52
  end
26
53
  end
data/lib/pkgforge.rb CHANGED
@@ -7,6 +7,7 @@ require 'pkgforge/push'
7
7
  require 'pkgforge/forge'
8
8
  require 'pkgforge/forgedsl'
9
9
  require 'pkgforge/builddsl'
10
+ require 'pkgforge/testdsl'
10
11
 
11
12
  ##
12
13
  # DSL engine for compiling Arch packages
@@ -16,7 +16,7 @@ module PkgForge
16
16
  include PkgForge::Push
17
17
 
18
18
  attr_accessor :name, :org, :deps, :flags, :version_block, :patches,
19
- :build_block, :license
19
+ :build_block, :test_block, :license
20
20
 
21
21
  Contract Maybe[HashOf[Symbol => Any]] => nil
22
22
  def initialize(params = {})
@@ -25,6 +25,8 @@ module PkgForge
25
25
  @deps = {}
26
26
  @flags = {}
27
27
  @patches = []
28
+ @build_block = proc { fail('No build block provided') }
29
+ @test_block = proc { fail('No test block provided') }
28
30
  nil
29
31
  end
30
32
 
@@ -35,12 +37,18 @@ module PkgForge
35
37
  prepare_deps!
36
38
  builder = BuildDSL.new(self)
37
39
  builder.instance_eval(&build_block)
38
- add_license!
39
- make_tarball!
40
+ end
41
+
42
+ Contract None => nil
43
+ def test!
44
+ tester = TestDSL.new(self)
45
+ tester.instance_eval(&test_block)
40
46
  end
41
47
 
42
48
  Contract None => nil
43
49
  def push!
50
+ add_license!
51
+ make_tarball!
44
52
  bump_revision!
45
53
  update_repo!
46
54
  upload_artifact!
@@ -57,6 +57,12 @@ module PkgForge
57
57
  nil
58
58
  end
59
59
 
60
+ Contract Func[None => nil] => nil
61
+ def test(&block)
62
+ @forge.test_block = block
63
+ nil
64
+ end
65
+
60
66
  Contract String => nil
61
67
  def license(file)
62
68
  @forge.license = file
@@ -0,0 +1,23 @@
1
+ require 'fileutils'
2
+
3
+ module PkgForge
4
+ ##
5
+ # Test engine
6
+ class TestDSL
7
+ include Contracts::Core
8
+ include Contracts::Builtin
9
+
10
+ Contract PkgForge::Forge => nil
11
+ def initialize(forge)
12
+ @forge = forge
13
+ nil
14
+ end
15
+
16
+ private
17
+
18
+ Contract Or[String, Array], Or[Hash[String => String], {}, nil] => nil
19
+ def run(*args)
20
+ @forge.run(*args)
21
+ end
22
+ end
23
+ end
@@ -1,5 +1,5 @@
1
1
  ##
2
2
  # Declare version number
3
3
  module PkgForge
4
- VERSION = '0.0.2'.freeze
4
+ VERSION = '0.0.4'.freeze
5
5
  end
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.0.2
4
+ version: 0.0.4
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-08-19 00:00:00.000000000 Z
11
+ date: 2016-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mercenary
@@ -133,6 +133,7 @@ files:
133
133
  - lib/pkgforge/helpers.rb
134
134
  - lib/pkgforge/prepare.rb
135
135
  - lib/pkgforge/push.rb
136
+ - lib/pkgforge/testdsl.rb
136
137
  - lib/pkgforge/version.rb
137
138
  - pkgforge.gemspec
138
139
  - spec/pkgforge_spec.rb