pkgforge 0.0.2 → 0.0.4

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: 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