wright 0.4.4 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +10 -3
- data/NEWS.md +8 -0
- data/README.md +9 -16
- data/lib/wright/cli.rb +25 -24
- data/lib/wright/config.rb +5 -3
- data/lib/wright/dsl.rb +52 -9
- data/lib/wright/logger.rb +1 -1
- data/lib/wright/provider.rb +8 -5
- data/lib/wright/provider/directory.rb +2 -2
- data/lib/wright/provider/file.rb +4 -4
- data/lib/wright/provider/group.rb +4 -4
- data/lib/wright/provider/package.rb +3 -3
- data/lib/wright/provider/package/apt.rb +1 -1
- data/lib/wright/provider/package/yum.rb +1 -1
- data/lib/wright/provider/symlink.rb +2 -2
- data/lib/wright/provider/user.rb +8 -8
- data/lib/wright/resource.rb +21 -19
- data/lib/wright/resource/directory.rb +21 -10
- data/lib/wright/resource/file.rb +25 -14
- data/lib/wright/resource/group.rb +16 -9
- data/lib/wright/resource/package.rb +14 -9
- data/lib/wright/resource/symlink.rb +10 -8
- data/lib/wright/resource/user.rb +30 -9
- data/lib/wright/util.rb +14 -2
- data/lib/wright/util/erb_renderer.rb +29 -0
- data/lib/wright/util/file.rb +1 -1
- data/lib/wright/util/file_owner.rb +8 -3
- data/lib/wright/util/file_permissions.rb +14 -12
- data/lib/wright/util/file_renderer.rb +50 -0
- data/lib/wright/util/mustache_renderer.rb +41 -0
- data/lib/wright/util/pencil_mustache.rb +58 -0
- data/lib/wright/version.rb +1 -1
- data/man/wright.1 +10 -11
- data/spec/dsl_spec.rb +72 -7
- data/spec/provider/package/apt/{apt-get_--purge_remove_-qy_abcde.return → apt-get_-qy_--purge_remove_abcde.return} +0 -0
- data/spec/provider/package/apt/{apt-get_--purge_remove_-qy_abcde.stderr → apt-get_-qy_--purge_remove_abcde.stderr} +0 -0
- data/spec/provider/package/apt/{apt-get_--purge_remove_-qy_abcde.stdout → apt-get_-qy_--purge_remove_abcde.stdout} +0 -0
- data/spec/provider/package/apt/{apt-get_install_-qy_abcde=2.5.4-1.return → apt-get_-qy_install_abcde=2.5.4-1.return} +0 -0
- data/spec/provider/package/apt/{apt-get_install_-qy_abcde=2.5.4-1.stderr → apt-get_-qy_install_abcde=2.5.4-1.stderr} +0 -0
- data/spec/provider/package/apt/{apt-get_install_-qy_abcde=2.5.4-1.stdout → apt-get_-qy_install_abcde=2.5.4-1.stdout} +0 -0
- data/spec/provider/package/apt/{apt-get_install_-qy_htop.return → apt-get_-qy_install_htop.return} +0 -0
- data/spec/provider/package/apt/{apt-get_install_-qy_htop.stderr → apt-get_-qy_install_htop.stderr} +0 -0
- data/spec/provider/package/apt/{apt-get_install_-qy_htop.stdout → apt-get_-qy_install_htop.stdout} +0 -0
- data/spec/provider/package/apt/{apt-get_install_-qy_not-a-real-package.return → apt-get_-qy_install_not-a-real-package.return} +0 -0
- data/spec/provider/package/apt/{apt-get_install_-qy_not-a-real-package.stderr → apt-get_-qy_install_not-a-real-package.stderr} +0 -0
- data/spec/provider/package/apt/{apt-get_install_-qy_not-a-real-package.stdout → apt-get_-qy_install_not-a-real-package.stdout} +0 -0
- data/spec/provider/package/apt/{apt-get_remove_-qy_abcde.return → apt-get_-qy_remove_abcde.return} +0 -0
- data/spec/provider/package/apt/{apt-get_remove_-qy_abcde.stderr → apt-get_-qy_remove_abcde.stderr} +0 -0
- data/spec/provider/package/apt/{apt-get_remove_-qy_abcde.stdout → apt-get_-qy_remove_abcde.stdout} +0 -0
- data/spec/provider/package/apt_spec.rb +2 -2
- data/spec/provider/package/yum/{yum_install_-y_mc-4.8.7-8.el7.return → yum_-y_install_mc-4.8.7-8.el7.return} +0 -0
- data/spec/provider/package/yum/{yum_install_-y_mc-4.8.7-8.el7.stderr → yum_-y_install_mc-4.8.7-8.el7.stderr} +0 -0
- data/spec/provider/package/yum/{yum_install_-y_mc-4.8.7-8.el7.stdout → yum_-y_install_mc-4.8.7-8.el7.stdout} +0 -0
- data/spec/provider/package/yum/{yum_install_-y_nano.return → yum_-y_install_nano.return} +0 -0
- data/spec/provider/package/yum/{yum_install_-y_nano.stderr → yum_-y_install_nano.stderr} +0 -0
- data/spec/provider/package/yum/{yum_install_-y_nano.stdout → yum_-y_install_nano.stdout} +0 -0
- data/spec/provider/package/yum/{yum_install_-y_not-a-real-package.return → yum_-y_install_not-a-real-package.return} +0 -0
- data/spec/provider/package/yum/{yum_install_-y_not-a-real-package.stderr → yum_-y_install_not-a-real-package.stderr} +0 -0
- data/spec/provider/package/yum/{yum_install_-y_not-a-real-package.stdout → yum_-y_install_not-a-real-package.stdout} +0 -0
- data/spec/provider/package/yum/{yum_remove_-y_screen.return → yum_-y_remove_screen.return} +0 -0
- data/spec/provider/package/yum/{yum_remove_-y_screen.stderr → yum_-y_remove_screen.stderr} +0 -0
- data/spec/provider/package/yum/{yum_remove_-y_screen.stdout → yum_-y_remove_screen.stdout} +0 -0
- data/spec/provider/package/yum_spec.rb +1 -1
- data/spec/resource/directory_spec.rb +15 -0
- data/spec/resource/file_spec.rb +17 -0
- data/spec/resource/group_spec.rb +15 -0
- data/spec/resource/package_spec.rb +13 -0
- data/spec/resource/symlink_spec.rb +11 -0
- data/spec/resource/user_spec.rb +32 -0
- data/spec/resource_spec.rb +18 -10
- data/spec/spec_helper.rb +1 -0
- data/spec/spec_helpers/fake_capture3.rb +1 -1
- data/spec/util/erb_renderer_spec.rb +23 -0
- data/spec/util/file_owner_spec.rb +19 -0
- data/spec/util/file_renderer_spec.rb +28 -0
- data/spec/util/mustache_renderer_spec.rb +57 -0
- data/spec/util/pencil_mustache_spec.rb +15 -0
- data/spec/util_spec.rb +17 -3
- metadata +90 -64
@@ -47,15 +47,15 @@ module Wright
|
|
47
47
|
private
|
48
48
|
|
49
49
|
def package_name
|
50
|
-
|
50
|
+
resource.name
|
51
51
|
end
|
52
52
|
|
53
53
|
def package_version
|
54
|
-
|
54
|
+
resource.version
|
55
55
|
end
|
56
56
|
|
57
57
|
def package_options
|
58
|
-
|
58
|
+
resource.options
|
59
59
|
end
|
60
60
|
|
61
61
|
# @api public
|
@@ -34,7 +34,7 @@ module Wright
|
|
34
34
|
def apt_get(action, options, package, version = nil)
|
35
35
|
package_version = version.nil? ? '' : "=#{version}"
|
36
36
|
cmd = 'apt-get'
|
37
|
-
args = [*options, action.to_s,
|
37
|
+
args = ['-qy', *options, action.to_s, package + package_version]
|
38
38
|
exec_or_fail(cmd, args, "cannot #{action} package '#{package}'")
|
39
39
|
end
|
40
40
|
|
@@ -30,7 +30,7 @@ module Wright
|
|
30
30
|
def yum(action, options, package, version = nil)
|
31
31
|
cmd = 'yum'
|
32
32
|
package_version = version.nil? ? '' : "-#{version}"
|
33
|
-
args = [*options, action.to_s,
|
33
|
+
args = ['-y', *options, action.to_s, package + package_version]
|
34
34
|
exec_or_fail(cmd, args, "cannot #{action} package '#{package}'")
|
35
35
|
end
|
36
36
|
end
|
data/lib/wright/provider/user.rb
CHANGED
@@ -36,35 +36,35 @@ module Wright
|
|
36
36
|
private
|
37
37
|
|
38
38
|
def user_name
|
39
|
-
|
39
|
+
resource.name
|
40
40
|
end
|
41
41
|
|
42
42
|
def uid
|
43
|
-
|
43
|
+
resource.uid
|
44
44
|
end
|
45
45
|
|
46
46
|
def primary_group
|
47
|
-
|
47
|
+
resource.primary_group
|
48
48
|
end
|
49
49
|
|
50
50
|
def full_name
|
51
|
-
|
51
|
+
resource.full_name
|
52
52
|
end
|
53
53
|
|
54
54
|
def groups
|
55
|
-
|
55
|
+
resource.groups
|
56
56
|
end
|
57
57
|
|
58
58
|
def shell
|
59
|
-
|
59
|
+
resource.shell
|
60
60
|
end
|
61
61
|
|
62
62
|
def home
|
63
|
-
|
63
|
+
resource.home
|
64
64
|
end
|
65
65
|
|
66
66
|
def system_user?
|
67
|
-
|
67
|
+
resource.system
|
68
68
|
end
|
69
69
|
|
70
70
|
# @api public
|
data/lib/wright/resource.rb
CHANGED
@@ -9,13 +9,13 @@ module Wright
|
|
9
9
|
# Initializes a Resource.
|
10
10
|
#
|
11
11
|
# @param name [String] the name of the resource
|
12
|
-
def initialize(name = nil)
|
13
|
-
@name
|
14
|
-
@
|
15
|
-
@
|
16
|
-
|
17
|
-
@
|
18
|
-
@
|
12
|
+
def initialize(name = nil, args = {})
|
13
|
+
@name = name
|
14
|
+
@action = args.fetch(:action, nil)
|
15
|
+
@ignore_failure = args.fetch(:ignore_failure, false)
|
16
|
+
self.on_update = args.fetch(:on_update, nil)
|
17
|
+
@resource_name = Util.class_to_resource_name(self.class).to_sym
|
18
|
+
@provider = provider_for_resource
|
19
19
|
end
|
20
20
|
|
21
21
|
# @return [Symbol] the name of the method to be run by {#run_action}
|
@@ -69,11 +69,13 @@ module Wright
|
|
69
69
|
#
|
70
70
|
# @return the return value of the current action
|
71
71
|
def run_action
|
72
|
-
send
|
72
|
+
send action if action
|
73
73
|
end
|
74
74
|
|
75
75
|
private
|
76
76
|
|
77
|
+
attr_reader :on_update, :provider
|
78
|
+
|
77
79
|
# @api public
|
78
80
|
# Marks a code block that might update a resource.
|
79
81
|
#
|
@@ -92,7 +94,7 @@ module Wright
|
|
92
94
|
#
|
93
95
|
# class Balloon < Wright::Resource
|
94
96
|
# def inflate
|
95
|
-
# might_update_resource {
|
97
|
+
# might_update_resource { provider.inflate }
|
96
98
|
# end
|
97
99
|
# end
|
98
100
|
# Wright::Config[:resources] = { balloon: { provider: 'BalloonAnimal' } }
|
@@ -107,39 +109,39 @@ module Wright
|
|
107
109
|
yield
|
108
110
|
rescue => e
|
109
111
|
log_error(e)
|
110
|
-
raise e unless
|
112
|
+
raise e unless ignore_failure
|
111
113
|
end
|
112
|
-
updated =
|
114
|
+
updated = provider.updated?
|
113
115
|
run_update_action if updated
|
114
116
|
updated
|
115
117
|
end
|
116
118
|
|
117
119
|
def log_error(exception)
|
118
|
-
resource = "#{
|
119
|
-
resource << " '#{
|
120
|
+
resource = "#{resource_name}"
|
121
|
+
resource << " '#{name}'" if name
|
120
122
|
Wright.log.error "#{resource}: #{exception}"
|
121
123
|
end
|
122
124
|
|
123
125
|
def run_update_action
|
124
|
-
return
|
126
|
+
return unless on_update
|
125
127
|
|
126
|
-
resource = "#{
|
128
|
+
resource = "#{resource_name} '#{name}'"
|
127
129
|
notification = "run update action for #{resource}"
|
128
130
|
if Wright.dry_run?
|
129
131
|
Wright.log.info "(would) #{notification}"
|
130
132
|
else
|
131
133
|
Wright.log.info notification
|
132
|
-
|
134
|
+
on_update.call
|
133
135
|
end
|
134
136
|
end
|
135
137
|
|
136
138
|
def resource_class
|
137
|
-
Util::ActiveSupport.camelize(
|
139
|
+
Util::ActiveSupport.camelize(resource_name)
|
138
140
|
end
|
139
141
|
|
140
142
|
def provider_name
|
141
|
-
if Wright::Config.nested_key?(:resources,
|
142
|
-
Wright::Config[:resources][
|
143
|
+
if Wright::Config.nested_key?(:resources, resource_name, :provider)
|
144
|
+
Wright::Config[:resources][resource_name][:provider]
|
143
145
|
else
|
144
146
|
"Wright::Provider::#{resource_class}"
|
145
147
|
end
|
@@ -17,11 +17,18 @@ module Wright
|
|
17
17
|
# Initializes a Directory.
|
18
18
|
#
|
19
19
|
# @param name [String] the directory's name
|
20
|
-
|
20
|
+
# @param args [Hash] the arguments
|
21
|
+
# @option args [Symbol] :action (:create) the action
|
22
|
+
# @option args [String, Integer] :mode the directory's mode
|
23
|
+
# @option args [String, Integer] :owner the directory's owner
|
24
|
+
# @option args [String, Integer] :group the directory's group
|
25
|
+
def initialize(name, args = {})
|
21
26
|
super
|
22
|
-
@
|
23
|
-
@
|
24
|
-
|
27
|
+
@action = args.fetch(:action, :create)
|
28
|
+
@mode = args.fetch(:mode, nil)
|
29
|
+
owner = args.fetch(:owner, nil)
|
30
|
+
group = args.fetch(:group, nil)
|
31
|
+
@dir_owner = Wright::Util::FileOwner.new(owner, group)
|
25
32
|
end
|
26
33
|
|
27
34
|
# @return [String, Integer] the directory's intended mode
|
@@ -31,15 +38,15 @@ module Wright
|
|
31
38
|
# @return [String, Integer] the directory's intended owner
|
32
39
|
# @!method owner=
|
33
40
|
# @see #owner
|
34
|
-
def_delegator
|
35
|
-
def_delegator
|
41
|
+
def_delegator :dir_owner, :user_and_group=, :owner=
|
42
|
+
def_delegator :dir_owner, :user, :owner
|
36
43
|
|
37
44
|
# @!attribute group
|
38
45
|
# @return [String, Integer] the directory's intended group
|
39
46
|
# @!method group=
|
40
47
|
# @see #group
|
41
|
-
def_delegator
|
42
|
-
def_delegator
|
48
|
+
def_delegator :dir_owner, :group
|
49
|
+
def_delegator :dir_owner, :group=
|
43
50
|
|
44
51
|
# Creates or updates the directory.
|
45
52
|
#
|
@@ -47,7 +54,7 @@ module Wright
|
|
47
54
|
# otherwise
|
48
55
|
def create
|
49
56
|
might_update_resource do
|
50
|
-
|
57
|
+
provider.create
|
51
58
|
end
|
52
59
|
end
|
53
60
|
|
@@ -57,9 +64,13 @@ module Wright
|
|
57
64
|
# otherwise
|
58
65
|
def remove
|
59
66
|
might_update_resource do
|
60
|
-
|
67
|
+
provider.remove
|
61
68
|
end
|
62
69
|
end
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
attr_reader :dir_owner
|
63
74
|
end
|
64
75
|
end
|
65
76
|
end
|
data/lib/wright/resource/file.rb
CHANGED
@@ -9,13 +9,12 @@ module Wright
|
|
9
9
|
# Symlink resource, represents a symlink.
|
10
10
|
#
|
11
11
|
# @example
|
12
|
-
# file = Wright::Resource::File.new('/tmp/foo')
|
13
|
-
# file.content = 'bar'
|
12
|
+
# file = Wright::Resource::File.new('/tmp/foo', content: 'bar')
|
14
13
|
# file.create
|
15
14
|
class File < Wright::Resource
|
16
15
|
extend Forwardable
|
17
16
|
|
18
|
-
# @return [String] the file's intended content
|
17
|
+
# @return [String, #to_s] the file's intended content
|
19
18
|
attr_accessor :content
|
20
19
|
|
21
20
|
# @return [String, Integer] the file's intended mode
|
@@ -25,25 +24,33 @@ module Wright
|
|
25
24
|
# @return [String, Integer] the directory's intended owner
|
26
25
|
# @!method owner=
|
27
26
|
# @see #owner
|
28
|
-
def_delegator
|
29
|
-
def_delegator
|
27
|
+
def_delegator :file_owner, :user_and_group=, :owner=
|
28
|
+
def_delegator :file_owner, :user, :owner
|
30
29
|
|
31
30
|
# @!attribute group
|
32
31
|
# @return [String, Integer] the directory's intended group
|
33
32
|
# @!method group=
|
34
33
|
# @see #group
|
35
|
-
def_delegator
|
36
|
-
def_delegator
|
34
|
+
def_delegator :file_owner, :group=
|
35
|
+
def_delegator :file_owner, :group
|
37
36
|
|
38
37
|
# Initializes a File.
|
39
38
|
#
|
40
39
|
# @param name [String] the file's name
|
41
|
-
|
40
|
+
# @param args [Hash] the arguments
|
41
|
+
# @option args [Symbol] :action (:create) the action
|
42
|
+
# @option args [String, #to_s] :content the file's content
|
43
|
+
# @option args [String, Integer] :mode the file's mode
|
44
|
+
# @option args [String, Integer] :owner the file's owner
|
45
|
+
# @option args [String, Integer] :group the file's group
|
46
|
+
def initialize(name, args = {})
|
42
47
|
super
|
43
|
-
@
|
44
|
-
@
|
45
|
-
@
|
46
|
-
|
48
|
+
@action = args.fetch(:action, :create)
|
49
|
+
@content = args.fetch(:content, nil)
|
50
|
+
@mode = args.fetch(:mode, nil)
|
51
|
+
owner = args.fetch(:owner, nil)
|
52
|
+
group = args.fetch(:group, nil)
|
53
|
+
@file_owner = Wright::Util::FileOwner.new(owner, group)
|
47
54
|
end
|
48
55
|
|
49
56
|
# Creates or updates the file.
|
@@ -52,7 +59,7 @@ module Wright
|
|
52
59
|
# otherwise
|
53
60
|
def create
|
54
61
|
might_update_resource do
|
55
|
-
|
62
|
+
provider.create
|
56
63
|
end
|
57
64
|
end
|
58
65
|
|
@@ -62,9 +69,13 @@ module Wright
|
|
62
69
|
# otherwise
|
63
70
|
def remove
|
64
71
|
might_update_resource do
|
65
|
-
|
72
|
+
provider.remove
|
66
73
|
end
|
67
74
|
end
|
75
|
+
|
76
|
+
private
|
77
|
+
|
78
|
+
attr_reader :file_owner
|
68
79
|
end
|
69
80
|
end
|
70
81
|
end
|
@@ -6,8 +6,7 @@ module Wright
|
|
6
6
|
# Group resource, represents a group.
|
7
7
|
#
|
8
8
|
# @example
|
9
|
-
# admins = Wright::Resource::Group.new('admins')
|
10
|
-
# admins.members = ['root']
|
9
|
+
# admins = Wright::Resource::Group.new('admins', members: ['root'])
|
11
10
|
# admins.create
|
12
11
|
# @todo Use GnuPasswd provider on all GNU-flavoured systems
|
13
12
|
class Group < Wright::Resource
|
@@ -24,10 +23,18 @@ module Wright
|
|
24
23
|
# Initializes a Group.
|
25
24
|
#
|
26
25
|
# @param name [String] the group's name
|
27
|
-
|
26
|
+
# @param args [Hash] the arguments
|
27
|
+
# @option args [Symbol] :action (:create) the action
|
28
|
+
# @option args [Array<String>] :members the group's members
|
29
|
+
# @option args [Integer] :gid the group's gid
|
30
|
+
# @option args [Bool] :system (false) denotes whether the group
|
31
|
+
# should be a system group or not
|
32
|
+
def initialize(name, args = {})
|
28
33
|
super
|
29
|
-
@action
|
30
|
-
@
|
34
|
+
@action = args.fetch(:action, :create)
|
35
|
+
@members = args.fetch(:members, nil)
|
36
|
+
@gid = args.fetch(:gid, nil)
|
37
|
+
@system = args.fetch(:system, false)
|
31
38
|
end
|
32
39
|
|
33
40
|
# Creates or updates the group.
|
@@ -36,7 +43,7 @@ module Wright
|
|
36
43
|
# otherwise
|
37
44
|
def create
|
38
45
|
might_update_resource do
|
39
|
-
|
46
|
+
provider.create
|
40
47
|
end
|
41
48
|
end
|
42
49
|
|
@@ -46,7 +53,7 @@ module Wright
|
|
46
53
|
# otherwise
|
47
54
|
def remove
|
48
55
|
might_update_resource do
|
49
|
-
|
56
|
+
provider.remove
|
50
57
|
end
|
51
58
|
end
|
52
59
|
end
|
@@ -57,9 +64,9 @@ Wright::DSL.register_resource(Wright::Resource::Group)
|
|
57
64
|
|
58
65
|
group_providers = {
|
59
66
|
'debian' => 'Wright::Provider::Group::GnuPasswd',
|
60
|
-
'rhel' => 'Wright::Provider::Group::GnuPasswd',
|
61
67
|
'fedora' => 'Wright::Provider::Group::GnuPasswd',
|
62
|
-
'
|
68
|
+
'rhel' => 'Wright::Provider::Group::GnuPasswd',
|
69
|
+
'osx' => 'Wright::Provider::Group::DarwinDirectoryService'
|
63
70
|
}
|
64
71
|
Wright::Config[:resources][:group] ||= {}
|
65
72
|
Wright::Config[:resources][:group][:provider] ||=
|
@@ -34,20 +34,24 @@ module Wright
|
|
34
34
|
# Initializes a Package.
|
35
35
|
#
|
36
36
|
# @param name [String] the package's name
|
37
|
-
|
37
|
+
# @param args [Hash] the arguments
|
38
|
+
# @option args [Symbol] :action (:install) the action
|
39
|
+
# @option args [String, #to_s] :version the package version
|
40
|
+
# @option args [String, Array<String>] :options the package options
|
41
|
+
def initialize(name, args = {})
|
38
42
|
super
|
39
|
-
@
|
40
|
-
@
|
41
|
-
@
|
43
|
+
@action = args.fetch(:action, :install)
|
44
|
+
@version = args.fetch(:version, nil)
|
45
|
+
@options = args.fetch(:options, nil)
|
42
46
|
end
|
43
47
|
|
44
48
|
# @!method installed_versions
|
45
49
|
# @return [Array<String>] the installed package versions
|
46
|
-
def_delegator
|
50
|
+
def_delegator :provider, :installed_versions
|
47
51
|
|
48
52
|
# @!method installed?
|
49
53
|
# @return [Bool] +true+ if the package is installed
|
50
|
-
def_delegator
|
54
|
+
def_delegator :provider, :installed?
|
51
55
|
|
52
56
|
# Installs the Package.
|
53
57
|
#
|
@@ -55,7 +59,7 @@ module Wright
|
|
55
59
|
# otherwise
|
56
60
|
def install
|
57
61
|
might_update_resource do
|
58
|
-
|
62
|
+
provider.install
|
59
63
|
end
|
60
64
|
end
|
61
65
|
|
@@ -65,7 +69,7 @@ module Wright
|
|
65
69
|
# otherwise
|
66
70
|
def remove
|
67
71
|
might_update_resource do
|
68
|
-
|
72
|
+
provider.remove
|
69
73
|
end
|
70
74
|
end
|
71
75
|
|
@@ -78,8 +82,9 @@ Wright::DSL.register_resource(Wright::Resource::Package)
|
|
78
82
|
|
79
83
|
package_providers = {
|
80
84
|
'debian' => 'Wright::Provider::Package::Apt',
|
85
|
+
'fedora' => 'Wright::Provider::Package::Yum',
|
81
86
|
'rhel' => 'Wright::Provider::Package::Yum',
|
82
|
-
'
|
87
|
+
'osx' => 'Wright::Provider::Package::Homebrew'
|
83
88
|
}
|
84
89
|
Wright::Config[:resources][:package] ||= {}
|
85
90
|
Wright::Config[:resources][:package][:provider] ||=
|