packager-dsl 0.1.1 → 0.1.2

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: 83e945fadcebe543ffcc791eca75b25c006d98e2
4
- data.tar.gz: de066bb4cc80308d485bc1e9762ee0d4a3327a77
3
+ metadata.gz: 42215c276926e0d4783fa92a7a27c10210f856cf
4
+ data.tar.gz: b808a1736416be2e501bc6c9d27037a2624ff3d7
5
5
  SHA512:
6
- metadata.gz: 117fb6a9bca9d53f124f9e2f7d0140423fa9eea4fa330980a4213989bfba31689cb9bbf9752f22ece959bfc44178132809e01fb5609a14a54d9aafcdccac58ee
7
- data.tar.gz: 7dd09bd6951ca17bcd53c77e66868c4a1196c469f406b94eb0d2279e213f39e74ca34bb8686b54485e0732704f746795db1a6f199b76b1c27b43b274e4d0a9cd
6
+ metadata.gz: 01474c3afa86dff4563647d07e21b0a21755a0a3f34075c7a02bfb082365b78a97d4976b2942c37455f7904faea633e6b288748806437db8f47770163f841fbc
7
+ data.tar.gz: 64d0a769989d2828567f8469abc2898fda61843d55a4daa2ce4995d002effcbef8da353d8d174b688f2a7d5aded2f87af95438ac9d562ccdb399b0e210b22df7
data/.rspec CHANGED
File without changes
data/Changes CHANGED
@@ -1,5 +1,14 @@
1
1
  Revision history for Packager (ordered by revision number).
2
2
 
3
+ 0.1.2 Nov 30 2018
4
+ - [FEATURE] Add support for the following flags:
5
+ * --before-install (aliased as --pre-install)
6
+ * --after-install (aliased as --post-install)
7
+ * --before-remove (aliased as --pre-uninstall)
8
+ * --after-remove (aliased as --post-uninstall)
9
+ * --before-upgrade
10
+ * --after-upgrade
11
+
3
12
  0.1.1 Nov 10 2018
4
13
  - [FEATURE] Add the ability to provide variables
5
14
  - [FEATURE] Add the ability to specify `--dryrun`
data/Gemfile CHANGED
File without changes
data/LICENSE CHANGED
File without changes
data/README.md CHANGED
@@ -63,11 +63,12 @@ Consider providing helpers for the following:
63
63
  ## DSL
64
64
 
65
65
  * package <name>
66
- * name String
67
- * type String
68
- * version VersionString
69
- * file / files
70
- * source String
71
- * dest String
72
- * requires Array[String]
73
- * provides Array[String]
66
+ * `name` String
67
+ * `type` String
68
+ * `version` VersionString
69
+ * `file` / `files`
70
+ * `source` String
71
+ * `dest` String
72
+ * `requires` Array[String]
73
+ * `provides` Array[String]
74
+ * `before_install` Array[String]
data/Rakefile CHANGED
File without changes
File without changes
File without changes
File without changes
@@ -46,12 +46,21 @@ class Packager::DSL < DSL::Maker
46
46
  :file => AliasOf(:files),
47
47
  :requires => ArrayOf[String],
48
48
  :provides => ArrayOf[String],
49
+ :before_install => ArrayOf[String],
50
+ :after_install => ArrayOf[String],
51
+ :before_remove => ArrayOf[String],
52
+ :after_remove => ArrayOf[String],
53
+ :before_upgrade => ArrayOf[String],
54
+ :after_upgrade => ArrayOf[String],
49
55
  }) do |*args|
50
56
  type(Packager::DSL.default_type) unless type
51
57
  default(:name, args, 0)
52
58
 
53
59
  Packager::Struct::Package.new(
54
60
  name, version, type, files, requires, provides,
61
+ before_install, after_install,
62
+ before_remove, after_remove,
63
+ before_upgrade, after_upgrade,
55
64
  )
56
65
  end
57
66
  add_verification(:package) do |item|
@@ -38,6 +38,12 @@ class Packager
38
38
  :target => item.type,
39
39
  :requires => item.requires,
40
40
  :provides => item.provides,
41
+ :before_install => item.before_install,
42
+ :after_install => item.after_install,
43
+ :before_remove => item.before_remove,
44
+ :after_remove => item.after_remove,
45
+ :before_upgrade => item.before_upgrade,
46
+ :after_upgrade => item.after_upgrade,
41
47
  )
42
48
 
43
49
  Dir.glob('*') do |entry|
@@ -17,12 +17,21 @@ class Packager::Struct < Struct
17
17
 
18
18
  class Package < Packager::Struct.new(
19
19
  :name, :version, :type, :files, :requires, :provides,
20
+ :before_install, :after_install,
21
+ :before_remove, :after_remove,
22
+ :before_upgrade, :after_upgrade,
20
23
  )
21
24
  def initialize(*args)
22
25
  super(*args)
23
26
  self.files ||= []
24
27
  self.requires ||= []
25
28
  self.provides ||= []
29
+ self.before_install ||= []
30
+ self.after_install ||= []
31
+ self.before_remove ||= []
32
+ self.after_remove ||= []
33
+ self.before_upgrade ||= []
34
+ self.after_upgrade ||= []
26
35
  end
27
36
  end
28
37
 
@@ -34,6 +43,9 @@ class Packager::Struct < Struct
34
43
  class Command < Packager::Struct.new(
35
44
  :executable, :name, :version,
36
45
  :source, :target, :directories, :requires, :provides,
46
+ :before_install, :after_install,
47
+ :before_remove, :after_remove,
48
+ :before_upgrade, :after_upgrade,
37
49
  )
38
50
  class << self
39
51
  attr_accessor :default_executable
@@ -44,8 +56,19 @@ class Packager::Struct < Struct
44
56
  self.source ||= 'empty'
45
57
  self.executable ||= self.class.default_executable || 'fpm'
46
58
  self.directories ||= {}
47
- self.requires ||= []
48
- self.provides ||= []
59
+
60
+ @unique_mappers = {
61
+ :requires => '--depends',
62
+ :provides => '--provides',
63
+ :before_install => '--before-install',
64
+ :after_install => '--after-install',
65
+ :before_remove => '--before-remove',
66
+ :after_remove => '--after-remove',
67
+ :before_upgrade => '--before-upgrade',
68
+ :after_upgrade => '--after-upgrade',
69
+ }
70
+
71
+ @unique_mappers.keys.each {|i| self[i] ||= [] }
49
72
  end
50
73
 
51
74
  def add_directory(*items)
@@ -62,12 +85,10 @@ class Packager::Struct < Struct
62
85
  '--version', version,
63
86
  ]
64
87
 
65
- self.requires.uniq.each do |req|
66
- cmd.concat(['--depends', req])
67
- end
68
-
69
- self.provides.uniq.each do |req|
70
- cmd.concat(['--provides', req])
88
+ @unique_mappers.each do |element, flag|
89
+ self[element].uniq.each do |item|
90
+ cmd.concat([flag, item])
91
+ end
71
92
  end
72
93
 
73
94
  cmd.concat(['-s', source, '-t', target])
@@ -1,3 +1,3 @@
1
1
  class Packager
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
data/on_what.rb CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -2,6 +2,9 @@ require './spec/dsl/context.rb'
2
2
  describe Packager::DSL do
3
3
  include_context :dsl
4
4
 
5
+ # It's unclear how to replicate what was done in spec/executor/dependency_spec
6
+ # here. The parse_dsl{} needs to have the name of the parameter. Use eval?
7
+
5
8
  context "requires" do
6
9
  it "handles a dependency" do
7
10
  items = parse_dsl {
@@ -59,4 +62,178 @@ describe Packager::DSL do
59
62
  expect(items[0].provides).to eq([ 'foo', 'bar', 'baz' ])
60
63
  end
61
64
  end
65
+
66
+ context "before_install" do
67
+ it "handles a before_install" do
68
+ items = parse_dsl {
69
+ package {
70
+ name 'foo'
71
+ version '0.0.1'
72
+ type 'test'
73
+ before_install 'foo'
74
+ }
75
+ }
76
+ expect(items[0].before_install).to be_instance_of(Array)
77
+ expect(items[0].before_install[0]).to eq('foo')
78
+ end
79
+
80
+ it "handles multiple before_installs" do
81
+ items = parse_dsl {
82
+ package {
83
+ name 'foo'
84
+ version '0.0.1'
85
+ type 'test'
86
+ before_install 'foo', 'bar'
87
+ before_install 'baz'
88
+ }
89
+ }
90
+ expect(items[0].before_install).to be_instance_of(Array)
91
+ expect(items[0].before_install).to eq([ 'foo', 'bar', 'baz' ])
92
+ end
93
+ end
94
+
95
+ context "after_install" do
96
+ it "handles a after_install" do
97
+ items = parse_dsl {
98
+ package {
99
+ name 'foo'
100
+ version '0.0.1'
101
+ type 'test'
102
+ after_install 'foo'
103
+ }
104
+ }
105
+ expect(items[0].after_install).to be_instance_of(Array)
106
+ expect(items[0].after_install[0]).to eq('foo')
107
+ end
108
+
109
+ it "handles multiple after_installs" do
110
+ items = parse_dsl {
111
+ package {
112
+ name 'foo'
113
+ version '0.0.1'
114
+ type 'test'
115
+ after_install 'foo', 'bar'
116
+ after_install 'baz'
117
+ }
118
+ }
119
+ expect(items[0].after_install).to be_instance_of(Array)
120
+ expect(items[0].after_install).to eq([ 'foo', 'bar', 'baz' ])
121
+ end
122
+ end
123
+
124
+ context "before_remove" do
125
+ it "handles a before_remove" do
126
+ items = parse_dsl {
127
+ package {
128
+ name 'foo'
129
+ version '0.0.1'
130
+ type 'test'
131
+ before_remove 'foo'
132
+ }
133
+ }
134
+ expect(items[0].before_remove).to be_instance_of(Array)
135
+ expect(items[0].before_remove[0]).to eq('foo')
136
+ end
137
+
138
+ it "handles multiple before_removes" do
139
+ items = parse_dsl {
140
+ package {
141
+ name 'foo'
142
+ version '0.0.1'
143
+ type 'test'
144
+ before_remove 'foo', 'bar'
145
+ before_remove 'baz'
146
+ }
147
+ }
148
+ expect(items[0].before_remove).to be_instance_of(Array)
149
+ expect(items[0].before_remove).to eq([ 'foo', 'bar', 'baz' ])
150
+ end
151
+ end
152
+
153
+ context "after_remove" do
154
+ it "handles a after_remove" do
155
+ items = parse_dsl {
156
+ package {
157
+ name 'foo'
158
+ version '0.0.1'
159
+ type 'test'
160
+ after_remove 'foo'
161
+ }
162
+ }
163
+ expect(items[0].after_remove).to be_instance_of(Array)
164
+ expect(items[0].after_remove[0]).to eq('foo')
165
+ end
166
+
167
+ it "handles multiple after_removes" do
168
+ items = parse_dsl {
169
+ package {
170
+ name 'foo'
171
+ version '0.0.1'
172
+ type 'test'
173
+ after_remove 'foo', 'bar'
174
+ after_remove 'baz'
175
+ }
176
+ }
177
+ expect(items[0].after_remove).to be_instance_of(Array)
178
+ expect(items[0].after_remove).to eq([ 'foo', 'bar', 'baz' ])
179
+ end
180
+ end
181
+
182
+ context "before_upgrade" do
183
+ it "handles a before_upgrade" do
184
+ items = parse_dsl {
185
+ package {
186
+ name 'foo'
187
+ version '0.0.1'
188
+ type 'test'
189
+ before_upgrade 'foo'
190
+ }
191
+ }
192
+ expect(items[0].before_upgrade).to be_instance_of(Array)
193
+ expect(items[0].before_upgrade[0]).to eq('foo')
194
+ end
195
+
196
+ it "handles multiple before_upgrades" do
197
+ items = parse_dsl {
198
+ package {
199
+ name 'foo'
200
+ version '0.0.1'
201
+ type 'test'
202
+ before_upgrade 'foo', 'bar'
203
+ before_upgrade 'baz'
204
+ }
205
+ }
206
+ expect(items[0].before_upgrade).to be_instance_of(Array)
207
+ expect(items[0].before_upgrade).to eq([ 'foo', 'bar', 'baz' ])
208
+ end
209
+ end
210
+
211
+ context "after_upgrade" do
212
+ it "handles a after_upgrade" do
213
+ items = parse_dsl {
214
+ package {
215
+ name 'foo'
216
+ version '0.0.1'
217
+ type 'test'
218
+ after_upgrade 'foo'
219
+ }
220
+ }
221
+ expect(items[0].after_upgrade).to be_instance_of(Array)
222
+ expect(items[0].after_upgrade[0]).to eq('foo')
223
+ end
224
+
225
+ it "handles multiple after_upgrades" do
226
+ items = parse_dsl {
227
+ package {
228
+ name 'foo'
229
+ version '0.0.1'
230
+ type 'test'
231
+ after_upgrade 'foo', 'bar'
232
+ after_upgrade 'baz'
233
+ }
234
+ }
235
+ expect(items[0].after_upgrade).to be_instance_of(Array)
236
+ expect(items[0].after_upgrade).to eq([ 'foo', 'bar', 'baz' ])
237
+ end
238
+ end
62
239
  end
File without changes
File without changes
File without changes
File without changes
@@ -1,4 +1,3 @@
1
1
  RSpec.shared_context :executor do
2
2
  subject(:executor) { Packager::Executor.new(:dryrun => true) }
3
-
4
3
  end
@@ -2,14 +2,13 @@ require './spec/executor/context.rb'
2
2
  describe Packager::Executor do
3
3
  include_context :executor
4
4
 
5
- context "dependencies" do
6
- it "handles a dependency" do
7
- item = Packager::Struct::Package.new(
5
+ def self.testit(name, addl_input, addl_output)
6
+ it "handles a #{name}" do
7
+ item = Packager::Struct::Package.new({
8
8
  :name => 'foo',
9
9
  :version => '0.0.1',
10
10
  :type => 'test',
11
- :requires => [ 'foo' ],
12
- )
11
+ }.merge(addl_input))
13
12
  executor.execute_on([item])
14
13
  expect(executor.commands[0]).to eq(
15
14
  Packager::Struct::Command.new({
@@ -17,30 +16,56 @@ describe Packager::Executor do
17
16
  :version => '0.0.1',
18
17
  :source => 'empty',
19
18
  :target => 'test',
20
- :requires => [ 'foo' ],
21
- })
19
+ }.merge(addl_output))
22
20
  )
23
21
  end
24
22
  end
25
23
 
26
- context "provides" do
27
- it "handles a provides" do
28
- item = Packager::Struct::Package.new(
29
- :name => 'foo',
30
- :version => '0.0.1',
31
- :type => 'test',
32
- :provides => [ 'foo' ],
33
- )
34
- executor.execute_on([item])
35
- expect(executor.commands[0]).to eq(
36
- Packager::Struct::Command.new({
37
- :name => 'foo',
38
- :version => '0.0.1',
39
- :source => 'empty',
40
- :target => 'test',
41
- :provides => [ 'foo' ],
42
- })
43
- )
44
- end
45
- end
24
+ testit :dependency, {
25
+ :requires => ['foo'],
26
+ }, {
27
+ :requires => ['foo'],
28
+ }
29
+
30
+ testit :provides, {
31
+ :provides => ['foo'],
32
+ }, {
33
+ :provides => ['foo'],
34
+ }
35
+
36
+ testit :before_install, {
37
+ :before_install => ['foo'],
38
+ }, {
39
+ :before_install => ['foo'],
40
+ }
41
+
42
+ testit :after_install, {
43
+ :after_install => ['foo'],
44
+ }, {
45
+ :after_install => ['foo'],
46
+ }
47
+
48
+ testit :before_remove, {
49
+ :before_remove => ['foo'],
50
+ }, {
51
+ :before_remove => ['foo'],
52
+ }
53
+
54
+ testit :after_remove, {
55
+ :after_remove => ['foo'],
56
+ }, {
57
+ :after_remove => ['foo'],
58
+ }
59
+
60
+ testit :before_upgrade, {
61
+ :before_upgrade => ['foo'],
62
+ }, {
63
+ :before_upgrade => ['foo'],
64
+ }
65
+
66
+ testit :after_upgrade, {
67
+ :after_upgrade => ['foo'],
68
+ }, {
69
+ :after_upgrade => ['foo'],
70
+ }
46
71
  end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -63,5 +63,107 @@ describe Packager::Struct::Command do
63
63
  '-s', 'empty', '-t', 'test',
64
64
  ])
65
65
  end
66
+
67
+ it "handles before_install" do
68
+ cmd = Packager::Struct::Command.new(
69
+ :name => 'foo',
70
+ :version => '0.0.1',
71
+ :target => 'test',
72
+ :before_install => ['foo'],
73
+ )
74
+
75
+ expect(cmd.to_system).to eq([
76
+ 'fpm',
77
+ '--name', 'foo',
78
+ '--version', '0.0.1',
79
+ '--before-install', 'foo',
80
+ '-s', 'empty', '-t', 'test',
81
+ ])
82
+ end
83
+
84
+ it "handles after_install" do
85
+ cmd = Packager::Struct::Command.new(
86
+ :name => 'foo',
87
+ :version => '0.0.1',
88
+ :target => 'test',
89
+ :after_install => ['foo'],
90
+ )
91
+
92
+ expect(cmd.to_system).to eq([
93
+ 'fpm',
94
+ '--name', 'foo',
95
+ '--version', '0.0.1',
96
+ '--after-install', 'foo',
97
+ '-s', 'empty', '-t', 'test',
98
+ ])
99
+ end
100
+
101
+ it "handles before_remove" do
102
+ cmd = Packager::Struct::Command.new(
103
+ :name => 'foo',
104
+ :version => '0.0.1',
105
+ :target => 'test',
106
+ :before_remove => ['foo'],
107
+ )
108
+
109
+ expect(cmd.to_system).to eq([
110
+ 'fpm',
111
+ '--name', 'foo',
112
+ '--version', '0.0.1',
113
+ '--before-remove', 'foo',
114
+ '-s', 'empty', '-t', 'test',
115
+ ])
116
+ end
117
+
118
+ it "handles after_remove" do
119
+ cmd = Packager::Struct::Command.new(
120
+ :name => 'foo',
121
+ :version => '0.0.1',
122
+ :target => 'test',
123
+ :after_remove => ['foo'],
124
+ )
125
+
126
+ expect(cmd.to_system).to eq([
127
+ 'fpm',
128
+ '--name', 'foo',
129
+ '--version', '0.0.1',
130
+ '--after-remove', 'foo',
131
+ '-s', 'empty', '-t', 'test',
132
+ ])
133
+ end
134
+
135
+ it "handles before_upgrade" do
136
+ cmd = Packager::Struct::Command.new(
137
+ :name => 'foo',
138
+ :version => '0.0.1',
139
+ :target => 'test',
140
+ :before_upgrade => ['foo'],
141
+ )
142
+
143
+ expect(cmd.to_system).to eq([
144
+ 'fpm',
145
+ '--name', 'foo',
146
+ '--version', '0.0.1',
147
+ '--before-upgrade', 'foo',
148
+ '-s', 'empty', '-t', 'test',
149
+ ])
150
+ end
151
+
152
+ it "handles after_upgrade" do
153
+ cmd = Packager::Struct::Command.new(
154
+ :name => 'foo',
155
+ :version => '0.0.1',
156
+ :target => 'test',
157
+ :after_upgrade => ['foo'],
158
+ )
159
+
160
+ expect(cmd.to_system).to eq([
161
+ 'fpm',
162
+ '--name', 'foo',
163
+ '--version', '0.0.1',
164
+ '--after-upgrade', 'foo',
165
+ '-s', 'empty', '-t', 'test',
166
+ ])
167
+ end
66
168
  end
67
169
  end
File without changes
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.1
4
+ version: 0.1.2
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 00:00:00.000000000 Z
11
+ date: 2018-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dsl_maker