garcun 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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: