garcun 0.0.2

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.
Files changed (139) hide show
  1. checksums.yaml +7 -0
  2. data/.gitattributes +17 -0
  3. data/.gitignore +197 -0
  4. data/.rspec +2 -0
  5. data/Gemfile +22 -0
  6. data/LICENSE +201 -0
  7. data/README.md +521 -0
  8. data/Rakefile +47 -0
  9. data/garcun.gemspec +83 -0
  10. data/lib/garcon.rb +290 -0
  11. data/lib/garcon/chef/chef_helpers.rb +343 -0
  12. data/lib/garcon/chef/coerce/coercer.rb +134 -0
  13. data/lib/garcon/chef/coerce/coercions/boolean_definitions.rb +34 -0
  14. data/lib/garcon/chef/coerce/coercions/date_definitions.rb +32 -0
  15. data/lib/garcon/chef/coerce/coercions/date_time_definitions.rb +32 -0
  16. data/lib/garcon/chef/coerce/coercions/fixnum_definitions.rb +34 -0
  17. data/lib/garcon/chef/coerce/coercions/float_definitions.rb +32 -0
  18. data/lib/garcon/chef/coerce/coercions/hash_definitions.rb +29 -0
  19. data/lib/garcon/chef/coerce/coercions/integer_definitions.rb +31 -0
  20. data/lib/garcon/chef/coerce/coercions/string_definitions.rb +45 -0
  21. data/lib/garcon/chef/coerce/coercions/time_definitions.rb +32 -0
  22. data/lib/garcon/chef/handler/devreporter.rb +127 -0
  23. data/lib/garcon/chef/log.rb +64 -0
  24. data/lib/garcon/chef/node.rb +100 -0
  25. data/lib/garcon/chef/provider/civilize.rb +209 -0
  26. data/lib/garcon/chef/provider/development.rb +159 -0
  27. data/lib/garcon/chef/provider/download.rb +420 -0
  28. data/lib/garcon/chef/provider/house_keeping.rb +265 -0
  29. data/lib/garcon/chef/provider/node_cache.rb +31 -0
  30. data/lib/garcon/chef/provider/partial.rb +183 -0
  31. data/lib/garcon/chef/provider/recovery.rb +80 -0
  32. data/lib/garcon/chef/provider/zip_file.rb +271 -0
  33. data/lib/garcon/chef/resource/attribute.rb +52 -0
  34. data/lib/garcon/chef/resource/base_dsl.rb +174 -0
  35. data/lib/garcon/chef/resource/blender.rb +140 -0
  36. data/lib/garcon/chef/resource/lazy_eval.rb +66 -0
  37. data/lib/garcon/chef/resource/resource_name.rb +109 -0
  38. data/lib/garcon/chef/secret_bag.rb +204 -0
  39. data/lib/garcon/chef/validations.rb +76 -0
  40. data/lib/garcon/chef_inclusions.rb +151 -0
  41. data/lib/garcon/configuration.rb +138 -0
  42. data/lib/garcon/core_ext.rb +39 -0
  43. data/lib/garcon/core_ext/array.rb +27 -0
  44. data/lib/garcon/core_ext/binding.rb +64 -0
  45. data/lib/garcon/core_ext/boolean.rb +66 -0
  46. data/lib/garcon/core_ext/duration.rb +271 -0
  47. data/lib/garcon/core_ext/enumerable.rb +34 -0
  48. data/lib/garcon/core_ext/file.rb +127 -0
  49. data/lib/garcon/core_ext/filetest.rb +62 -0
  50. data/lib/garcon/core_ext/hash.rb +279 -0
  51. data/lib/garcon/core_ext/kernel.rb +159 -0
  52. data/lib/garcon/core_ext/lazy.rb +222 -0
  53. data/lib/garcon/core_ext/method_access.rb +243 -0
  54. data/lib/garcon/core_ext/module.rb +92 -0
  55. data/lib/garcon/core_ext/nil.rb +53 -0
  56. data/lib/garcon/core_ext/numeric.rb +44 -0
  57. data/lib/garcon/core_ext/object.rb +342 -0
  58. data/lib/garcon/core_ext/pathname.rb +152 -0
  59. data/lib/garcon/core_ext/process.rb +41 -0
  60. data/lib/garcon/core_ext/random.rb +497 -0
  61. data/lib/garcon/core_ext/string.rb +312 -0
  62. data/lib/garcon/core_ext/struct.rb +49 -0
  63. data/lib/garcon/core_ext/symbol.rb +170 -0
  64. data/lib/garcon/core_ext/time.rb +234 -0
  65. data/lib/garcon/exceptions.rb +101 -0
  66. data/lib/garcon/inflections.rb +237 -0
  67. data/lib/garcon/inflections/defaults.rb +79 -0
  68. data/lib/garcon/inflections/inflections.rb +182 -0
  69. data/lib/garcon/inflections/rules_collection.rb +37 -0
  70. data/lib/garcon/secret.rb +271 -0
  71. data/lib/garcon/stash/format.rb +114 -0
  72. data/lib/garcon/stash/journal.rb +226 -0
  73. data/lib/garcon/stash/queue.rb +83 -0
  74. data/lib/garcon/stash/serializer.rb +86 -0
  75. data/lib/garcon/stash/store.rb +435 -0
  76. data/lib/garcon/task.rb +31 -0
  77. data/lib/garcon/task/atomic.rb +151 -0
  78. data/lib/garcon/task/atomic_boolean.rb +127 -0
  79. data/lib/garcon/task/condition.rb +99 -0
  80. data/lib/garcon/task/copy_on_notify_observer_set.rb +154 -0
  81. data/lib/garcon/task/copy_on_write_observer_set.rb +153 -0
  82. data/lib/garcon/task/count_down_latch.rb +92 -0
  83. data/lib/garcon/task/delay.rb +196 -0
  84. data/lib/garcon/task/dereferenceable.rb +144 -0
  85. data/lib/garcon/task/event.rb +119 -0
  86. data/lib/garcon/task/executor.rb +275 -0
  87. data/lib/garcon/task/executor_options.rb +59 -0
  88. data/lib/garcon/task/future.rb +107 -0
  89. data/lib/garcon/task/immediate_executor.rb +84 -0
  90. data/lib/garcon/task/ivar.rb +171 -0
  91. data/lib/garcon/task/lazy_reference.rb +74 -0
  92. data/lib/garcon/task/monotonic_time.rb +69 -0
  93. data/lib/garcon/task/obligation.rb +256 -0
  94. data/lib/garcon/task/observable.rb +101 -0
  95. data/lib/garcon/task/priority_queue.rb +234 -0
  96. data/lib/garcon/task/processor_count.rb +128 -0
  97. data/lib/garcon/task/read_write_lock.rb +304 -0
  98. data/lib/garcon/task/safe_task_executor.rb +58 -0
  99. data/lib/garcon/task/single_thread_executor.rb +97 -0
  100. data/lib/garcon/task/thread_pool/cached.rb +71 -0
  101. data/lib/garcon/task/thread_pool/executor.rb +294 -0
  102. data/lib/garcon/task/thread_pool/fixed.rb +61 -0
  103. data/lib/garcon/task/thread_pool/worker.rb +90 -0
  104. data/lib/garcon/task/timer.rb +44 -0
  105. data/lib/garcon/task/timer_set.rb +194 -0
  106. data/lib/garcon/task/timer_task.rb +377 -0
  107. data/lib/garcon/task/waitable_list.rb +58 -0
  108. data/lib/garcon/utility/ansi.rb +199 -0
  109. data/lib/garcon/utility/at_random.rb +77 -0
  110. data/lib/garcon/utility/crypto.rb +292 -0
  111. data/lib/garcon/utility/equalizer.rb +146 -0
  112. data/lib/garcon/utility/faker/extensions/array.rb +22 -0
  113. data/lib/garcon/utility/faker/extensions/symbol.rb +9 -0
  114. data/lib/garcon/utility/faker/faker.rb +164 -0
  115. data/lib/garcon/utility/faker/faker/company.rb +17 -0
  116. data/lib/garcon/utility/faker/faker/hacker.rb +30 -0
  117. data/lib/garcon/utility/faker/faker/version.rb +3 -0
  118. data/lib/garcon/utility/faker/locales/en-US.yml +83 -0
  119. data/lib/garcon/utility/faker/locales/en.yml +21 -0
  120. data/lib/garcon/utility/file_helper.rb +170 -0
  121. data/lib/garcon/utility/hookers.rb +178 -0
  122. data/lib/garcon/utility/interpolation.rb +90 -0
  123. data/lib/garcon/utility/memstash.rb +364 -0
  124. data/lib/garcon/utility/misc.rb +54 -0
  125. data/lib/garcon/utility/msg_from_god.rb +62 -0
  126. data/lib/garcon/utility/retry.rb +238 -0
  127. data/lib/garcon/utility/timeout.rb +58 -0
  128. data/lib/garcon/utility/uber/builder.rb +91 -0
  129. data/lib/garcon/utility/uber/callable.rb +7 -0
  130. data/lib/garcon/utility/uber/delegates.rb +13 -0
  131. data/lib/garcon/utility/uber/inheritable_attr.rb +37 -0
  132. data/lib/garcon/utility/uber/options.rb +101 -0
  133. data/lib/garcon/utility/uber/uber_version.rb +3 -0
  134. data/lib/garcon/utility/uber/version.rb +33 -0
  135. data/lib/garcon/utility/url_helper.rb +100 -0
  136. data/lib/garcon/utils.rb +29 -0
  137. data/lib/garcon/version.rb +62 -0
  138. data/lib/garcun.rb +24 -0
  139. metadata +680 -0
@@ -0,0 +1,101 @@
1
+ require_relative 'callable'
2
+
3
+ module Uber
4
+ class Options < Hash
5
+ def initialize(options)
6
+ @static = options
7
+
8
+ options.each do |k,v|
9
+ self[k] = option = Value.new(v)
10
+ @static = nil if option.dynamic?
11
+ end
12
+ end
13
+
14
+ # 1.100000 0.060000 1.160000 ( 1.159762) original
15
+ # 0.120000 0.010000 0.130000 ( 0.135803) return self
16
+ # 0.930000 0.060000 0.990000 ( 0.997095) without v.evaluate
17
+
18
+ # Evaluates every element and returns a hash. Accepts context and arbitrary arguments.
19
+ def evaluate(context, *args)
20
+ return @static unless dynamic?
21
+
22
+ evaluate_for(context, *args)
23
+ end
24
+
25
+ # Evaluates a single value.
26
+ def eval(key, *args)
27
+ self[key].evaluate(*args)
28
+ end
29
+
30
+ private
31
+ def evaluate_for(context, *args)
32
+ {}.tap do |evaluated|
33
+ each do |k,v|
34
+ evaluated[k] = v.evaluate(context, *args)
35
+ end
36
+ end
37
+ end
38
+
39
+ def dynamic?
40
+ not @static
41
+ end
42
+
43
+
44
+ class Value # TODO: rename to Value.
45
+ def initialize(value, options={})
46
+ @value, @dynamic = value, options[:dynamic]
47
+
48
+ @proc = proc?
49
+ @callable = callable?
50
+ @method = method?
51
+
52
+ return if options.has_key?(:dynamic)
53
+
54
+ @dynamic = @proc || @callable || @method
55
+ end
56
+
57
+ def evaluate(context, *args)
58
+ return @value unless dynamic?
59
+
60
+ evaluate_for(context, *args)
61
+ end
62
+
63
+ def dynamic?
64
+ @dynamic
65
+ end
66
+
67
+ private
68
+ def evaluate_for(*args)
69
+ return proc!(*args) if @proc
70
+ return callable!(*args) if @callable
71
+ method!(*args)
72
+ # TODO: change to context.instance_exec and deprecate first argument.
73
+ end
74
+
75
+ def method!(context, *args)
76
+ context.send(@value, *args)
77
+ end
78
+
79
+ def proc!(context, *args)
80
+ context.instance_exec(*args, &@value)
81
+ end
82
+
83
+ # Callable object is executed in its original context.
84
+ def callable!(context, *args)
85
+ @value.call(context, *args)
86
+ end
87
+
88
+ def proc?
89
+ @value.kind_of?(Proc)
90
+ end
91
+
92
+ def callable?
93
+ @value.is_a?(Uber::Callable)
94
+ end
95
+
96
+ def method?
97
+ @value.is_a?(Symbol)
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,3 @@
1
+ module Uber
2
+ VERSION = "0.0.13"
3
+ end
@@ -0,0 +1,33 @@
1
+ module Uber
2
+ class Version < Hash
3
+ def initialize(version)
4
+ @version = Gem::Version.new(version)
5
+ major, minor, patch = @version.segments
6
+
7
+ self[:major] = major || 0
8
+ self[:minor] = minor || 0
9
+ self[:patch] = patch || 0
10
+ end
11
+
12
+ def >=(version)
13
+ major, minor, patch = parse(version)
14
+
15
+ self[:major] > major or
16
+ (self[:major] == major and self[:minor] >= minor and self[:patch] >= patch)
17
+ end
18
+
19
+ def ~(*versions)
20
+ !! versions.find do |v|
21
+ major, minor, patch = parse(v)
22
+
23
+ self[:major] == major and self[:minor] == minor
24
+ end
25
+ end
26
+
27
+ private
28
+ def parse(version)
29
+ major, minor, patch = Gem::Version.new(version).segments
30
+ [major||0, minor||0, patch||0]
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,100 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Author: Stefano Harding <riddopic@gmail.com>
4
+ # License: Apache License, Version 2.0
5
+ # Copyright: (C) 2014-2015 Stefano Harding
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ module Garcon
21
+ # Class methods that are added when you include Garcon
22
+ #
23
+ module UrlHelper
24
+ # Methods are also available as module-level methods as well as a mixin.
25
+ extend self
26
+
27
+ # Return a cleanly join URI/URL segments into a cleanly normalized URL
28
+ # that the libraries can use when constructing URIs. URI.join is pure
29
+ # evil.
30
+ #
31
+ # @param [Array<String>] paths
32
+ # the list of parts to join
33
+ #
34
+ # @return [URI]
35
+ #
36
+ def uri_join(*paths)
37
+ return nil if paths.length == 0
38
+ leadingslash = paths[0][0] == '/' ? '/' : ''
39
+ trailingslash = paths[-1][-1] == '/' ? '/' : ''
40
+ paths.map! { |path| path.sub(/^\/+/, '').sub(/\/+$/, '') }
41
+ leadingslash + paths.join('/') + trailingslash
42
+ end
43
+
44
+ # Unshorten a shortened URL
45
+ #
46
+ # @param url [String] A shortened URL
47
+ # @param [Hash] opts
48
+ # @option opts [Integer] :max_level
49
+ # max redirect times
50
+ # @option opts [Integer] :timeout
51
+ # timeout in seconds, for every request
52
+ # @option opts [Boolean] :use_cache
53
+ # use cached result if available
54
+ #
55
+ # @return Original url, a url that does not redirects
56
+ #
57
+ def unshorten(url, opts= {})
58
+ options = {
59
+ max_level: opts.fetch(:max_level, 10),
60
+ timeout: opts.fetch(:timeout, 2),
61
+ use_cache: opts.fetch(:use_cache, true)
62
+ }
63
+ url = (url =~ /^https?:/i) ? url : "http://#{url}"
64
+ __unshorten__(url, options)
65
+ end
66
+
67
+ private # P R O P R I E T À P R I V A T A Vietato L'accesso
68
+
69
+ @@cache = { }
70
+
71
+ # @api private
72
+ def __unshorten__(url, options, level = 0)
73
+ return @@cache[url] if options[:use_cache] && @@cache[url]
74
+ return url if level >= options[:max_level]
75
+ uri = URI.parse(url) rescue nil
76
+ return url if uri.nil?
77
+
78
+ http = Net::HTTP.new(uri.host, uri.port)
79
+ http.open_timeout = options[:timeout]
80
+ http.read_timeout = options[:timeout]
81
+ http.use_ssl = true if uri.scheme == 'https'
82
+
83
+ if uri.path && uri.query
84
+ response = http.request_head("#{uri.path}?#{uri.query}") rescue nil
85
+ elsif uri.path && !uri.query
86
+ response = http.request_head(uri.path) rescue nil
87
+ else
88
+ response = http.request_head('/') rescue nil
89
+ end
90
+
91
+ if response.is_a? Net::HTTPRedirection && response['location']
92
+ location = URI.encode(response['location'])
93
+ location = (uri + location).to_s if location
94
+ @@cache[url] = __unshorten__(location, options, level + 1)
95
+ else
96
+ url
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,29 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Author: Stefano Harding <riddopic@gmail.com>
4
+ # License: Apache License, Version 2.0
5
+ # Copyright: (C) 2014-2015 Stefano Harding
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ require_relative 'utility/crypto'
21
+ require_relative 'utility/faker/faker'
22
+ require_relative 'utility/file_helper'
23
+ require_relative 'utility/hookers'
24
+ require_relative 'utility/interpolation'
25
+ require_relative 'utility/memstash'
26
+ require_relative 'utility/msg_from_god'
27
+ require_relative 'utility/retry'
28
+ require_relative 'utility/timeout'
29
+ require_relative 'utility/url_helper'
@@ -0,0 +1,62 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Author: Stefano Harding <riddopic@gmail.com>
4
+ # License: Apache License, Version 2.0
5
+ # Copyright: (C) 2014-2015 Stefano Harding
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ # The version number of the Garcon Gem
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @api public
25
+ module Garcon
26
+ # Contains information about this gem's version
27
+ module Version
28
+ MAJOR = 0
29
+ MINOR = 0
30
+ PATCH = 2
31
+
32
+ # Returns a version string by joining MAJOR, MINOR, and PATCH with '.'
33
+ #
34
+ # @example
35
+ # Version.string # => '1.0.1'
36
+ #
37
+ def self.string
38
+ [MAJOR, MINOR, PATCH].join('.')
39
+ end
40
+
41
+ def self.logo
42
+ puts <<-EOF
43
+
44
+ .: ;:. .:;S;:. .:;.;:. .:;S;:. .:;S;:.
45
+ S ' S S S S S S S /
46
+ `:;S;:' `:;S;:' `:;S;:' `:;S;:' `:;S;:'
47
+ .g8"""bgd
48
+ .dP' `M
49
+ dM' ` ,6"Yb. `7Mb,od8 ,p6"bo ,pW"Wq.`7MMpMMMb.
50
+ MM 8) MM MM' "'6M' OO 6W' `Wb MM MM
51
+ MM. `7MMF',pm9MM MM 8M 8M M8 MM MM
52
+ `Mb. MM 8M MM MM YM. , YA. ,A9 MM MM
53
+ `"bmmmdPY `Moo9^Yo..JMML. YMbmd' `Ybmd9'.JMML JMML.
54
+ bog
55
+ od V #{string}
56
+
57
+ EOF
58
+ end
59
+ end
60
+
61
+ VERSION = Garcon::Version.string
62
+ end
@@ -0,0 +1,24 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Author: Stefano Harding <riddopic@gmail.com>
4
+ # License: Apache License, Version 2.0
5
+ # Copyright: (C) 2014-2015 Stefano Harding
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ require_relative 'garcon'
21
+
22
+ module Garcun
23
+
24
+ end
metadata ADDED
@@ -0,0 +1,680 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: garcun
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Stefano Harding
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-05-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: chef
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '11.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '11.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.4'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.4'
55
+ - !ruby/object:Gem::Dependency
56
+ name: yard
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.8'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: stove
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.2'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 3.2.3
93
+ type: :development
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '3.2'
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 3.2.3
103
+ - !ruby/object:Gem::Dependency
104
+ name: thor
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: rspec
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '3.2'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '3.2'
131
+ - !ruby/object:Gem::Dependency
132
+ name: rspec-its
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '1.2'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '1.2'
145
+ - !ruby/object:Gem::Dependency
146
+ name: chefspec
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '4.2'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '4.2'
159
+ - !ruby/object:Gem::Dependency
160
+ name: fuubar
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '2.0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '2.0'
173
+ - !ruby/object:Gem::Dependency
174
+ name: simplecov
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '0.9'
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '0.9'
187
+ - !ruby/object:Gem::Dependency
188
+ name: foodcritic
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '4.0'
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: '4.0'
201
+ - !ruby/object:Gem::Dependency
202
+ name: berkshelf
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: '3.2'
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '3.2'
215
+ - !ruby/object:Gem::Dependency
216
+ name: serverspec
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ">="
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ type: :development
223
+ prerelease: false
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - ">="
227
+ - !ruby/object:Gem::Version
228
+ version: '0'
229
+ - !ruby/object:Gem::Dependency
230
+ name: inch
231
+ requirement: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: '0'
236
+ type: :development
237
+ prerelease: false
238
+ version_requirements: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - ">="
241
+ - !ruby/object:Gem::Version
242
+ version: '0'
243
+ - !ruby/object:Gem::Dependency
244
+ name: yardstick
245
+ requirement: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - ">="
248
+ - !ruby/object:Gem::Version
249
+ version: '0'
250
+ type: :development
251
+ prerelease: false
252
+ version_requirements: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - ">="
255
+ - !ruby/object:Gem::Version
256
+ version: '0'
257
+ - !ruby/object:Gem::Dependency
258
+ name: guard
259
+ requirement: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - ">="
262
+ - !ruby/object:Gem::Version
263
+ version: '0'
264
+ type: :development
265
+ prerelease: false
266
+ version_requirements: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - ">="
269
+ - !ruby/object:Gem::Version
270
+ version: '0'
271
+ - !ruby/object:Gem::Dependency
272
+ name: guard-shell
273
+ requirement: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - ">="
276
+ - !ruby/object:Gem::Version
277
+ version: '0'
278
+ type: :development
279
+ prerelease: false
280
+ version_requirements: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - ">="
283
+ - !ruby/object:Gem::Version
284
+ version: '0'
285
+ - !ruby/object:Gem::Dependency
286
+ name: guard-yard
287
+ requirement: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - ">="
290
+ - !ruby/object:Gem::Version
291
+ version: '0'
292
+ type: :development
293
+ prerelease: false
294
+ version_requirements: !ruby/object:Gem::Requirement
295
+ requirements:
296
+ - - ">="
297
+ - !ruby/object:Gem::Version
298
+ version: '0'
299
+ - !ruby/object:Gem::Dependency
300
+ name: guard-rubocop
301
+ requirement: !ruby/object:Gem::Requirement
302
+ requirements:
303
+ - - ">="
304
+ - !ruby/object:Gem::Version
305
+ version: '0'
306
+ type: :development
307
+ prerelease: false
308
+ version_requirements: !ruby/object:Gem::Requirement
309
+ requirements:
310
+ - - ">="
311
+ - !ruby/object:Gem::Version
312
+ version: '0'
313
+ - !ruby/object:Gem::Dependency
314
+ name: guard-foodcritic
315
+ requirement: !ruby/object:Gem::Requirement
316
+ requirements:
317
+ - - ">="
318
+ - !ruby/object:Gem::Version
319
+ version: '0'
320
+ type: :development
321
+ prerelease: false
322
+ version_requirements: !ruby/object:Gem::Requirement
323
+ requirements:
324
+ - - ">="
325
+ - !ruby/object:Gem::Version
326
+ version: '0'
327
+ - !ruby/object:Gem::Dependency
328
+ name: guard-kitchen
329
+ requirement: !ruby/object:Gem::Requirement
330
+ requirements:
331
+ - - ">="
332
+ - !ruby/object:Gem::Version
333
+ version: '0'
334
+ type: :development
335
+ prerelease: false
336
+ version_requirements: !ruby/object:Gem::Requirement
337
+ requirements:
338
+ - - ">="
339
+ - !ruby/object:Gem::Version
340
+ version: '0'
341
+ - !ruby/object:Gem::Dependency
342
+ name: guard-rspec
343
+ requirement: !ruby/object:Gem::Requirement
344
+ requirements:
345
+ - - ">="
346
+ - !ruby/object:Gem::Version
347
+ version: '0'
348
+ type: :development
349
+ prerelease: false
350
+ version_requirements: !ruby/object:Gem::Requirement
351
+ requirements:
352
+ - - ">="
353
+ - !ruby/object:Gem::Version
354
+ version: '0'
355
+ - !ruby/object:Gem::Dependency
356
+ name: ruby_gntp
357
+ requirement: !ruby/object:Gem::Requirement
358
+ requirements:
359
+ - - ">="
360
+ - !ruby/object:Gem::Version
361
+ version: '0'
362
+ type: :development
363
+ prerelease: false
364
+ version_requirements: !ruby/object:Gem::Requirement
365
+ requirements:
366
+ - - ">="
367
+ - !ruby/object:Gem::Version
368
+ version: '0'
369
+ - !ruby/object:Gem::Dependency
370
+ name: test-kitchen
371
+ requirement: !ruby/object:Gem::Requirement
372
+ requirements:
373
+ - - "~>"
374
+ - !ruby/object:Gem::Version
375
+ version: '1.3'
376
+ type: :development
377
+ prerelease: false
378
+ version_requirements: !ruby/object:Gem::Requirement
379
+ requirements:
380
+ - - "~>"
381
+ - !ruby/object:Gem::Version
382
+ version: '1.3'
383
+ - !ruby/object:Gem::Dependency
384
+ name: kitchen-vagrant
385
+ requirement: !ruby/object:Gem::Requirement
386
+ requirements:
387
+ - - ">="
388
+ - !ruby/object:Gem::Version
389
+ version: '0'
390
+ type: :development
391
+ prerelease: false
392
+ version_requirements: !ruby/object:Gem::Requirement
393
+ requirements:
394
+ - - ">="
395
+ - !ruby/object:Gem::Version
396
+ version: '0'
397
+ - !ruby/object:Gem::Dependency
398
+ name: vagrant-wrapper
399
+ requirement: !ruby/object:Gem::Requirement
400
+ requirements:
401
+ - - ">="
402
+ - !ruby/object:Gem::Version
403
+ version: '0'
404
+ type: :development
405
+ prerelease: false
406
+ version_requirements: !ruby/object:Gem::Requirement
407
+ requirements:
408
+ - - ">="
409
+ - !ruby/object:Gem::Version
410
+ version: '0'
411
+ - !ruby/object:Gem::Dependency
412
+ name: kitchen-docker
413
+ requirement: !ruby/object:Gem::Requirement
414
+ requirements:
415
+ - - ">="
416
+ - !ruby/object:Gem::Version
417
+ version: '0'
418
+ type: :development
419
+ prerelease: false
420
+ version_requirements: !ruby/object:Gem::Requirement
421
+ requirements:
422
+ - - ">="
423
+ - !ruby/object:Gem::Version
424
+ version: '0'
425
+ - !ruby/object:Gem::Dependency
426
+ name: kitchen-sync
427
+ requirement: !ruby/object:Gem::Requirement
428
+ requirements:
429
+ - - ">="
430
+ - !ruby/object:Gem::Version
431
+ version: '0'
432
+ type: :development
433
+ prerelease: false
434
+ version_requirements: !ruby/object:Gem::Requirement
435
+ requirements:
436
+ - - ">="
437
+ - !ruby/object:Gem::Version
438
+ version: '0'
439
+ - !ruby/object:Gem::Dependency
440
+ name: rubocop
441
+ requirement: !ruby/object:Gem::Requirement
442
+ requirements:
443
+ - - ">="
444
+ - !ruby/object:Gem::Version
445
+ version: '0'
446
+ type: :development
447
+ prerelease: false
448
+ version_requirements: !ruby/object:Gem::Requirement
449
+ requirements:
450
+ - - ">="
451
+ - !ruby/object:Gem::Version
452
+ version: '0'
453
+ - !ruby/object:Gem::Dependency
454
+ name: geminabox-rake
455
+ requirement: !ruby/object:Gem::Requirement
456
+ requirements:
457
+ - - ">="
458
+ - !ruby/object:Gem::Version
459
+ version: '0'
460
+ type: :development
461
+ prerelease: false
462
+ version_requirements: !ruby/object:Gem::Requirement
463
+ requirements:
464
+ - - ">="
465
+ - !ruby/object:Gem::Version
466
+ version: '0'
467
+ - !ruby/object:Gem::Dependency
468
+ name: version
469
+ requirement: !ruby/object:Gem::Requirement
470
+ requirements:
471
+ - - ">="
472
+ - !ruby/object:Gem::Version
473
+ version: '0'
474
+ type: :development
475
+ prerelease: false
476
+ version_requirements: !ruby/object:Gem::Requirement
477
+ requirements:
478
+ - - ">="
479
+ - !ruby/object:Gem::Version
480
+ version: '0'
481
+ - !ruby/object:Gem::Dependency
482
+ name: thor-scmversion
483
+ requirement: !ruby/object:Gem::Requirement
484
+ requirements:
485
+ - - ">="
486
+ - !ruby/object:Gem::Version
487
+ version: '0'
488
+ type: :development
489
+ prerelease: false
490
+ version_requirements: !ruby/object:Gem::Requirement
491
+ requirements:
492
+ - - ">="
493
+ - !ruby/object:Gem::Version
494
+ version: '0'
495
+ - !ruby/object:Gem::Dependency
496
+ name: semverse
497
+ requirement: !ruby/object:Gem::Requirement
498
+ requirements:
499
+ - - ">="
500
+ - !ruby/object:Gem::Version
501
+ version: '0'
502
+ type: :development
503
+ prerelease: false
504
+ version_requirements: !ruby/object:Gem::Requirement
505
+ requirements:
506
+ - - ">="
507
+ - !ruby/object:Gem::Version
508
+ version: '0'
509
+ description: A useful collection of methods to make cooking more fun
510
+ email:
511
+ - riddopic@gmail.com
512
+ executables: []
513
+ extensions: []
514
+ extra_rdoc_files:
515
+ - LICENSE
516
+ - README.md
517
+ files:
518
+ - ".gitattributes"
519
+ - ".gitignore"
520
+ - ".rspec"
521
+ - Gemfile
522
+ - LICENSE
523
+ - README.md
524
+ - Rakefile
525
+ - garcun.gemspec
526
+ - lib/garcon.rb
527
+ - lib/garcon/chef/chef_helpers.rb
528
+ - lib/garcon/chef/coerce/coercer.rb
529
+ - lib/garcon/chef/coerce/coercions/boolean_definitions.rb
530
+ - lib/garcon/chef/coerce/coercions/date_definitions.rb
531
+ - lib/garcon/chef/coerce/coercions/date_time_definitions.rb
532
+ - lib/garcon/chef/coerce/coercions/fixnum_definitions.rb
533
+ - lib/garcon/chef/coerce/coercions/float_definitions.rb
534
+ - lib/garcon/chef/coerce/coercions/hash_definitions.rb
535
+ - lib/garcon/chef/coerce/coercions/integer_definitions.rb
536
+ - lib/garcon/chef/coerce/coercions/string_definitions.rb
537
+ - lib/garcon/chef/coerce/coercions/time_definitions.rb
538
+ - lib/garcon/chef/handler/devreporter.rb
539
+ - lib/garcon/chef/log.rb
540
+ - lib/garcon/chef/node.rb
541
+ - lib/garcon/chef/provider/civilize.rb
542
+ - lib/garcon/chef/provider/development.rb
543
+ - lib/garcon/chef/provider/download.rb
544
+ - lib/garcon/chef/provider/house_keeping.rb
545
+ - lib/garcon/chef/provider/node_cache.rb
546
+ - lib/garcon/chef/provider/partial.rb
547
+ - lib/garcon/chef/provider/recovery.rb
548
+ - lib/garcon/chef/provider/zip_file.rb
549
+ - lib/garcon/chef/resource/attribute.rb
550
+ - lib/garcon/chef/resource/base_dsl.rb
551
+ - lib/garcon/chef/resource/blender.rb
552
+ - lib/garcon/chef/resource/lazy_eval.rb
553
+ - lib/garcon/chef/resource/resource_name.rb
554
+ - lib/garcon/chef/secret_bag.rb
555
+ - lib/garcon/chef/validations.rb
556
+ - lib/garcon/chef_inclusions.rb
557
+ - lib/garcon/configuration.rb
558
+ - lib/garcon/core_ext.rb
559
+ - lib/garcon/core_ext/array.rb
560
+ - lib/garcon/core_ext/binding.rb
561
+ - lib/garcon/core_ext/boolean.rb
562
+ - lib/garcon/core_ext/duration.rb
563
+ - lib/garcon/core_ext/enumerable.rb
564
+ - lib/garcon/core_ext/file.rb
565
+ - lib/garcon/core_ext/filetest.rb
566
+ - lib/garcon/core_ext/hash.rb
567
+ - lib/garcon/core_ext/kernel.rb
568
+ - lib/garcon/core_ext/lazy.rb
569
+ - lib/garcon/core_ext/method_access.rb
570
+ - lib/garcon/core_ext/module.rb
571
+ - lib/garcon/core_ext/nil.rb
572
+ - lib/garcon/core_ext/numeric.rb
573
+ - lib/garcon/core_ext/object.rb
574
+ - lib/garcon/core_ext/pathname.rb
575
+ - lib/garcon/core_ext/process.rb
576
+ - lib/garcon/core_ext/random.rb
577
+ - lib/garcon/core_ext/string.rb
578
+ - lib/garcon/core_ext/struct.rb
579
+ - lib/garcon/core_ext/symbol.rb
580
+ - lib/garcon/core_ext/time.rb
581
+ - lib/garcon/exceptions.rb
582
+ - lib/garcon/inflections.rb
583
+ - lib/garcon/inflections/defaults.rb
584
+ - lib/garcon/inflections/inflections.rb
585
+ - lib/garcon/inflections/rules_collection.rb
586
+ - lib/garcon/secret.rb
587
+ - lib/garcon/stash/format.rb
588
+ - lib/garcon/stash/journal.rb
589
+ - lib/garcon/stash/queue.rb
590
+ - lib/garcon/stash/serializer.rb
591
+ - lib/garcon/stash/store.rb
592
+ - lib/garcon/task.rb
593
+ - lib/garcon/task/atomic.rb
594
+ - lib/garcon/task/atomic_boolean.rb
595
+ - lib/garcon/task/condition.rb
596
+ - lib/garcon/task/copy_on_notify_observer_set.rb
597
+ - lib/garcon/task/copy_on_write_observer_set.rb
598
+ - lib/garcon/task/count_down_latch.rb
599
+ - lib/garcon/task/delay.rb
600
+ - lib/garcon/task/dereferenceable.rb
601
+ - lib/garcon/task/event.rb
602
+ - lib/garcon/task/executor.rb
603
+ - lib/garcon/task/executor_options.rb
604
+ - lib/garcon/task/future.rb
605
+ - lib/garcon/task/immediate_executor.rb
606
+ - lib/garcon/task/ivar.rb
607
+ - lib/garcon/task/lazy_reference.rb
608
+ - lib/garcon/task/monotonic_time.rb
609
+ - lib/garcon/task/obligation.rb
610
+ - lib/garcon/task/observable.rb
611
+ - lib/garcon/task/priority_queue.rb
612
+ - lib/garcon/task/processor_count.rb
613
+ - lib/garcon/task/read_write_lock.rb
614
+ - lib/garcon/task/safe_task_executor.rb
615
+ - lib/garcon/task/single_thread_executor.rb
616
+ - lib/garcon/task/thread_pool/cached.rb
617
+ - lib/garcon/task/thread_pool/executor.rb
618
+ - lib/garcon/task/thread_pool/fixed.rb
619
+ - lib/garcon/task/thread_pool/worker.rb
620
+ - lib/garcon/task/timer.rb
621
+ - lib/garcon/task/timer_set.rb
622
+ - lib/garcon/task/timer_task.rb
623
+ - lib/garcon/task/waitable_list.rb
624
+ - lib/garcon/utility/ansi.rb
625
+ - lib/garcon/utility/at_random.rb
626
+ - lib/garcon/utility/crypto.rb
627
+ - lib/garcon/utility/equalizer.rb
628
+ - lib/garcon/utility/faker/extensions/array.rb
629
+ - lib/garcon/utility/faker/extensions/symbol.rb
630
+ - lib/garcon/utility/faker/faker.rb
631
+ - lib/garcon/utility/faker/faker/company.rb
632
+ - lib/garcon/utility/faker/faker/hacker.rb
633
+ - lib/garcon/utility/faker/faker/version.rb
634
+ - lib/garcon/utility/faker/locales/en-US.yml
635
+ - lib/garcon/utility/faker/locales/en.yml
636
+ - lib/garcon/utility/file_helper.rb
637
+ - lib/garcon/utility/hookers.rb
638
+ - lib/garcon/utility/interpolation.rb
639
+ - lib/garcon/utility/memstash.rb
640
+ - lib/garcon/utility/misc.rb
641
+ - lib/garcon/utility/msg_from_god.rb
642
+ - lib/garcon/utility/retry.rb
643
+ - lib/garcon/utility/timeout.rb
644
+ - lib/garcon/utility/uber/builder.rb
645
+ - lib/garcon/utility/uber/callable.rb
646
+ - lib/garcon/utility/uber/delegates.rb
647
+ - lib/garcon/utility/uber/inheritable_attr.rb
648
+ - lib/garcon/utility/uber/options.rb
649
+ - lib/garcon/utility/uber/uber_version.rb
650
+ - lib/garcon/utility/uber/version.rb
651
+ - lib/garcon/utility/url_helper.rb
652
+ - lib/garcon/utils.rb
653
+ - lib/garcon/version.rb
654
+ - lib/garcun.rb
655
+ homepage: https://github.com/riddopic/garcun
656
+ licenses:
657
+ - Apache 2.0
658
+ metadata: {}
659
+ post_install_message:
660
+ rdoc_options: []
661
+ require_paths:
662
+ - lib
663
+ required_ruby_version: !ruby/object:Gem::Requirement
664
+ requirements:
665
+ - - ">="
666
+ - !ruby/object:Gem::Version
667
+ version: 2.0.0
668
+ required_rubygems_version: !ruby/object:Gem::Requirement
669
+ requirements:
670
+ - - ">="
671
+ - !ruby/object:Gem::Version
672
+ version: '0'
673
+ requirements: []
674
+ rubyforge_project:
675
+ rubygems_version: 2.4.4
676
+ signing_key:
677
+ specification_version: 4
678
+ summary: A useful collection of methods to make cooking more fun
679
+ test_files: []
680
+ has_rdoc: