between_meals 0.0.10 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/between_meals/knife.rb +39 -17
- data/lib/between_meals/repo/git.rb +16 -15
- data/lib/between_meals/repo/hg.rb +16 -15
- data/lib/between_meals/repo/svn.rb +1 -1
- data/lib/between_meals/util.rb +7 -6
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e58d518baa0534eecc6de15ac0fb0f7f09a6069f6fb870a60c55adf2cf2f8404
|
4
|
+
data.tar.gz: 44aaa21c488bea122a228466f0c30f5d0c9eab3ff778b3f60242cccaf2020ee6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a44420814d8e34888bea5be482a7d8b43d30979c0c8369cb11e0b13ff4cddc36e0a3da29a955d70917ba9b878fa75213640b718658c0f4b6fabbd199e002f8a
|
7
|
+
data.tar.gz: 12dece7d9a249c883bef1eb0c6460977998fbc7b7e6ba90ecaf5bb7912d374df72b919bd78b1aece7548e1063664e04b6d80007ad5c68baaf2a587060cc6a0aa
|
data/lib/between_meals/knife.rb
CHANGED
@@ -39,6 +39,14 @@ module BetweenMeals
|
|
39
39
|
@config = opts[:config] ||
|
40
40
|
"#{@home}/.chef/knife-#{@user}-taste-tester.rb"
|
41
41
|
@knife = opts[:bin] || 'knife'
|
42
|
+
@knife_verb_option = ''
|
43
|
+
unless @logger.nil?
|
44
|
+
if @logger.level == Logger::DEBUG
|
45
|
+
@knife_verb_option = '-VV'
|
46
|
+
elsif @logger.level == Logger::INFO
|
47
|
+
@knife_verb_option = '-V'
|
48
|
+
end
|
49
|
+
end
|
42
50
|
@berks = opts[:berks_bin] || 'berks'
|
43
51
|
@berks_config = opts[:berks_config]
|
44
52
|
@pem = opts[:pem] ||
|
@@ -55,7 +63,8 @@ module BetweenMeals
|
|
55
63
|
def role_upload_all
|
56
64
|
if File.exists?(@role_dir)
|
57
65
|
roles = File.join(@role_dir, "*.#{@role_type}")
|
58
|
-
exec!("#{@knife} role from file #{roles}
|
66
|
+
exec!("#{@knife} role from file #{roles} #{@knife_verb_option} " +
|
67
|
+
"-c #{@config}", @logger)
|
59
68
|
end
|
60
69
|
end
|
61
70
|
|
@@ -64,22 +73,23 @@ module BetweenMeals
|
|
64
73
|
roles = roles.map do |x|
|
65
74
|
File.join(@role_dir, "#{x.name}.#{@role_type}")
|
66
75
|
end.join(' ')
|
67
|
-
exec!("#{@knife} role from file #{roles}
|
76
|
+
exec!("#{@knife} role from file #{roles} #{@knife_verb_option} " +
|
77
|
+
"-c #{@config}", @logger)
|
68
78
|
end
|
69
79
|
end
|
70
80
|
|
71
81
|
def role_delete(roles)
|
72
82
|
if roles.any?
|
73
83
|
roles.each do |role|
|
74
|
-
exec!(
|
75
|
-
"
|
76
|
-
)
|
84
|
+
exec!("#{@knife} role delete #{role.name} #{@knife_verb_option} " +
|
85
|
+
"--yes -c #{@config}", @logger)
|
77
86
|
end
|
78
87
|
end
|
79
88
|
end
|
80
89
|
|
81
90
|
def cookbook_upload_all
|
82
|
-
exec!("#{@knife} cookbook upload -a
|
91
|
+
exec!("#{@knife} cookbook upload -a #{@knife_verb_option} " +
|
92
|
+
"-c #{@config}", @logger)
|
83
93
|
end
|
84
94
|
|
85
95
|
def berks_cookbook_upload_all
|
@@ -99,7 +109,8 @@ module BetweenMeals
|
|
99
109
|
def cookbook_upload(cookbooks)
|
100
110
|
if cookbooks.any?
|
101
111
|
cookbooks = cookbooks.map(&:name).join(' ')
|
102
|
-
exec!("#{@knife} cookbook upload #{cookbooks}
|
112
|
+
exec!("#{@knife} cookbook upload #{cookbooks} #{@knife_verb_option} " +
|
113
|
+
"-c #{@config}", @logger)
|
103
114
|
end
|
104
115
|
end
|
105
116
|
|
@@ -126,7 +137,8 @@ module BetweenMeals
|
|
126
137
|
if cookbooks.any?
|
127
138
|
cookbooks.each do |cookbook|
|
128
139
|
exec!("#{@knife} cookbook delete #{cookbook.name}" +
|
129
|
-
" --purge -a --yes -c #{@config}",
|
140
|
+
" --purge -a --yes #{@knife_verb_option} -c #{@config}",
|
141
|
+
@logger)
|
130
142
|
end
|
131
143
|
end
|
132
144
|
end
|
@@ -149,7 +161,8 @@ module BetweenMeals
|
|
149
161
|
File.join(@databag_dir, dbname, "#{x.item}.json")
|
150
162
|
end.join(' ')
|
151
163
|
exec!(
|
152
|
-
"#{@knife} data bag from file #{dbname} #{dbitems}
|
164
|
+
"#{@knife} data bag from file #{dbname} #{dbitems} " +
|
165
|
+
"#{@knife_verb_option} -c #{@config}",
|
153
166
|
@logger,
|
154
167
|
)
|
155
168
|
end
|
@@ -161,7 +174,7 @@ module BetweenMeals
|
|
161
174
|
databags.group_by(&:name).each do |dbname, dbs|
|
162
175
|
dbs.each do |db|
|
163
176
|
exec!("#{@knife} data bag delete #{dbname} #{db.item}" +
|
164
|
-
" --yes -c #{@config}", @logger)
|
177
|
+
" --yes #{@knife_verb_option} -c #{@config}", @logger)
|
165
178
|
end
|
166
179
|
delete_databag_if_empty(dbname)
|
167
180
|
end
|
@@ -186,8 +199,11 @@ BLOCK
|
|
186
199
|
cfg << " \"#{dir}\",\n"
|
187
200
|
end
|
188
201
|
cfg << "]\n"
|
189
|
-
|
202
|
+
begin
|
190
203
|
Dir.mkdir(File.dirname(@config), 0o755)
|
204
|
+
rescue Errno::EEXIST
|
205
|
+
# not an error if it's already there.
|
206
|
+
nil
|
191
207
|
end
|
192
208
|
if !File.exists?(@config) ||
|
193
209
|
::Digest::MD5.hexdigest(cfg) !=
|
@@ -228,8 +244,11 @@ IAMAEpsWX2s2A6phgMCx7kH6wMmoZn3hb7Thh9+PfR8Jtp2/7k+ibCeF4gEWUCs5
|
|
228
244
|
-----END PRIVATE KEY-----
|
229
245
|
BLOCK
|
230
246
|
|
231
|
-
|
247
|
+
begin
|
232
248
|
Dir.mkdir(File.dirname(@pem), 0o755)
|
249
|
+
rescue Errno::EEXIST
|
250
|
+
# not an error if it's already there.
|
251
|
+
nil
|
233
252
|
end
|
234
253
|
|
235
254
|
unless File.exists?(@pem)
|
@@ -242,22 +261,25 @@ IAMAEpsWX2s2A6phgMCx7kH6wMmoZn3hb7Thh9+PfR8Jtp2/7k+ibCeF4gEWUCs5
|
|
242
261
|
|
243
262
|
def create_databag_if_missing(databag)
|
244
263
|
s = Mixlib::ShellOut.new("#{@knife} data bag list" +
|
245
|
-
" --format json
|
264
|
+
" --format json #{@knife_verb_option} " +
|
265
|
+
"-c #{@config}").run_command
|
246
266
|
s.error!
|
247
267
|
db = JSON.parse(s.stdout)
|
248
268
|
unless db.include?(databag)
|
249
|
-
exec!("#{@knife} data bag create #{databag}
|
269
|
+
exec!("#{@knife} data bag create #{databag} #{@knife_verb_option} " +
|
270
|
+
"-c #{@config}", @logger)
|
250
271
|
end
|
251
272
|
end
|
252
273
|
|
253
274
|
def delete_databag_if_empty(databag)
|
254
275
|
s = Mixlib::ShellOut.new("#{@knife} data bag show #{databag}" +
|
255
|
-
" --format json
|
276
|
+
" --format json #{@knife_verb_option} " +
|
277
|
+
"-c #{@config}").run_command
|
256
278
|
s.error!
|
257
279
|
db = JSON.parse(s.stdout)
|
258
280
|
if db.empty?
|
259
|
-
exec!("#{@knife} data bag delete #{databag} --yes
|
260
|
-
|
281
|
+
exec!("#{@knife} data bag delete #{databag} --yes " +
|
282
|
+
"#{@knife_verb_option} -c #{@config}", @logger)
|
261
283
|
end
|
262
284
|
end
|
263
285
|
end
|
@@ -154,53 +154,54 @@ module BetweenMeals
|
|
154
154
|
|
155
155
|
# rubocop:disable MultilineBlockChain
|
156
156
|
changes.lines.map do |line|
|
157
|
-
|
158
|
-
|
157
|
+
parts = line.chomp.split("\t")
|
158
|
+
case parts[0]
|
159
|
+
when 'A'
|
159
160
|
# A path
|
160
161
|
{
|
161
162
|
:status => :modified,
|
162
|
-
:path =>
|
163
|
+
:path => parts[1],
|
163
164
|
}
|
164
|
-
when /^C(?:\d*)
|
165
|
+
when /^C(?:\d*)/
|
165
166
|
# C<numbers> path1 path2
|
166
167
|
{
|
167
168
|
:status => :modified,
|
168
|
-
:path =>
|
169
|
+
:path => parts[2],
|
169
170
|
}
|
170
|
-
when
|
171
|
+
when 'D'
|
171
172
|
# D path
|
172
173
|
{
|
173
174
|
:status => :deleted,
|
174
|
-
:path =>
|
175
|
+
:path => parts[1],
|
175
176
|
}
|
176
|
-
when /^M(?:\d*)
|
177
|
+
when /^M(?:\d*)/
|
177
178
|
# M<numbers> path
|
178
179
|
{
|
179
180
|
:status => :modified,
|
180
|
-
:path =>
|
181
|
+
:path => parts[1],
|
181
182
|
}
|
182
|
-
when /^R(?:\d*)
|
183
|
+
when /^R(?:\d*)/
|
183
184
|
# R<numbers> path1 path2
|
184
185
|
[
|
185
186
|
{
|
186
187
|
:status => :deleted,
|
187
|
-
:path =>
|
188
|
+
:path => parts[1],
|
188
189
|
},
|
189
190
|
{
|
190
191
|
:status => :modified,
|
191
|
-
:path =>
|
192
|
+
:path => parts[2],
|
192
193
|
},
|
193
194
|
]
|
194
|
-
when
|
195
|
+
when 'T'
|
195
196
|
# T path
|
196
197
|
[
|
197
198
|
{
|
198
199
|
:status => :deleted,
|
199
|
-
:path =>
|
200
|
+
:path => parts[1],
|
200
201
|
},
|
201
202
|
{
|
202
203
|
:status => :modified,
|
203
|
-
:path =>
|
204
|
+
:path => parts[1],
|
204
205
|
},
|
205
206
|
]
|
206
207
|
else
|
@@ -166,41 +166,42 @@ module BetweenMeals
|
|
166
166
|
# = origin of the previous file (with --copies)
|
167
167
|
|
168
168
|
changes.lines.map do |line|
|
169
|
-
|
170
|
-
|
169
|
+
parts = line.chomp.split(nil, 2)
|
170
|
+
case parts[0]
|
171
|
+
when 'A'
|
171
172
|
{
|
172
173
|
:status => :added,
|
173
|
-
:path =>
|
174
|
+
:path => parts[1],
|
174
175
|
}
|
175
|
-
when
|
176
|
+
when 'C'
|
176
177
|
{
|
177
178
|
:status => :clean,
|
178
|
-
:path =>
|
179
|
+
:path => parts[1],
|
179
180
|
}
|
180
|
-
when
|
181
|
+
when 'R'
|
181
182
|
{
|
182
183
|
:status => :deleted,
|
183
|
-
:path =>
|
184
|
+
:path => parts[1],
|
184
185
|
}
|
185
|
-
when
|
186
|
+
when 'M'
|
186
187
|
{
|
187
188
|
:status => :modified,
|
188
|
-
:path =>
|
189
|
+
:path => parts[1],
|
189
190
|
}
|
190
|
-
when
|
191
|
+
when '!'
|
191
192
|
{
|
192
193
|
:status => :missing,
|
193
|
-
:path =>
|
194
|
+
:path => parts[1],
|
194
195
|
}
|
195
|
-
when
|
196
|
+
when '?'
|
196
197
|
{
|
197
198
|
:status => :untracked,
|
198
|
-
:path =>
|
199
|
+
:path => parts[1],
|
199
200
|
}
|
200
|
-
when
|
201
|
+
when 'I'
|
201
202
|
{
|
202
203
|
:status => :ignored,
|
203
|
-
:path =>
|
204
|
+
:path => parts[1],
|
204
205
|
}
|
205
206
|
else
|
206
207
|
fail 'Failed to parse repo diff line.'
|
@@ -102,7 +102,7 @@ module BetweenMeals
|
|
102
102
|
# http://svnbook.red-bean.com/en/1.0/re26.html
|
103
103
|
changes.lines.map do |line|
|
104
104
|
case line
|
105
|
-
when /^([\w ])\w?\s+(
|
105
|
+
when /^([\w ])\w?\s+(.+)$/
|
106
106
|
{
|
107
107
|
:status => Regexp.last_match(1) == 'D' ? :deleted : :modified,
|
108
108
|
:path => Regexp.last_match(2).sub("#{@repo_path}/", ''),
|
data/lib/between_meals/util.rb
CHANGED
@@ -38,16 +38,17 @@ module BetweenMeals
|
|
38
38
|
info("Executed in #{format('%.2f', Time.now - t0)}s")
|
39
39
|
end
|
40
40
|
|
41
|
-
def exec!(command, logger = nil)
|
41
|
+
def exec!(command, logger = nil, stream = nil)
|
42
42
|
@@logger = logger if logger
|
43
|
-
c = execute(command)
|
43
|
+
c = execute(command, stream)
|
44
44
|
c.error!
|
45
45
|
return c.status.exitstatus, c.stdout
|
46
46
|
end
|
47
47
|
|
48
|
-
def exec(command, logger = nil)
|
48
|
+
def exec(command, logger = nil, stream = nil)
|
49
49
|
@@logger = logger if logger
|
50
|
-
|
50
|
+
|
51
|
+
c = execute(command, stream)
|
51
52
|
return c.status.exitstatus, c.stdout
|
52
53
|
end
|
53
54
|
|
@@ -57,9 +58,9 @@ module BetweenMeals
|
|
57
58
|
@@logger&.info(msg)
|
58
59
|
end
|
59
60
|
|
60
|
-
def execute(command)
|
61
|
+
def execute(command, stream)
|
61
62
|
info("Running: #{command}")
|
62
|
-
c = Mixlib::ShellOut.new(command)
|
63
|
+
c = Mixlib::ShellOut.new(command, :live_stream => stream)
|
63
64
|
c.run_command
|
64
65
|
c.stdout.lines.each do |line|
|
65
66
|
info("STDOUT: #{line.strip}")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: between_meals
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Phil Dibowitz
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-05-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: colorize
|
@@ -150,7 +150,7 @@ files:
|
|
150
150
|
- lib/between_meals/util.rb
|
151
151
|
homepage: https://github.com/facebook/between-meals
|
152
152
|
licenses:
|
153
|
-
- Apache
|
153
|
+
- Apache-2.0
|
154
154
|
metadata: {}
|
155
155
|
post_install_message:
|
156
156
|
rdoc_options: []
|