batali 0.2.6 → 0.2.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +116 -0
- data/batali.gemspec +1 -1
- data/bin/batali +1 -0
- data/lib/batali/command/resolve.rb +3 -3
- data/lib/batali/command.rb +3 -1
- data/lib/batali/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e09935acfcbc04835f428e88c65c46d5effbc164
|
4
|
+
data.tar.gz: 5d9b81aacd71727b823947a744a050962908e197
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfa3f9193ac35a32b7d467d4f46dbc687c67e944f8ae0ffc95d5ca952d8613a93dde468af54a7310004677ed177cb78f44f581f6135c53899b64ad4e60af60c6
|
7
|
+
data.tar.gz: 05a5d1eff7e95a0b584a52f1a3e2ca38a17511a17dd5641f8256a8627027368e9db748df7be50b9078f6f43f2819ab0abcbc96a472b8fbe76915c095fe2b2565
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -202,6 +202,122 @@ $ batali resolve --infrastructure
|
|
202
202
|
|
203
203
|
_NOTE: Depending on constraints defined within the Batali file, this can be a very large manifest_
|
204
204
|
|
205
|
+
#### Uploading infrastructure cookbooks
|
206
|
+
|
207
|
+
When the infrastructure cookbooks are installed locally, the cookbook directories will have
|
208
|
+
the version number as a suffix. This can cause a problem when attempting to run:
|
209
|
+
|
210
|
+
```
|
211
|
+
$ knife cookbook upload --all
|
212
|
+
```
|
213
|
+
|
214
|
+
due to knife using the directory name as the actual cookbook name. To get around this problem
|
215
|
+
the `upload` command can be used directly with the correct options enabled. These options must
|
216
|
+
be defined within the config file as the options are not accessible via CLI flags. Assuming
|
217
|
+
a `.chef/knife.rb` file exists:
|
218
|
+
|
219
|
+
```ruby
|
220
|
+
# .chef/knife.rb
|
221
|
+
|
222
|
+
versioned_cookbooks true
|
223
|
+
```
|
224
|
+
|
225
|
+
```
|
226
|
+
$ knife upload cookbooks
|
227
|
+
```
|
228
|
+
|
229
|
+
### Display outdated cookbooks
|
230
|
+
|
231
|
+
Want to see what cookbooks have newer versions available within the defined constraints? Use
|
232
|
+
the dry run option to see what upgrades are available without actually changing the manifest:
|
233
|
+
|
234
|
+
```
|
235
|
+
$ batali resolve --no-least-impact --dry-run
|
236
|
+
```
|
237
|
+
|
238
|
+
## Configuration
|
239
|
+
|
240
|
+
Batali can be configured via the `.batali` file. The contents of the file can be in YAML,
|
241
|
+
JSON, XML, or Ruby. Every option displayed via the help call can be set within this file.
|
242
|
+
The configuration can hold items isolated within a command's name, or defined at the top
|
243
|
+
level of the configuration file. For example:
|
244
|
+
|
245
|
+
```ruby
|
246
|
+
Configuration.new do
|
247
|
+
debug true
|
248
|
+
resolve do
|
249
|
+
debug false
|
250
|
+
end
|
251
|
+
end
|
252
|
+
```
|
253
|
+
|
254
|
+
This configuration turns debug output on for all commands _except_ the resolve command.
|
255
|
+
This feature is handy in situations where multiple commands may have the same flag that
|
256
|
+
should always be enabled, like the `infrastructure` flag:
|
257
|
+
|
258
|
+
```ruby
|
259
|
+
Configuration.new do
|
260
|
+
infrastructure true
|
261
|
+
end
|
262
|
+
```
|
263
|
+
|
264
|
+
When flags on the CLI contain a dash, they are referenced within the configuration file
|
265
|
+
as an underscore. For example the least impact flag on the CLI looks like:
|
266
|
+
|
267
|
+
```
|
268
|
+
--least-impact
|
269
|
+
```
|
270
|
+
|
271
|
+
and the key in the configuration looks like:
|
272
|
+
|
273
|
+
```
|
274
|
+
least_impact
|
275
|
+
```
|
276
|
+
|
277
|
+
### Example configurations
|
278
|
+
|
279
|
+
#### Ruby
|
280
|
+
|
281
|
+
```ruby
|
282
|
+
Configuration.new do
|
283
|
+
infrastructure true
|
284
|
+
resolve do
|
285
|
+
least_impact false
|
286
|
+
end
|
287
|
+
end
|
288
|
+
```
|
289
|
+
|
290
|
+
#### JSON
|
291
|
+
|
292
|
+
```json
|
293
|
+
{
|
294
|
+
"infrastructure": true,
|
295
|
+
"resolve": {
|
296
|
+
"least_impact": false
|
297
|
+
}
|
298
|
+
}
|
299
|
+
```
|
300
|
+
|
301
|
+
#### YAML
|
302
|
+
|
303
|
+
```yaml
|
304
|
+
---
|
305
|
+
:infrastructure: true
|
306
|
+
:resolve:
|
307
|
+
:least_impact: false
|
308
|
+
```
|
309
|
+
|
310
|
+
#### XML
|
311
|
+
|
312
|
+
```xml
|
313
|
+
<configuration>
|
314
|
+
<infrastructure>true</infrastructure>
|
315
|
+
<resolve>
|
316
|
+
<least_impact>false</least_impact>
|
317
|
+
</resolve>
|
318
|
+
</configuration>
|
319
|
+
```
|
320
|
+
|
205
321
|
## Test Kitchen
|
206
322
|
|
207
323
|
Batali can be used with [Test Kitchen](https://github.com/test-kitchen/test-kitchen):
|
data/batali.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.add_runtime_dependency 'attribute_struct', '~> 0.2.14'
|
14
14
|
s.add_runtime_dependency 'grimoire', '~> 0.2.1'
|
15
15
|
s.add_runtime_dependency 'bogo', '~> 0.1.18'
|
16
|
-
s.add_runtime_dependency 'bogo-cli', '~> 0.1.
|
16
|
+
s.add_runtime_dependency 'bogo-cli', '~> 0.1.18'
|
17
17
|
s.add_runtime_dependency 'bogo-config', '~> 0.1.10'
|
18
18
|
s.add_runtime_dependency 'bogo-ui', '~> 0.1.6'
|
19
19
|
s.add_runtime_dependency 'http', '~> 0.8.2'
|
data/bin/batali
CHANGED
@@ -21,6 +21,7 @@ Bogo::Cli::Setup.define do
|
|
21
21
|
self.instance_exec(&global_opts)
|
22
22
|
on :d, 'dry-run', 'Print changes'
|
23
23
|
on :p, 'path', 'Cookbook install path'
|
24
|
+
on :I, 'infrastructure', 'Resolve infrastructure cookbooks'
|
24
25
|
run do |opts, args|
|
25
26
|
Batali::Command::Install.new({:install => opts.to_hash}, args).execute!
|
26
27
|
end
|
@@ -29,7 +29,7 @@ module Batali
|
|
29
29
|
:system => system,
|
30
30
|
:score_keeper => score_keeper
|
31
31
|
)
|
32
|
-
if(
|
32
|
+
if(config[:infrastructure])
|
33
33
|
infrastructure_resolution(solv)
|
34
34
|
else
|
35
35
|
single_path_resolution(solv)
|
@@ -40,7 +40,7 @@ module Batali
|
|
40
40
|
def score_keeper
|
41
41
|
memoize(:score_keeper) do
|
42
42
|
sk_manifest = Manifest.new(:cookbook => manifest.cookbook)
|
43
|
-
unless(
|
43
|
+
unless(config[:least_impact])
|
44
44
|
sk_manifest.cookbook.clear
|
45
45
|
end
|
46
46
|
sk_manifest.cookbook.delete_if do |unit|
|
@@ -62,7 +62,7 @@ module Batali
|
|
62
62
|
]
|
63
63
|
ui.info 'Performing single path resolution.'
|
64
64
|
if(manifest.infrastructure)
|
65
|
-
ui.
|
65
|
+
ui.confirm 'Current manifest is resolved for infrastucture. Convert to single path?'
|
66
66
|
end
|
67
67
|
results = []
|
68
68
|
run_action 'Resolving dependency constraints' do
|
data/lib/batali/command.rb
CHANGED
@@ -5,6 +5,8 @@ module Batali
|
|
5
5
|
# Customized command base for Batali
|
6
6
|
class Command < Bogo::Cli::Command
|
7
7
|
|
8
|
+
DEFAULT_CONFIGURATION_FILES = ['.batali']
|
9
|
+
|
8
10
|
include Bogo::Memoization
|
9
11
|
|
10
12
|
autoload :Configure, 'batali/command/configure'
|
@@ -44,7 +46,7 @@ module Batali
|
|
44
46
|
# @return [String] path to local cache
|
45
47
|
def cache_directory(*args)
|
46
48
|
memoize(['cache_directory', *args].join('_')) do
|
47
|
-
directory = config.fetch(:cache_directory, '/
|
49
|
+
directory = config.fetch(:cache_directory, File.expand_path('~/.batali/cache'))
|
48
50
|
ui.debug "Cache directory to persist cookbooks: #{directory}"
|
49
51
|
unless(args.empty?)
|
50
52
|
directory = File.join(directory, *args.map(&:to_s))
|
data/lib/batali/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: batali
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Roberts
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: attribute_struct
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.1.
|
61
|
+
version: 0.1.18
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.1.
|
68
|
+
version: 0.1.18
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bogo-config
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|