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 +4 -4
- data/.prospectus +1 -1
- data/bin/pkgforge +38 -11
- data/lib/pkgforge.rb +1 -0
- data/lib/pkgforge/forge.rb +11 -3
- data/lib/pkgforge/forgedsl.rb +6 -0
- data/lib/pkgforge/testdsl.rb +23 -0
- data/lib/pkgforge/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27cf9f7d1e11c4519e788c2a59bfec80aed2d6b4
|
4
|
+
data.tar.gz: da25788a1fd72c98f52a0f1db294e72d392c7240
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a80a991db6e26c3deb1ad5eab626507a03debe43a8d459207bebc2b06cc954b1175fa991c12b7b057701872f0ea07a7c0490960c5b7b0a4766e869603368ac8a
|
7
|
+
data.tar.gz: 95dc69956034ca3c38d69c433ede695cd11e857a787f6f3a5d0edfdfe9579e0412f8e669fb6605f333b46c15a7c75df3a268a31033565d0f63dd42fb158bc32e
|
data/.prospectus
CHANGED
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
|
-
|
14
|
-
|
15
|
-
|
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
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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
data/lib/pkgforge/forge.rb
CHANGED
@@ -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
|
-
|
39
|
-
|
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!
|
data/lib/pkgforge/forgedsl.rb
CHANGED
@@ -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
|
data/lib/pkgforge/version.rb
CHANGED
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.
|
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-
|
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
|