garcun 0.0.3 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2827b045552795cc5a3934823fc34bc6d7c3b1bf
4
- data.tar.gz: bf3026b6fdd4ca118e727db751c39f256a66dcae
3
+ metadata.gz: 091b57cc6a987848fc8f7e9497367c90f3b3e141
4
+ data.tar.gz: cc6405bab9133f36b7c26f27d20711c2d3ecf667
5
5
  SHA512:
6
- metadata.gz: 3858d4a7601ff6afbc09a4a6c1765bad36cccf0c6c9b0ed39e52c098fcf4fceb465172dd49ce54c0249bdce98ff8877fbe4215a971337690fd9b2fe27c7e44f4
7
- data.tar.gz: 0bfd59282111449b3c6dfffff1fb696b9711f2f30bb16c5759a4bcd0ab23a77788f9b3350feed5ba675bb80d9492ecdb9b60692ba5ac5aee6ce74070a93dd944
6
+ metadata.gz: a72ae5eb6840593c0ade85fe6f18a2d394adc6c479a58f7e194d95647fb349dc317cc9316f8b3c65c97b6606f242f985d2a045ec519bb69981bef35f35b3b81a
7
+ data.tar.gz: 2020ed1a932abb9cccdefa20ae85fd95080663edf5516e53d177ecfaf4852479896d86958aeb98bf1090559c1b5e516969ba4c922c1636149132896078737029
@@ -69,7 +69,9 @@ module Garcon
69
69
  def find_by(type, filter, single = true, &block)
70
70
  nodes = []
71
71
  env = node.chef_environment
72
- if node.public_send(Inflections.pluralize(type.to_s)).include? filter
72
+ type = Inflections.pluralize(type.to_s)
73
+
74
+ if node.public_send(type).include? filter
73
75
  nodes << node
74
76
  end
75
77
  if !single || nodes.empty?
@@ -81,7 +83,7 @@ module Garcon
81
83
  if block_given?
82
84
  nodes.each { |n| yield n }
83
85
  else
84
- single ? nodes.first : nodes
86
+ single ? [nodes.first] : nodes
85
87
  end
86
88
  end
87
89
 
@@ -310,15 +312,31 @@ module Garcon
310
312
  # Boolean method to check if a command line utility is installed.
311
313
  #
312
314
  # @param [String] cmd
313
- # the command to find
315
+ # The command to find.
314
316
  #
315
317
  # @return [TrueClass, FalseClass]
316
- # true if the command is found in the path, false otherwise
318
+ # true if the command is found in the path.
317
319
  #
318
320
  def installed?(cmd)
319
321
  !Garcon::FileHelper.which(cmd).nil?
320
322
  end
321
323
 
324
+ # Boolean method to check if a package is installed.
325
+ #
326
+ # @param [String] pkg
327
+ # The package to check for.
328
+ #
329
+ # @return [TrueClass, FalseClass]
330
+ # True if the package is found in the path.
331
+ #
332
+ def pkg_installed?(pkg)
333
+ if node.platform_family == 'debian'
334
+ shell_out("dpkg -l #{pkg}").exitstatus == 0 ? true : false
335
+ elsif node.platform_family == 'rhel'
336
+ shell_out("rpm -qa | grep #{pkg}").exitstatus == 0 ? true : false
337
+ end
338
+ end
339
+
322
340
  # @return [String] object inspection
323
341
  # @api public
324
342
  def inspect
@@ -35,26 +35,27 @@ class Chef
35
35
  # Attributes
36
36
  attribute :name,
37
37
  kind_of: String
38
+ attribute :local,
39
+ kind_of: [String],
40
+ default: 'en_US.UTF-8'
38
41
  attribute :iptables,
39
42
  kind_of: [TrueClass, FalseClass],
40
- default: true
43
+ default: lazy { node[:garcon][:civilize][:iptables] }
41
44
  attribute :selinux,
42
45
  kind_of: [TrueClass, FalseClass],
43
- default: true
46
+ default: lazy { node[:garcon][:civilize][:selinux] }
44
47
  attribute :dotfiles,
45
48
  kind_of: [TrueClass, FalseClass, String, Array],
46
- default: true
49
+ default: lazy { node[:garcon][:civilize][:dotfiles] }
47
50
  attribute :ruby,
48
51
  kind_of: [TrueClass, FalseClass],
49
- default: true
52
+ default: lazy { node[:garcon][:civilize][:ruby] }
50
53
  attribute :docker,
51
54
  kind_of: Array,
52
- default: %w[tar htop initscripts]
55
+ default: lazy { node[:garcon][:civilize][:docker] }
53
56
  attribute :rhel_svcs,
54
57
  kind_of: Array,
55
- default: %w[
56
- autofs avahi-daemon bluetooth cpuspeed cups gpm haldaemon messagebus
57
- ]
58
+ default: lazy { node[:garcon][:civilize][:rhel_svcs] }
58
59
  end
59
60
  end
60
61
 
@@ -86,16 +87,61 @@ class Chef
86
87
  end
87
88
 
88
89
  def action_run
89
- civilize_docker if docker? && r.docker
90
- rhel_services if r.rhel_svcs
91
- iptables if !docker? && r.iptables
92
- selinux if selinux? && r.selinux
90
+ civilize_platform
91
+ civilize_locale
92
+ civilize_docker if docker? && r.docker
93
+ rhel_services if r.rhel_svcs
94
+ iptables if !docker? && r.iptables
95
+ selinux if selinux? && r.selinux
93
96
  ps1prompt
94
- dotfiles if r.dotfiles
97
+ dotfiles if r.dotfiles
95
98
  end
96
99
 
97
100
  private # P R O P R I E T À P R I V A T A Vietato L'accesso
98
101
 
102
+ def omnibus_updater
103
+ node.default[:omnibus_updater][:restart_chef_service] = true
104
+ node.default[:omnibus_updater][:force_latest] = false
105
+ end
106
+
107
+ def civilize_locale
108
+ case node[:platform_family]
109
+ when 'debian'
110
+ e = Chef::Resource::Execute.new('Set locale', run_context)
111
+ e.command "/usr/sbin/update-locale LANG=#{r.local}"
112
+ e.not_if { docker? }
113
+ e.action :run
114
+ when 'rhel'
115
+ t ||= Chef::Resource::Template.new('/etc/sysconfig/i18n', run_context)
116
+ t.cookbook 'garcon'
117
+ t.owner 'root'
118
+ t.group 'root'
119
+ t.mode 00644
120
+ t.variables local: r.local
121
+ e.not_if { docker? }
122
+ t.run_action :create
123
+ end
124
+ end
125
+
126
+ def civilize_platform
127
+ case node[:platform]
128
+ when 'debian', 'ubuntu'
129
+ run_context.include_recipe 'apt::default'
130
+ run_context.include_recipe 'motd-tail::default'
131
+ m = Chef::Resource::MotdTail.new('/etc/motd.tail', run_context)
132
+ m.template_source 'motd.erb'
133
+ m.action :create
134
+ when 'fedora'
135
+ run_context.include_recipe 'yum-fedora::default'
136
+ when 'centos'
137
+ run_context.include_recipe 'yum-epel::default'
138
+ run_context.include_recipe 'yum-centos::default'
139
+ when 'amazon'
140
+ run_context.include_recipe 'yum-epel::default'
141
+ run_context.include_recipe 'yum-amazon::default'
142
+ end
143
+ end
144
+
99
145
  def civilize_docker
100
146
  r.docker.each { |pkg| package pkg }
101
147
  end
@@ -57,7 +57,7 @@ class Chef
57
57
 
58
58
  # Load and return the current resource.
59
59
  #
60
- # @return [Chef::Provider::Civilize]
60
+ # @return [Chef::Provider:Development]
61
61
  #
62
62
  # @api private
63
63
  def load_current_resource
@@ -76,7 +76,7 @@ class Chef
76
76
  private # P R O P R I E T À P R I V A T A Vietato L'accesso
77
77
 
78
78
  def chef_handler
79
- include_recipe 'chef_handler::default'
79
+ run_context.include_recipe 'chef_handler::default'
80
80
 
81
81
  file = ::File.join(node[:chef_handler][:handler_path], 'devreporter.rb')
82
82
  f ||= Chef::Resource::CookbookFile.new(file, run_context)
@@ -110,8 +110,8 @@ end
110
110
  # @api private.
111
111
  Chef::Platform.set(
112
112
  platform: :amazon,
113
- resource: :civilize,
114
- provider: Chef::Provider::Civilize
113
+ resource: :development,
114
+ provider: Chef::Provider::Development
115
115
  )
116
116
 
117
117
  # Chef::Platform mapping for resource and providers
@@ -121,8 +121,8 @@ Chef::Platform.set(
121
121
  # @api private.
122
122
  Chef::Platform.set(
123
123
  platform: :centos,
124
- resource: :civilize,
125
- provider: Chef::Provider::Civilize
124
+ resource: :development,
125
+ provider: Chef::Provider::Development
126
126
  )
127
127
 
128
128
  # Chef::Platform mapping for resource and providers
@@ -132,8 +132,8 @@ Chef::Platform.set(
132
132
  # @api private.
133
133
  Chef::Platform.set(
134
134
  platform: :oracle,
135
- resource: :civilize,
136
- provider: Chef::Provider::Civilize
135
+ resource: :development,
136
+ provider: Chef::Provider::Development
137
137
  )
138
138
 
139
139
  # Chef::Platform mapping for resource and providers
@@ -143,8 +143,8 @@ Chef::Platform.set(
143
143
  # @api private.
144
144
  Chef::Platform.set(
145
145
  platform: :redhat,
146
- resource: :civilize,
147
- provider: Chef::Provider::Civilize
146
+ resource: :development,
147
+ provider: Chef::Provider::Development
148
148
  )
149
149
 
150
150
  # Chef::Platform mapping for resource and providers
@@ -154,6 +154,6 @@ Chef::Platform.set(
154
154
  # @api private.
155
155
  Chef::Platform.set(
156
156
  platform: :scientific,
157
- resource: :civilize,
158
- provider: Chef::Provider::Civilize
157
+ resource: :development,
158
+ provider: Chef::Provider::Development
159
159
  )
@@ -302,8 +302,10 @@ class Chef
302
302
  end
303
303
 
304
304
  def handle_prerequisites
305
- package 'gnutls', :install
306
- yumrepo(:create) if node.platform_family == 'rhel'
305
+ if node.platform_family == 'rhel'
306
+ package 'gnutls', :install
307
+ yumrepo(:create)
308
+ end
307
309
  package 'aria2', :install
308
310
  wipe_repo if node.platform_family == 'rhel'
309
311
  end
@@ -317,9 +319,9 @@ class Chef
317
319
 
318
320
  def yumrepo(action = :nothing)
319
321
  y = Chef::Resource::YumRepository.new('garcon', run_context)
320
- y.mirrorlist node[:garcon][:repo][:mirrorlist]
321
- y.gpgcheck node[:garcon][:repo][:gpgcheck]
322
- y.gpgkey node[:garcon][:repo][:gpgkey]
322
+ y.mirrorlist Repos.mirrorlist
323
+ y.gpgkey Repos.gpgkey
324
+ y.gpgcheck true
323
325
  y.run_action action
324
326
  end
325
327
 
@@ -75,7 +75,7 @@ class Chef
75
75
 
76
76
  def initialize(new_resource, run_context)
77
77
  super
78
- require_zip unless defined?(Zip)
78
+ __zip__ unless defined?(Zip)
79
79
  end
80
80
 
81
81
  # Shortcut to new_resource.
@@ -137,7 +137,7 @@ class Chef
137
137
  r.updated_by_last_action(true)
138
138
  end
139
139
  else
140
- Chef::Log.info 'a valid directory must be specified for ziping'
140
+ Chef::Log.warn 'A valid directory must be specified for ziping.'
141
141
  end
142
142
  end
143
143
  end
@@ -170,17 +170,13 @@ class Chef
170
170
  # @return [undefined]
171
171
  #
172
172
  # @api private
173
- def require_zip
174
- require 'zip'
173
+ def __zip__
174
+ require 'zip' unless defined?(Zip)
175
175
  rescue LoadError
176
- gem_rubyzip
177
- require 'zip'
178
- end
179
-
180
- def gem_rubyzip
181
- g ||= Chef::Resource::ChefGem.new('rubyzip', run_context)
176
+ g = Chef::Resource::ChefGem.new('zip', run_context)
182
177
  g.compile_time(false) if respond_to?(:compile_time)
183
- g.run_action :install
178
+ g.run_action(:install)
179
+ require 'zip'
184
180
  end
185
181
 
186
182
  # Cache a file locally in Chef::Config[:file_cache_path].
@@ -132,14 +132,13 @@ class Time
132
132
  # t.shift(:days=>4, :hours=>3) # => Time.utc(2010,10,14,3,0,0)
133
133
  #
134
134
  def shift(*time_units)
135
- time_hash = Hash===time_units.last ? time_units.pop : {}
136
- time_units = time_units.flatten
135
+ time_hash = Hash===time_units.last ? time_units.pop : {}
136
+ time_units = time_units.flatten
137
137
  time_units << :seconds if time_units.size % 2 == 1
138
- time_hash.each{ |units, number| time_units << number; time_units << units }
138
+ time_hash.each { |units, number| time_units << number; time_units << units }
139
139
 
140
140
  time = self
141
141
  time_units.each_slice(2) do |number, units|
142
- #next time = time.ago(-number, units) if number < 0
143
142
  time = (
144
143
  case units.to_s.downcase.to_sym
145
144
  when :years, :year
@@ -39,6 +39,14 @@ module Garcon
39
39
  end
40
40
  end
41
41
 
42
+ # Hook called when module is included, extends a descendant with class
43
+ # and instance methods.
44
+ #
45
+ # @param [Module] descendant
46
+ # the module or class including Garcon::Resource::BaseDSL
47
+ #
48
+ # @return [self]
49
+ #
42
50
  def self.included(other)
43
51
  other.extend(ClassMethods)
44
52
  end
@@ -27,7 +27,7 @@ module Garcon
27
27
  module Version
28
28
  MAJOR = 0
29
29
  MINOR = 0
30
- PATCH = 3
30
+ PATCH = 4
31
31
 
32
32
  # Returns a version string by joining MAJOR, MINOR, and PATCH with '.'
33
33
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: garcun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Harding
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-10 00:00:00.000000000 Z
11
+ date: 2015-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chef