whisk 0.0.4 → 0.1.0
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.
- data/README.md +68 -12
- data/bin/whisk +2 -26
- data/lib/whisk/bowl.rb +23 -12
- data/lib/whisk/cli.rb +96 -0
- data/lib/whisk/flavour/git.rb +17 -21
- data/lib/whisk/ingredient.rb +21 -8
- data/lib/whisk/version.rb +1 -1
- data/lib/whisk/{config.rb → whiskfile.rb} +26 -22
- data/lib/whisk.rb +10 -0
- metadata +62 -15
- data/lib/whisk/log.rb +0 -37
data/README.md
CHANGED
@@ -1,18 +1,23 @@
|
|
1
1
|
Whisk
|
2
2
|
=====
|
3
3
|
|
4
|
-
Whisk is a simple cookbook manager for Chef, inspired by librarian
|
5
|
-
|
6
|
-
exactly what you tell it.
|
4
|
+
Whisk is a simple cookbook manager for Chef, inspired by librarian and
|
5
|
+
berkshelf.
|
7
6
|
|
8
|
-
|
7
|
+
Unlike these tools, Whisk only concerns itself with fetching and preparing
|
8
|
+
exactly what you tell it, and will not resolve dependencies for you or make any
|
9
|
+
decisions about which code gets downloaded for you.
|
9
10
|
|
10
|
-
|
11
|
-
|
12
|
-
|
11
|
+
Whisk has been designed to work with git only and tries to help automating
|
12
|
+
the more tedious aspects of working in with 'the single repository per
|
13
|
+
cookbook' model.
|
14
|
+
|
15
|
+
# Configuration #
|
13
16
|
|
14
17
|
Whisk will prepare one or multiple 'bowls' of cookbooks as specified in your
|
15
|
-
|
18
|
+
Whiskfile.
|
19
|
+
|
20
|
+
## Example Whiskfile ##
|
16
21
|
|
17
22
|
cb_path = "/home/msf/hack/whisk/%s"
|
18
23
|
github = "git://github.com/cookbooks/%s.git"
|
@@ -20,10 +25,61 @@ whisk.rb file.
|
|
20
25
|
bowl "production" do
|
21
26
|
path cb_path % name
|
22
27
|
|
23
|
-
ingredient "ntp"
|
24
|
-
|
25
|
-
|
28
|
+
ingredient "ntp" do
|
29
|
+
source github % "ntp"
|
30
|
+
options { :ref => 'master' }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# Commands #
|
35
|
+
|
36
|
+
## whisk prepare ##
|
37
|
+
|
38
|
+
The prepare subcommand allows you to clone your ingredients and optional
|
39
|
+
checkout a specified ref.
|
40
|
+
|
41
|
+
$ whisk prepare
|
42
|
+
Creating bowl 'production' with path /home/msf/hack/whisk/production
|
43
|
+
Preparing bowl 'production' with path /home/msf/hack/whisk/production
|
44
|
+
Cloning ingredient ntp, from git url git://github.com/cookbooks/ntp.git
|
45
|
+
Cloning into 'ntp'...
|
46
|
+
Checking out ref 'master' for ingredient ntp
|
47
|
+
|
48
|
+
You can also use specify an optional filter to run prepare on a subset of
|
49
|
+
cookbooks using ruby regexes.
|
50
|
+
|
51
|
+
# prepare the 'development' bowl
|
52
|
+
$ whisk prepare dev
|
53
|
+
|
54
|
+
# prepare the ntp cookbook in all configured bowls'
|
55
|
+
$ whisk prepare '.*' 'ntp'
|
56
|
+
|
57
|
+
# prepare a list of cookbooks
|
58
|
+
$ whisk prepare 'dev' '(ssh|ntp)'
|
59
|
+
|
60
|
+
## whisk status ##
|
61
|
+
|
62
|
+
Whisk status calls 'git status' on the specified set of ingredients.
|
63
|
+
|
64
|
+
You can use the same filter mechanisms as described in 'whisk prepare'
|
65
|
+
to run update on a subset of ingredients
|
66
|
+
|
67
|
+
# show status for all configured bowls
|
68
|
+
$ whisk status
|
69
|
+
Status for ingredient 'production/ntp'
|
70
|
+
# On branch master
|
71
|
+
nothing to commit (working directory clean)
|
72
|
+
|
73
|
+
## whisk update ##
|
74
|
+
|
75
|
+
Whisk update calls 'git remote update' on the specified set of ingredients
|
76
|
+
on them. It does not attempt to merge any code from your remotes.
|
26
77
|
|
27
|
-
|
78
|
+
You can use the same filter mechanisms as described in 'whisk prepare'
|
79
|
+
to run update on a subset of ingredients
|
28
80
|
|
81
|
+
# update all ingredients, in all bowls
|
82
|
+
$ whisk update
|
29
83
|
|
84
|
+
# only update the 'development bowl'
|
85
|
+
$ whisk update dev
|
data/bin/whisk
CHANGED
@@ -18,30 +18,6 @@
|
|
18
18
|
#
|
19
19
|
|
20
20
|
$:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
|
21
|
+
require 'whisk/cli'
|
21
22
|
|
22
|
-
|
23
|
-
require 'logger'
|
24
|
-
require 'whisk/config'
|
25
|
-
require 'whisk/log'
|
26
|
-
|
27
|
-
# borrowed from chef/chef/lib/chef/application.rb
|
28
|
-
logger = Logger.new(STDOUT)
|
29
|
-
STDOUT.sync = true
|
30
|
-
logger.formatter = Whisk::Log.logger.formatter
|
31
|
-
Whisk::Log::Formatter.show_time = false
|
32
|
-
Whisk::Log.loggers << logger
|
33
|
-
|
34
|
-
if File.exists?("Whiskfile")
|
35
|
-
whiskfile = "Whiskfile"
|
36
|
-
else
|
37
|
-
whiskfile = File.join(ENV['HOME'], '.chef', 'whisk.rb')
|
38
|
-
end
|
39
|
-
|
40
|
-
Whisk::Log.info "Loading configuration from Whiskfile: #{whiskfile}"
|
41
|
-
|
42
|
-
Whisk::Config.from_file(whiskfile)
|
43
|
-
|
44
|
-
bowls = Whisk::Config.bowls
|
45
|
-
bowls.each do |name, bowl|
|
46
|
-
bowl.prepare
|
47
|
-
end
|
23
|
+
Whisk::CLI.start
|
data/lib/whisk/bowl.rb
CHANGED
@@ -17,7 +17,6 @@
|
|
17
17
|
|
18
18
|
require 'pp'
|
19
19
|
require 'fileutils'
|
20
|
-
require 'whisk/log'
|
21
20
|
require 'whisk/ingredient'
|
22
21
|
|
23
22
|
class Whisk
|
@@ -40,22 +39,18 @@ class Whisk
|
|
40
39
|
end
|
41
40
|
end
|
42
41
|
|
43
|
-
def ingredient(iname,
|
42
|
+
def ingredient(iname, &block)
|
44
43
|
if ingredients.has_key? iname
|
45
|
-
raise ArgumentError "
|
44
|
+
raise ArgumentError "Ingredient '#{iname}' has already added to bowl '#{name}'"
|
46
45
|
else
|
47
|
-
|
48
|
-
flavour = opts.delete :flavour
|
49
|
-
options = opts.delete :options
|
50
|
-
i = Whisk::Ingredient.new(iname, source, flavour, options)
|
51
|
-
ingredients[iname] = i
|
46
|
+
ingredients[iname] = Whisk::Ingredient.new(iname, &block)
|
52
47
|
end
|
53
48
|
end
|
54
49
|
|
55
50
|
def create!
|
56
|
-
|
51
|
+
unless Dir.exists? path
|
57
52
|
begin
|
58
|
-
Whisk
|
53
|
+
Whisk.ui.info "Creating bowl '#{name}' with path #{path}"
|
59
54
|
::FileUtils.mkdir_p path
|
60
55
|
rescue Exception => e
|
61
56
|
puts "#{e.backtrace} #{e.message}"
|
@@ -67,17 +62,33 @@ class Whisk
|
|
67
62
|
self.create!
|
68
63
|
::Dir.chdir path
|
69
64
|
|
70
|
-
Whisk
|
65
|
+
Whisk.ui.info "Preparing bowl '#{name}' with path #{path}"
|
71
66
|
|
72
67
|
ingredients.each do |name, ingredient|
|
73
68
|
begin
|
74
69
|
ingredient.prepare
|
75
70
|
rescue Exception => e
|
76
|
-
Whisk
|
71
|
+
Whisk.ui.error "Failed fetching ingredient '#{name}'"
|
77
72
|
raise
|
78
73
|
exit 1
|
79
74
|
end
|
80
75
|
end
|
81
76
|
end
|
77
|
+
|
78
|
+
def status
|
79
|
+
::Dir.chdir path
|
80
|
+
ingredients.each do |name, ingredient|
|
81
|
+
Whisk.ui.info "Status for ingredient '#{self.name}/#{name}'"
|
82
|
+
ingredient.status
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def update
|
87
|
+
::Dir.chdir path
|
88
|
+
ingredients.each do |name, ingredient|
|
89
|
+
Whisk.ui.info "Updating ingredient '#{self.name}/#{name}'"
|
90
|
+
ingredient.update
|
91
|
+
end
|
92
|
+
end
|
82
93
|
end
|
83
94
|
end
|
data/lib/whisk/cli.rb
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
# Author:: Jamie Winsor <jamie@vialstudios.com>
|
2
|
+
# Copyright:: Copyright (c) 2012 Jamie Winsor
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
# this file is derived f
|
18
|
+
|
19
|
+
require 'thor'
|
20
|
+
require 'whisk'
|
21
|
+
require 'whisk/whiskfile'
|
22
|
+
|
23
|
+
def filter_bowls(bowls, bowl=nil, ingredient=nil)
|
24
|
+
if bowl
|
25
|
+
bowls.delete_if {|k,v| !k.to_s.match(/^#{bowl}$/)}
|
26
|
+
if ingredient
|
27
|
+
bowls.each do |name, b|
|
28
|
+
bowls[name].ingredients.delete_if {|k,v| !k.to_s.match(/^#{ingredient}$/)}
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
return bowls
|
34
|
+
end
|
35
|
+
|
36
|
+
class Whisk
|
37
|
+
class CLI < Thor
|
38
|
+
def initialize(*)
|
39
|
+
super
|
40
|
+
# JW TODO: Replace Chef::Knife::UI with our own UI class
|
41
|
+
::Whisk.ui = Chef::Knife::UI.new(STDOUT, STDERR, STDIN, {})
|
42
|
+
@options = options.dup # unfreeze frozen options Hash from Thor
|
43
|
+
rescue Error => e
|
44
|
+
Whisk.ui.fatal e
|
45
|
+
exit e.status_code
|
46
|
+
end
|
47
|
+
|
48
|
+
namespace "whisk"
|
49
|
+
|
50
|
+
method_option :whiskfile,
|
51
|
+
type: :string,
|
52
|
+
default: File.join(Dir.pwd, Whisk::DEFAULT_FILENAME),
|
53
|
+
desc: "Path to a Whiskfile to operate off of.",
|
54
|
+
aliases: "-w",
|
55
|
+
banner: "PATH"
|
56
|
+
desc "prepare", "prepare a bowl by cloning any missing repositories"
|
57
|
+
def prepare(bowl=nil, ingredient=nil)
|
58
|
+
whiskfile = ::Whisk::WhiskFile.from_file(options[:whiskfile])
|
59
|
+
bowls = filter_bowls(whiskfile.bowls, bowl, ingredient)
|
60
|
+
|
61
|
+
bowls.each do |name, bowl|
|
62
|
+
bowl.prepare
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
method_option :whiskfile,
|
67
|
+
type: :string,
|
68
|
+
default: File.join(Dir.pwd, Whisk::DEFAULT_FILENAME),
|
69
|
+
desc: "Path to a Whiskfile to operate off of.",
|
70
|
+
aliases: "-w",
|
71
|
+
banner: "PATH"
|
72
|
+
desc "prepare", "prepare a bowl by cloning any missing repositories"
|
73
|
+
def status(bowl=nil, ingredient=nil)
|
74
|
+
whiskfile = ::Whisk::WhiskFile.from_file(options[:whiskfile])
|
75
|
+
bowls = filter_bowls(whiskfile.bowls, bowl, ingredient)
|
76
|
+
bowls.each do |name, bowl|
|
77
|
+
bowl.status
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
method_option :whiskfile,
|
82
|
+
type: :string,
|
83
|
+
default: File.join(Dir.pwd, Whisk::DEFAULT_FILENAME),
|
84
|
+
desc: "Path to a Whiskfile to operate off of.",
|
85
|
+
aliases: "-w",
|
86
|
+
banner: "PATH"
|
87
|
+
desc "prepare", "prepare a bowl by cloning any missing repositories"
|
88
|
+
def update(bowl=nil, ingredient=nil)
|
89
|
+
whiskfile = ::Whisk::WhiskFile.from_file(options[:whiskfile])
|
90
|
+
bowls = filter_bowls(whiskfile.bowls, bowl, ingredient)
|
91
|
+
bowls.each do |name, bowl|
|
92
|
+
bowl.update
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
data/lib/whisk/flavour/git.rb
CHANGED
@@ -16,7 +16,6 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
18
|
require 'whisk/mixin/shellout'
|
19
|
-
require 'whisk/log'
|
20
19
|
require 'whisk/ingredient'
|
21
20
|
|
22
21
|
class Whisk
|
@@ -26,41 +25,38 @@ class Whisk
|
|
26
25
|
include Whisk::Mixin::ShellOut
|
27
26
|
|
28
27
|
def clone
|
29
|
-
|
30
|
-
Whisk
|
28
|
+
if ::File.exists? File.join(Dir.pwd, name, ".git", "config")
|
29
|
+
Whisk.ui.info "Ingredient #{self.name} already prepared, moving on"
|
30
|
+
else
|
31
|
+
Whisk.ui.info "Cloning ingredient #{self.name}, " + "from git url #{self.source}"
|
31
32
|
shell_out("git clone #{self.source} #{self.name}")
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
35
36
|
def checkout(ref="master")
|
36
|
-
|
37
|
+
if self.options and self.options.has_key? :ref
|
38
|
+
Whisk.ui.info "Checking out ref '#{ref}' for ingredient #{self.name}"
|
37
39
|
shell_out("git checkout #{ref}", :cwd => self.name)
|
38
|
-
|
39
|
-
|
40
|
-
def post_fetch
|
41
|
-
end
|
42
|
-
def pre_fetch
|
43
|
-
end
|
44
|
-
|
45
|
-
def fetch
|
46
|
-
Whisk::Log.info "fetching ingredient '#{self.name}', from git url #{self.source}"
|
47
|
-
shell_out("git fetch --all")
|
40
|
+
end
|
48
41
|
end
|
49
42
|
|
50
43
|
def prepare
|
51
44
|
begin
|
52
45
|
self.clone
|
53
|
-
self.
|
54
|
-
if self.options and self.options.has_key? :ref
|
55
|
-
self.checkout self.options[:ref]
|
56
|
-
else
|
57
|
-
self.checkout
|
58
|
-
end
|
46
|
+
self.checkout
|
59
47
|
rescue Exception => e
|
60
|
-
Whisk
|
48
|
+
Whisk.ui.error "#{e.message} #{e.backtrace}"
|
61
49
|
raise
|
62
50
|
end
|
63
51
|
end
|
52
|
+
|
53
|
+
def status
|
54
|
+
shell_out("git status", :cwd => self.name)
|
55
|
+
end
|
56
|
+
|
57
|
+
def update
|
58
|
+
shell_out("git remote update", :cwd => self.name)
|
59
|
+
end
|
64
60
|
end
|
65
61
|
end
|
66
62
|
end
|
data/lib/whisk/ingredient.rb
CHANGED
@@ -15,24 +15,37 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
+
require 'chef/mixin/params_validate'
|
18
19
|
require 'whisk/flavours'
|
19
20
|
|
20
21
|
class Whisk
|
21
22
|
class Ingredient
|
22
23
|
|
23
|
-
|
24
|
+
include Chef::Mixin::ParamsValidate
|
24
25
|
|
25
|
-
|
26
|
+
attr_reader :name
|
27
|
+
|
28
|
+
def initialize(name, &block)
|
26
29
|
@name = name
|
27
|
-
@
|
28
|
-
@
|
29
|
-
@options =
|
30
|
+
@flavour = 'git'
|
31
|
+
@source = nil
|
32
|
+
@options = {}
|
30
33
|
|
31
|
-
if
|
32
|
-
raise ArgumentError, "must provide source for Ingredient #{name}"
|
33
|
-
end
|
34
|
+
instance_eval(&block) if block_given?
|
34
35
|
|
35
36
|
self.class.send(:include, Whisk::FLAVOURS[@flavour])
|
36
37
|
end
|
38
|
+
|
39
|
+
def source(arg=nil)
|
40
|
+
set_or_return(:source, arg, :required => true)
|
41
|
+
end
|
42
|
+
|
43
|
+
def flavour(arg=nil)
|
44
|
+
set_or_return(:flavour, arg, :default => 'git')
|
45
|
+
end
|
46
|
+
|
47
|
+
def options(arg=nil)
|
48
|
+
set_or_return(:options, arg, :default => {})
|
49
|
+
end
|
37
50
|
end
|
38
51
|
end
|
data/lib/whisk/version.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#
|
2
|
+
#
|
2
3
|
# Author:: Adam Jacob (<adam@opscode.com>)
|
3
4
|
# Author:: Mathieu Sauve-Frankel <msf@kisoku.net>
|
4
5
|
# Copyright:: Copyright (c) 2008 Opscode, Inc.
|
@@ -18,38 +19,41 @@
|
|
18
19
|
# limitations under the License.
|
19
20
|
#
|
20
21
|
# from_file is derived from chef/chef/lib/chef/mixin/from_file.rb
|
22
|
+
#
|
23
|
+
#
|
21
24
|
|
22
|
-
require 'whisk
|
25
|
+
require 'whisk'
|
23
26
|
|
24
27
|
class Whisk
|
25
|
-
class
|
26
|
-
attr_accessor :bowls
|
27
|
-
|
28
|
+
class WhiskFile
|
28
29
|
@@bowls = {}
|
29
30
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
31
|
+
class << self
|
32
|
+
def add_bowl(bowl)
|
33
|
+
if @@bowls.has_key? name
|
34
|
+
raise ArgumentError "bowl #{name} already exists"
|
35
|
+
else
|
36
|
+
@@bowls[bowl.name] = bowl
|
37
|
+
end
|
38
|
+
end
|
37
39
|
|
38
|
-
|
39
|
-
if self.bowls.has_key? name
|
40
|
-
raise ArgumentError "bowl #{name} already exists"
|
41
|
-
else
|
40
|
+
def bowl(name, &block)
|
42
41
|
b = Whisk::Bowl.new(name)
|
43
42
|
b.instance_eval(&block)
|
44
|
-
|
43
|
+
add_bowl(b)
|
44
|
+
end
|
45
|
+
|
46
|
+
def bowls
|
47
|
+
@@bowls
|
45
48
|
end
|
46
|
-
end
|
47
49
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
50
|
+
def from_file(filename)
|
51
|
+
if ::File.exists?(filename) && ::File.readable?(filename)
|
52
|
+
instance_eval(::IO.read(filename), filename, 1)
|
53
|
+
self
|
54
|
+
else
|
55
|
+
raise IOError, "Cannot open or read #{filename}!"
|
56
|
+
end
|
53
57
|
end
|
54
58
|
end
|
55
59
|
end
|
data/lib/whisk.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: whisk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,27 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-08-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: chef
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
14
30
|
- !ruby/object:Gem::Dependency
|
15
31
|
name: mixlib-log
|
16
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
17
33
|
none: false
|
18
34
|
requirements:
|
19
35
|
- - ! '>='
|
@@ -21,10 +37,15 @@ dependencies:
|
|
21
37
|
version: 1.3.0
|
22
38
|
type: :runtime
|
23
39
|
prerelease: false
|
24
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.3.0
|
25
46
|
- !ruby/object:Gem::Dependency
|
26
47
|
name: mixlib-shellout
|
27
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
28
49
|
none: false
|
29
50
|
requirements:
|
30
51
|
- - ! '>='
|
@@ -32,10 +53,31 @@ dependencies:
|
|
32
53
|
version: 1.0.0
|
33
54
|
type: :runtime
|
34
55
|
prerelease: false
|
35
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.0.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: thor
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
36
78
|
- !ruby/object:Gem::Dependency
|
37
79
|
name: rspec
|
38
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
39
81
|
none: false
|
40
82
|
requirements:
|
41
83
|
- - ! '>='
|
@@ -43,7 +85,12 @@ dependencies:
|
|
43
85
|
version: '0'
|
44
86
|
type: :development
|
45
87
|
prerelease: false
|
46
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
47
94
|
description: A simple Chef cookbook dependency manager
|
48
95
|
email: msf@kisoku.net
|
49
96
|
executables:
|
@@ -53,15 +100,15 @@ extra_rdoc_files: []
|
|
53
100
|
files:
|
54
101
|
- LICENSE
|
55
102
|
- README.md
|
103
|
+
- lib/whisk.rb
|
104
|
+
- lib/whisk/mixin/shellout.rb
|
105
|
+
- lib/whisk/cli.rb
|
106
|
+
- lib/whisk/flavours.rb
|
107
|
+
- lib/whisk/whiskfile.rb
|
108
|
+
- lib/whisk/ingredient.rb
|
56
109
|
- lib/whisk/version.rb
|
57
110
|
- lib/whisk/bowl.rb
|
58
|
-
- lib/whisk/ingredient.rb
|
59
|
-
- lib/whisk/mixin/shellout.rb
|
60
111
|
- lib/whisk/flavour/git.rb
|
61
|
-
- lib/whisk/flavours.rb
|
62
|
-
- lib/whisk/config.rb
|
63
|
-
- lib/whisk/log.rb
|
64
|
-
- lib/whisk.rb
|
65
112
|
- bin/whisk
|
66
113
|
homepage: http://github.com/kisoku/whisk
|
67
114
|
licenses: []
|
@@ -83,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
130
|
version: '0'
|
84
131
|
requirements: []
|
85
132
|
rubyforge_project:
|
86
|
-
rubygems_version: 1.8.
|
133
|
+
rubygems_version: 1.8.24
|
87
134
|
signing_key:
|
88
135
|
specification_version: 3
|
89
136
|
summary: A simple Chef cookbook dependency manager
|
data/lib/whisk/log.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Adam Jacob (<adam@opscode.com>)
|
3
|
-
# Author:: AJ Christensen (<@aj@opscode.com>)
|
4
|
-
# Author:: Christopher Brown (<cb@opscode.com>)
|
5
|
-
# Copyright:: Copyright (c) 2008 Opscode, Inc.
|
6
|
-
# License:: Apache License, Version 2.0
|
7
|
-
#
|
8
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
-
# you may not use this file except in compliance with the License.
|
10
|
-
# You may obtain a copy of the License at
|
11
|
-
#
|
12
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
-
#
|
14
|
-
# Unless required by applicable law or agreed to in writing, software
|
15
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
-
# See the License for the specific language governing permissions and
|
18
|
-
# limitations under the License.
|
19
|
-
#
|
20
|
-
# this file is derived from chef/chef/lib/chef/log.rb
|
21
|
-
|
22
|
-
require 'logger'
|
23
|
-
require 'mixlib/log'
|
24
|
-
|
25
|
-
class Whisk
|
26
|
-
class Log
|
27
|
-
extend Mixlib::Log
|
28
|
-
|
29
|
-
init
|
30
|
-
|
31
|
-
class Formatter
|
32
|
-
def self.show_time=(*args)
|
33
|
-
Mixlib::Log::Formatter.show_time = *args
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|