wright 0.4.4 → 0.5.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.
- 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] ||=
|