packager-dsl 0.1.0 → 0.1.1
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/Changes +4 -0
- data/README.md +23 -0
- data/bin/packager +8 -8
- data/lib/packager/cli.rb +12 -1
- data/lib/packager/dsl.rb +8 -0
- data/lib/packager/version.rb +1 -1
- data/spec/cli/execute_spec.rb +70 -0
- data/spec/dsl/add_helper_spec.rb +23 -0
- 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: 83e945fadcebe543ffcc791eca75b25c006d98e2
|
4
|
+
data.tar.gz: de066bb4cc80308d485bc1e9762ee0d4a3327a77
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 117fb6a9bca9d53f124f9e2f7d0140423fa9eea4fa330980a4213989bfba31689cb9bbf9752f22ece959bfc44178132809e01fb5609a14a54d9aafcdccac58ee
|
7
|
+
data.tar.gz: 7dd09bd6951ca17bcd53c77e66868c4a1196c469f406b94eb0d2279e213f39e74ca34bb8686b54485e0732704f746795db1a6f199b76b1c27b43b274e4d0a9cd
|
data/Changes
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
Revision history for Packager (ordered by revision number).
|
2
2
|
|
3
|
+
0.1.1 Nov 10 2018
|
4
|
+
- [FEATURE] Add the ability to provide variables
|
5
|
+
- [FEATURE] Add the ability to specify `--dryrun`
|
6
|
+
|
3
7
|
0.1.0 Nov 08 2018
|
4
8
|
- Update license to MIT
|
5
9
|
- Update dsl-maker dependency to 1.0.0 for its license to be MIT
|
data/README.md
CHANGED
@@ -37,6 +37,29 @@ $ packager execute <filename>
|
|
37
37
|
You now have `foo-0.0.1.x86_64.deb` with several files in it wherever you
|
38
38
|
invoked `packager`.
|
39
39
|
|
40
|
+
## Command-line options
|
41
|
+
|
42
|
+
You can pass in the following options to the packager:
|
43
|
+
|
44
|
+
### --dryrun
|
45
|
+
|
46
|
+
This is a boolean that, if set, will do everything up to, but not including,
|
47
|
+
invoking fpm.
|
48
|
+
|
49
|
+
### `--var pkg_name:foo pkg_version:0.0.1`
|
50
|
+
|
51
|
+
This will set helpers that can be used within the DSL. The example will set
|
52
|
+
the helper `pkg_name` to "foo" and the helper `pkg_version` to "0.0.1".
|
53
|
+
|
54
|
+
Due to how Thor works, you must pass multiple variables at the same time. As
|
55
|
+
shown above, Thor requires keys and values to be joined by a colon (":").
|
56
|
+
|
57
|
+
Consider providing helpers for the following:
|
58
|
+
|
59
|
+
* Package version
|
60
|
+
* A root directory (so that your source files can be relative to something)
|
61
|
+
* Package type (you may want to build a deb vs. an rpm at different times)
|
62
|
+
|
40
63
|
## DSL
|
41
64
|
|
42
65
|
* package <name>
|
data/bin/packager
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
$:.unshift File.expand_path('../../lib', __FILE__)
|
4
|
-
|
5
|
-
require 'rubygems' unless defined? Gem
|
6
|
-
require 'packager/cli'
|
7
|
-
|
8
|
-
Packager::CLI.start
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift File.expand_path('../../lib', __FILE__)
|
4
|
+
|
5
|
+
require 'rubygems' unless defined? Gem
|
6
|
+
require 'packager/cli'
|
7
|
+
|
8
|
+
Packager::CLI.start
|
data/lib/packager/cli.rb
CHANGED
@@ -18,12 +18,21 @@ class Packager::CLI < Thor
|
|
18
18
|
end
|
19
19
|
|
20
20
|
desc :execute, "Execute one or more package DSL definition(s)"
|
21
|
+
option :var, type: :hash
|
22
|
+
option :dryrun, type: :boolean
|
21
23
|
default_task :execute
|
22
24
|
def execute(*args)
|
23
25
|
if args.empty?
|
24
26
|
raise Thor::Error, "No filenames provided for execute"
|
25
27
|
end
|
26
28
|
|
29
|
+
(options['var'] || {}).each do |name, value|
|
30
|
+
if Packager::DSL.reserved_words.include? name
|
31
|
+
raise Thor::Error, "'#{name}' is a reserved word"
|
32
|
+
end
|
33
|
+
Packager::DSL.add_helper(name.to_sym) { value }
|
34
|
+
end
|
35
|
+
|
27
36
|
args.each do |filename|
|
28
37
|
unless File.exists? filename
|
29
38
|
raise Thor::Error, "'#{filename}' cannot be found"
|
@@ -39,7 +48,9 @@ class Packager::CLI < Thor
|
|
39
48
|
raise Thor::Error, "'#{filename}' produces nothing"
|
40
49
|
end
|
41
50
|
|
42
|
-
packages = Packager::Executor.new
|
51
|
+
packages = Packager::Executor.new(
|
52
|
+
dryrun: options['dryrun'],
|
53
|
+
).execute_on(items)
|
43
54
|
|
44
55
|
puts "'#{filename}' executed #{packages.join(', ')}"
|
45
56
|
end
|
data/lib/packager/dsl.rb
CHANGED
@@ -10,6 +10,14 @@ class Packager::DSL < DSL::Maker
|
|
10
10
|
@default_type = args[0] unless args.empty?
|
11
11
|
@default_type
|
12
12
|
end
|
13
|
+
|
14
|
+
def reserved_words
|
15
|
+
%w(
|
16
|
+
package
|
17
|
+
name version type files file requires provides
|
18
|
+
source dest
|
19
|
+
)
|
20
|
+
end
|
13
21
|
end
|
14
22
|
|
15
23
|
add_type(VersionString = {}) do |attr, *args|
|
data/lib/packager/version.rb
CHANGED
data/spec/cli/execute_spec.rb
CHANGED
@@ -75,5 +75,75 @@ describe Packager::CLI do
|
|
75
75
|
).to eq("'definition' executed foo, bar\n")
|
76
76
|
}
|
77
77
|
end
|
78
|
+
|
79
|
+
# NOTE: You (currently) cannot reuse a helper name within the test suite.
|
80
|
+
# Otherwise, you run afoul of add_helper() being called twice with the same
|
81
|
+
# name.
|
82
|
+
context 'variables' do
|
83
|
+
it "handles --var a:b" do
|
84
|
+
package_name = 'foobar'
|
85
|
+
cli.options = {'var' => { 'pkg_name' => package_name } }
|
86
|
+
expect_any_instance_of(Packager::Executor).to(
|
87
|
+
receive(:execute_on).
|
88
|
+
and_return([package_name])
|
89
|
+
)
|
90
|
+
|
91
|
+
append_to_file('definition', '
|
92
|
+
package pkg_name do
|
93
|
+
type "test"
|
94
|
+
version "0.0.1"
|
95
|
+
end
|
96
|
+
')
|
97
|
+
|
98
|
+
expect(
|
99
|
+
capture(:stdout) { cli.execute('definition') }
|
100
|
+
).to eq("'definition' executed foobar\n")
|
101
|
+
end
|
102
|
+
|
103
|
+
it "handles --var a:b c:d" do
|
104
|
+
cli.options = {
|
105
|
+
'var' => {
|
106
|
+
'pkg_version' => '0.0.3',
|
107
|
+
}
|
108
|
+
}
|
109
|
+
expect_any_instance_of(Packager::Executor).to(
|
110
|
+
receive(:execute_on) { |_, items|
|
111
|
+
expect(items[0].version).to eq('0.0.3')
|
112
|
+
}.
|
113
|
+
and_return(['foobar'])
|
114
|
+
)
|
115
|
+
|
116
|
+
append_to_file('definition', '
|
117
|
+
package "foobar" do
|
118
|
+
type "test"
|
119
|
+
version pkg_version
|
120
|
+
end
|
121
|
+
')
|
122
|
+
|
123
|
+
expect(
|
124
|
+
capture(:stdout) { cli.execute('definition') }
|
125
|
+
).to eq("'definition' executed foobar\n")
|
126
|
+
end
|
127
|
+
|
128
|
+
# This throws an error
|
129
|
+
it "throws an error on --var version:0.0.3" do
|
130
|
+
cli.options = {
|
131
|
+
'var' => {
|
132
|
+
'version' => '0.0.3',
|
133
|
+
}
|
134
|
+
}
|
135
|
+
|
136
|
+
append_to_file('definition', '
|
137
|
+
package "foobar" do
|
138
|
+
type "test"
|
139
|
+
version version
|
140
|
+
end
|
141
|
+
')
|
142
|
+
|
143
|
+
expect {
|
144
|
+
capture(:stdout) { cli.execute('definition') }
|
145
|
+
}.to raise_error("'version' is a reserved word")
|
146
|
+
end
|
147
|
+
end
|
78
148
|
end
|
79
149
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require './spec/dsl/context.rb'
|
2
|
+
describe Packager::DSL do
|
3
|
+
context 'adding a helper' do
|
4
|
+
include_context :dsl
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
if not subject.class.has_helper? :test_helper
|
8
|
+
subject.class.add_helper(:test_helper) { 'testing' }
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'finds the test_helper' do
|
13
|
+
items = parse_dsl {
|
14
|
+
package do
|
15
|
+
name test_helper
|
16
|
+
version '0.0.1'
|
17
|
+
type 'test'
|
18
|
+
end
|
19
|
+
}
|
20
|
+
expect(items[0].name).to eq('testing')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: packager-dsl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rob Kinyon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dsl_maker
|
@@ -219,6 +219,7 @@ files:
|
|
219
219
|
- spec/cli/execute_spec.rb
|
220
220
|
- spec/cli/validate_spec.rb
|
221
221
|
- spec/cli/version_spec.rb
|
222
|
+
- spec/dsl/add_helper_spec.rb
|
222
223
|
- spec/dsl/args_spec.rb
|
223
224
|
- spec/dsl/context.rb
|
224
225
|
- spec/dsl/defaults_spec.rb
|