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