capsulecd 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +2 -0
  3. data/.dockerignore +5 -0
  4. data/.gitignore +95 -0
  5. data/.rspec +3 -0
  6. data/.simplecov +9 -0
  7. data/Dockerfile +16 -0
  8. data/Dockerfile.chef +26 -0
  9. data/Dockerfile.javascript +7 -0
  10. data/Dockerfile.node +7 -0
  11. data/Dockerfile.python +7 -0
  12. data/Dockerfile.ruby +4 -0
  13. data/FEATURES.md +12 -0
  14. data/Gemfile +26 -0
  15. data/LICENSE.md +22 -0
  16. data/README.md +227 -0
  17. data/Rakefile +43 -0
  18. data/bin/capsulecd +4 -0
  19. data/capsulecd.gemspec +27 -0
  20. data/circle.yml +24 -0
  21. data/lib/capsulecd/base/common/git_utils.rb +90 -0
  22. data/lib/capsulecd/base/common/validation_utils.rb +22 -0
  23. data/lib/capsulecd/base/configuration.rb +151 -0
  24. data/lib/capsulecd/base/engine.rb +163 -0
  25. data/lib/capsulecd/base/runner/circleci.rb +37 -0
  26. data/lib/capsulecd/base/runner/default.rb +38 -0
  27. data/lib/capsulecd/base/source/github.rb +183 -0
  28. data/lib/capsulecd/base/transform_engine.rb +62 -0
  29. data/lib/capsulecd/chef/chef_engine.rb +172 -0
  30. data/lib/capsulecd/chef/chef_helper.rb +29 -0
  31. data/lib/capsulecd/cli.rb +64 -0
  32. data/lib/capsulecd/error.rb +51 -0
  33. data/lib/capsulecd/javascript/javascript_engine.rb +213 -0
  34. data/lib/capsulecd/node/node_engine.rb +141 -0
  35. data/lib/capsulecd/python/python_engine.rb +157 -0
  36. data/lib/capsulecd/ruby/ruby_engine.rb +191 -0
  37. data/lib/capsulecd/ruby/ruby_helper.rb +60 -0
  38. data/lib/capsulecd/version.rb +3 -0
  39. data/lib/capsulecd.rb +16 -0
  40. data/logo.svg +1 -0
  41. data/spec/fixtures/chef/cookbook_analogj_test/CHANGELOG.md +3 -0
  42. data/spec/fixtures/chef/cookbook_analogj_test/Gemfile +18 -0
  43. data/spec/fixtures/chef/cookbook_analogj_test/LICENSE +21 -0
  44. data/spec/fixtures/chef/cookbook_analogj_test/README.md +13 -0
  45. data/spec/fixtures/chef/cookbook_analogj_test/Rakefile +1 -0
  46. data/spec/fixtures/chef/cookbook_analogj_test/Thorfile +12 -0
  47. data/spec/fixtures/chef/cookbook_analogj_test/chefignore +94 -0
  48. data/spec/fixtures/chef/cookbook_analogj_test/metadata.rb +5 -0
  49. data/spec/fixtures/chef/cookbook_analogj_test/recipes/default.rb +6 -0
  50. data/spec/fixtures/incorrect_configuration.yml +4 -0
  51. data/spec/fixtures/javascript/javascript_analogj_test/LICENSE +21 -0
  52. data/spec/fixtures/javascript/javascript_analogj_test/README.md +2 -0
  53. data/spec/fixtures/javascript/javascript_analogj_test/package.json +19 -0
  54. data/spec/fixtures/node/npm_analogj_test/LICENSE +21 -0
  55. data/spec/fixtures/node/npm_analogj_test/README.md +2 -0
  56. data/spec/fixtures/node/npm_analogj_test/package.json +19 -0
  57. data/spec/fixtures/python/pip_analogj_test/LICENSE +21 -0
  58. data/spec/fixtures/python/pip_analogj_test/MANIFEST.in +1 -0
  59. data/spec/fixtures/python/pip_analogj_test/README.md +1 -0
  60. data/spec/fixtures/python/pip_analogj_test/VERSION +1 -0
  61. data/spec/fixtures/python/pip_analogj_test/setup.cfg +5 -0
  62. data/spec/fixtures/python/pip_analogj_test/setup.py +80 -0
  63. data/spec/fixtures/python/pip_analogj_test/tox.ini +14 -0
  64. data/spec/fixtures/ruby/gem_analogj_test/Gemfile +4 -0
  65. data/spec/fixtures/ruby/gem_analogj_test/LICENSE.txt +21 -0
  66. data/spec/fixtures/ruby/gem_analogj_test/README.md +41 -0
  67. data/spec/fixtures/ruby/gem_analogj_test/Rakefile +6 -0
  68. data/spec/fixtures/ruby/gem_analogj_test/bin/console +14 -0
  69. data/spec/fixtures/ruby/gem_analogj_test/bin/setup +8 -0
  70. data/spec/fixtures/ruby/gem_analogj_test/gem_analogj_test.gemspec +25 -0
  71. data/spec/fixtures/ruby/gem_analogj_test/lib/gem_analogj_test/version.rb +3 -0
  72. data/spec/fixtures/ruby/gem_analogj_test/lib/gem_analogj_test.rb +5 -0
  73. data/spec/fixtures/ruby/gem_analogj_test/spec/gem_analogj_test_spec.rb +7 -0
  74. data/spec/fixtures/ruby/gem_analogj_test/spec/spec_helper.rb +2 -0
  75. data/spec/fixtures/ruby/gem_analogj_test-0.1.4.gem +0 -0
  76. data/spec/fixtures/sample_chef_configuration.yml +8 -0
  77. data/spec/fixtures/sample_configuration.yml +7 -0
  78. data/spec/fixtures/sample_global_configuration.yml +23 -0
  79. data/spec/fixtures/sample_node_configuration.yml +7 -0
  80. data/spec/fixtures/sample_python_configuration.yml +8 -0
  81. data/spec/fixtures/sample_repo_configuration.yml +22 -0
  82. data/spec/fixtures/sample_ruby_configuration.yml +5 -0
  83. data/spec/fixtures/vcr_cassettes/chef_build_step.yml +636 -0
  84. data/spec/fixtures/vcr_cassettes/gem_build_step.yml +653 -0
  85. data/spec/fixtures/vcr_cassettes/gem_build_step_without_version_rb.yml +653 -0
  86. data/spec/fixtures/vcr_cassettes/integration_chef.yml +1399 -0
  87. data/spec/fixtures/vcr_cassettes/integration_node.yml +1388 -0
  88. data/spec/fixtures/vcr_cassettes/integration_python.yml +1388 -0
  89. data/spec/fixtures/vcr_cassettes/integration_ruby.yml +1377 -0
  90. data/spec/fixtures/vcr_cassettes/node_build_step.yml +647 -0
  91. data/spec/fixtures/vcr_cassettes/pip_build_step.yml +653 -0
  92. data/spec/lib/capsulecd/base/configuration_spec.rb +75 -0
  93. data/spec/lib/capsulecd/base/engine_spec.rb +51 -0
  94. data/spec/lib/capsulecd/base/source/github_spec.rb +253 -0
  95. data/spec/lib/capsulecd/base/transform_engine_spec.rb +55 -0
  96. data/spec/lib/capsulecd/chef/chef_engine_spec.rb +114 -0
  97. data/spec/lib/capsulecd/cli_spec.rb +57 -0
  98. data/spec/lib/capsulecd/node/node_engine_spec.rb +113 -0
  99. data/spec/lib/capsulecd/python/python_engine_spec.rb +118 -0
  100. data/spec/lib/capsulecd/ruby/ruby_engine_spec.rb +128 -0
  101. data/spec/spec_helper.rb +105 -0
  102. data/spec/support/file_system.rb +21 -0
  103. data/spec/support/package_types.rb +11 -0
  104. metadata +281 -0
@@ -0,0 +1,191 @@
1
+ require 'semverly'
2
+ require 'open3'
3
+ require 'bundler'
4
+ require_relative '../base/engine'
5
+ require_relative 'ruby_helper'
6
+
7
+ module CapsuleCD
8
+ module Ruby
9
+ class RubyEngine < Engine
10
+ def build_step
11
+ super
12
+ gemspec_path = CapsuleCD::Ruby::RubyHelper.get_gemspec_path(@source_git_local_path)
13
+
14
+ # check for/create required VERSION file
15
+ gemspec_data = CapsuleCD::Ruby::RubyHelper.load_gemspec_data(gemspec_path)
16
+
17
+ if !gemspec_data || !File.exist?(CapsuleCD::Ruby::RubyHelper.version_filepath(@source_git_local_path, gemspec_data.name))
18
+ fail CapsuleCD::Error::BuildPackageInvalid, 'version.rb file is required to process Ruby gem'
19
+ end
20
+
21
+ # bump up the version here.
22
+ # since there's no standardized way to bump up the version in the *.gemspec file, we're going to assume that the version
23
+ # is specified in a version file in the lib/<gem_name>/ directory, similar to how the bundler gem does it.
24
+ # ie. bundle gem <gem_name> will create a file: my_gem/lib/my_gem/version.rb with the following contents
25
+ # module MyGem
26
+ # VERSION = "0.1.0"
27
+ # end
28
+ #
29
+ # Jeweler and Hoe both do something similar.
30
+ # http://yehudakatz.com/2010/04/02/using-gemspecs-as-intended/
31
+ # http://timelessrepo.com/making-ruby-gems
32
+ # http://guides.rubygems.org/make-your-own-gem/
33
+
34
+ version_str = CapsuleCD::Ruby::RubyHelper.read_version_file(@source_git_local_path, gemspec_data.name)
35
+ next_version = bump_version(SemVer.parse(gemspec_data.version.to_s))
36
+
37
+ new_version_str = version_str.gsub(/(VERSION\s*=\s*['"])[0-9\.]+(['"])/, "\\1#{next_version}\\2")
38
+ CapsuleCD::Ruby::RubyHelper.write_version_file(@source_git_local_path, gemspec_data.name, new_version_str)
39
+
40
+ # check for/create any required missing folders/files
41
+ unless File.exist?(@source_git_local_path + '/Gemfile')
42
+ File.open(@source_git_local_path + '/Gemfile', 'w') { |file|
43
+ file.puts("source 'https://rubygems.org'")
44
+ file.puts('gemspec')
45
+ }
46
+ end
47
+ unless File.exist?(@source_git_local_path + '/Rakefile')
48
+ File.open(@source_git_local_path + '/Rakefile', 'w') { |file| file.write('task :default => :spec') }
49
+ end
50
+ unless File.exist?(@source_git_local_path + '/spec')
51
+ FileUtils.mkdir(@source_git_local_path + '/spec')
52
+ end
53
+ unless File.exist?(@source_git_local_path + '/.gitignore')
54
+ CapsuleCD::GitUtils.create_gitignore(@source_git_local_path, ['Ruby'])
55
+ end
56
+
57
+ # package the gem, make sure it builds correctly
58
+ Open3.popen3('gem build '+ File.basename(gemspec_path), chdir: @source_git_local_path) do |_stdin, stdout, stderr, external|
59
+ { stdout: stdout, stderr: stderr }. each do |name, stream_buffer|
60
+ Thread.new do
61
+ until (line = stream_buffer.gets).nil?
62
+ puts "#{name} -> #{line}"
63
+ end
64
+ end
65
+ end
66
+ # wait for process
67
+ external.join
68
+ unless external.value.success?
69
+ fail CapsuleCD::Error::BuildPackageFailed, 'gem build failed. Check gemspec file and dependencies'
70
+ end
71
+ end
72
+ end
73
+
74
+ def test_step
75
+ super
76
+
77
+ gems = Dir.glob(@source_git_local_path + '/*.gem')
78
+ if gems.empty?
79
+ fail CapsuleCD::Error::TestDependenciesError, 'Ruby gem file could not be found'
80
+ end
81
+ gem_path = gems.first
82
+
83
+ # lets install the gem, and any dependencies
84
+ # http://guides.rubygems.org/make-your-own-gem/
85
+ Bundler.with_clean_env do
86
+ Open3.popen3('gem install ./' + File.basename(gem_path) + ' --ignore-dependencies', chdir: @source_git_local_path) do |_stdin, stdout, stderr, external|
87
+ { stdout: stdout, stderr: stderr }. each do |name, stream_buffer|
88
+ Thread.new do
89
+ until (line = stream_buffer.gets).nil?
90
+ puts "#{name} -> #{line}"
91
+ end
92
+ end
93
+ end
94
+ # wait for process
95
+ external.join
96
+ unless external.value.success?
97
+ fail CapsuleCD::Error::TestDependenciesError, 'gem install failed. Check gemspec and gem dependencies'
98
+ end
99
+ end
100
+
101
+ Open3.popen3('bundle install', chdir: @source_git_local_path) do |_stdin, stdout, stderr, external|
102
+ { stdout: stdout, stderr: stderr }. each do |name, stream_buffer|
103
+ Thread.new do
104
+ until (line = stream_buffer.gets).nil?
105
+ puts "#{name} -> #{line}"
106
+ end
107
+ end
108
+ end
109
+ # wait for process
110
+ external.join
111
+ unless external.value.success?
112
+ fail CapsuleCD::Error::TestDependenciesError, 'bundle install failed. Check Gemfile'
113
+ end
114
+ end
115
+
116
+ # run test command
117
+ test_cmd = @config.engine_cmd_test || 'rake spec'
118
+ Open3.popen3(test_cmd, chdir: @source_git_local_path) do |_stdin, stdout, stderr, external|
119
+ { stdout: stdout, stderr: stderr }. each do |name, stream_buffer|
120
+ Thread.new do
121
+ until (line = stream_buffer.gets).nil?
122
+ puts "#{name} -> #{line}"
123
+ end
124
+ end
125
+ end
126
+ # wait for process
127
+ external.join
128
+ unless external.value.success?
129
+ fail CapsuleCD::Error::TestRunnerError, test_cmd + ' failed. Check log for exact error'
130
+ end
131
+ end unless @config.engine_disable_test
132
+ end
133
+ end
134
+
135
+ # run npm publish
136
+ def package_step
137
+ super
138
+
139
+ # commit changes to the cookbook. (test run occurs before this, and it should clean up any instrumentation files, created,
140
+ # as they will be included in the commmit and any release artifacts)
141
+ gemspec_data = CapsuleCD::Ruby::RubyHelper.get_gemspec_data(@source_git_local_path)
142
+ next_version = SemVer.parse(gemspec_data.version.to_s)
143
+ CapsuleCD::GitUtils.commit(@source_git_local_path, "(v#{next_version}) Automated packaging of release by CapsuleCD")
144
+ @source_release_commit = CapsuleCD::GitUtils.tag(@source_git_local_path, "v#{next_version}")
145
+ end
146
+
147
+ # this step should push the release to the package repository (ie. npm, chef supermarket, rubygems)
148
+ def release_step
149
+ super
150
+
151
+ unless @config.rubygems_api_key
152
+ fail CapsuleCD::Error::ReleaseCredentialsMissing, 'cannot deploy package to rubygems, credentials missing'
153
+ return
154
+ end
155
+
156
+ # write the config file.
157
+ rubygems_cred_path = File.expand_path('~/.gem')
158
+
159
+ FileUtils.mkdir_p(rubygems_cred_path)
160
+ File.open(rubygems_cred_path + '/credentials', 'w+', 0600) do |file|
161
+ file.write(<<-EOT.gsub(/^\s+/, '')
162
+ ---
163
+ :rubygems_api_key: #{@config.rubygems_api_key}
164
+ EOT
165
+ )
166
+ end
167
+
168
+ # run gem push *.gem
169
+ gems = Dir.glob(@source_git_local_path + '/*.gem')
170
+ if gems.empty?
171
+ fail CapsuleCD::Error::TestDependenciesError, 'Ruby gem file could not be found'
172
+ end
173
+ gem_path = gems.first
174
+ Open3.popen3('gem push ' + File.basename(gem_path), chdir: @source_git_local_path) do |_stdin, stdout, stderr, external|
175
+ { stdout: stdout, stderr: stderr }. each do |name, stream_buffer|
176
+ Thread.new do
177
+ until (line = stream_buffer.gets).nil?
178
+ puts "#{name} -> #{line}"
179
+ end
180
+ end
181
+ end
182
+ # wait for process
183
+ external.join
184
+ unless external.value.success?
185
+ fail CapsuleCD::Error::ReleasePackageError, 'Pushing gem to RubyGems.org using `gem push` failed. Check log for exact error'
186
+ end
187
+ end
188
+ end
189
+ end
190
+ end
191
+ end
@@ -0,0 +1,60 @@
1
+ require 'rubygems'
2
+ require 'thread'
3
+ module CapsuleCD
4
+ module Ruby
5
+ class RubyHelper
6
+ def self.version_filepath(repo_path, gem_name, version_filename = 'version.rb')
7
+ "#{repo_path}/lib/#{gem_name}/#{version_filename}"
8
+ end
9
+
10
+ def self.read_version_file(repo_path, gem_name, version_filename = 'version.rb')
11
+ File.read(self.version_filepath(repo_path, gem_name, version_filename))
12
+ end
13
+
14
+ def self.write_version_file(repo_path, gem_name, metadata_str, version_filename = 'version.rb')
15
+ File.open(self.version_filepath(repo_path, gem_name, version_filename), 'w') { |file| file.write(metadata_str) }
16
+ end
17
+
18
+ def self.get_gemspec_path(repo_path)
19
+ gemspecs = Dir.glob(repo_path + '/*.gemspec')
20
+ if gemspecs.empty?
21
+ fail CapsuleCD::Error::BuildPackageInvalid, '*.gemspec file is required to process Ruby gem'
22
+ end
23
+ gemspecs.first
24
+ end
25
+
26
+ def self.get_gemspec_data(repo_path)
27
+ self.load_gemspec_data(self.get_gemspec_path(repo_path))
28
+ end
29
+
30
+ # since the Gem::Specification class is basically eval'ing the gemspec file, and the gemspec file is doing a require
31
+ # to load the version.rb file, the version.rb file is cached in memory. We're going to try to get around that issue
32
+ # by parsing the gemspec file in a forked process.
33
+ # https://stackoverflow.com/questions/1076257/returning-data-from-forked-processes
34
+ def self.execute_in_child
35
+ read, write = IO.pipe
36
+
37
+ pid = fork do
38
+ read.close
39
+ result = yield
40
+ Marshal.dump(result, write)
41
+ exit!(0) # skips exit handlers.
42
+ end
43
+
44
+ write.close
45
+ result = read.read
46
+ Process.wait(pid)
47
+ raise "child failed" if result.empty?
48
+ Marshal.load(result)
49
+ end
50
+
51
+ def self.load_gemspec_data(gemspec_path)
52
+ return self.execute_in_child do
53
+ Gem::Specification::load(gemspec_path)
54
+ end
55
+ end
56
+
57
+
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,3 @@
1
+ module CapsuleCD
2
+ VERSION = '1.0.1'
3
+ end
data/lib/capsulecd.rb ADDED
@@ -0,0 +1,16 @@
1
+ module CapsuleCD
2
+ require 'capsulecd/base/engine'
3
+ require 'capsulecd/base/configuration'
4
+ require 'capsulecd/base/transform_engine'
5
+
6
+ require 'capsulecd/base/common/git_utils'
7
+ require 'capsulecd/base/common/validation_utils'
8
+
9
+ require 'capsulecd/base/runner/default'
10
+ require 'capsulecd/base/runner/circleci'
11
+
12
+ require 'capsulecd/base/source/github'
13
+
14
+ require 'capsulecd/version'
15
+ require 'capsulecd/error'
16
+ end
data/logo.svg ADDED
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px" y="0px" viewBox="0 0 100 100" enable-background="new 0 0 100 100" xml:space="preserve"><path fill="#000000" d="M62.748,19.414c-4.016,0-7.724,1.672-11.021,4.969l-1.734,1.734l-1.38-1.38 c-0.508-0.509-5.159-4.97-11.68-4.97c-4.015,0-7.724,1.672-11.022,4.97l-1.174,1.175c-4.562,4.562-8.327,14.373,0,22.7l1.38,1.38 l-1.749,1.749c-4.562,4.562-8.328,14.374,0.001,22.703l1.173,1.17c0.509,0.509,5.159,4.97,11.679,4.971c0,0,0,0.001,0,0.001 c4.016,0,7.723-1.673,11.021-4.971l1.748-1.748l1.396,1.396c0.509,0.509,5.158,4.97,11.679,4.97c4.016,0,7.725-1.672,11.022-4.971 l1.175-1.174c4.561-4.563,8.326-14.374,0-22.7l-1.396-1.396l1.733-1.733c0.287-0.287,2.843-2.918,4.175-6.916 c1.872-5.615,0.39-11.222-4.174-15.786l-1.175-1.174C73.918,23.875,69.269,19.414,62.748,19.414z M29.672,43.677 c-6.027-6.026-1.045-11.758,0-12.83l1.173-1.174c1.969-1.969,3.96-2.926,6.087-2.926c3.698,0,6.729,2.912,6.744,2.926l1.379,1.38 L31.052,45.058L29.672,43.677z M37.222,73.605c-3.7,0-6.731-2.912-6.746-2.927l-1.172-1.171c-6.029-6.028-1.045-11.76,0-12.833 l11.258-11.258c0.123,0.183,0.262,0.356,0.422,0.518L54.049,59c0.161,0.16,0.336,0.299,0.518,0.422L43.309,70.681 C41.339,72.648,39.349,73.605,37.222,73.605z M70.327,56.323c6.028,6.027,1.045,11.758,0,12.83l-1.173,1.174 c-1.969,1.969-3.96,2.926-6.088,2.926c-3.698,0-6.729-2.911-6.744-2.926l-1.396-1.396l14.005-14.004L70.327,56.323z M70.666,43.324 L59.407,54.582c-0.124-0.183-0.262-0.356-0.423-0.517L45.919,40.999c-0.161-0.16-0.335-0.299-0.518-0.422l11.26-11.259 c1.969-1.969,3.959-2.925,6.086-2.925c3.699,0,6.73,2.911,6.744,2.926l1.174,1.173C76.693,36.521,71.711,42.251,70.666,43.324z"></path></svg>
@@ -0,0 +1,3 @@
1
+ # 0.1.0
2
+
3
+ Initial release of test_cookbook
@@ -0,0 +1,18 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'berkshelf'
4
+
5
+ # Uncomment these lines if you want to live on the Edge:
6
+ #
7
+ # group :development do
8
+ # gem "berkshelf", github: "berkshelf/berkshelf"
9
+ # gem "vagrant", github: "mitchellh/vagrant", tag: "v1.6.3"
10
+ # end
11
+ #
12
+ # group :plugins do
13
+ # gem "vagrant-berkshelf", github: "berkshelf/vagrant-berkshelf"
14
+ # gem "vagrant-omnibus", github: "schisamo/vagrant-omnibus"
15
+ # end
16
+
17
+ gem "test-kitchen"
18
+ gem "kitchen-vagrant"
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Jason Kulatunga
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,13 @@
1
+
2
+ test contenst
3
+ sd
4
+ f
5
+ sd
6
+ test PR 1sd
7
+ f
8
+ sdf
9
+ s
10
+ ds
11
+ f
12
+
13
+ touch
@@ -0,0 +1 @@
1
+ task :test
@@ -0,0 +1,12 @@
1
+ # encoding: utf-8
2
+
3
+ require 'bundler'
4
+ require 'bundler/setup'
5
+ require 'berkshelf/thor'
6
+
7
+ begin
8
+ require "kitchen/thor_tasks"
9
+ Kitchen::ThorTasks.new
10
+ rescue LoadError
11
+ puts ">>>>> Kitchen gem not loaded, omitting tasks" unless ENV["CI"]
12
+ end
@@ -0,0 +1,94 @@
1
+ # Put files/directories that should be ignored in this file when uploading
2
+ # or sharing to the community site.
3
+ # Lines that start with '# ' are comments.
4
+
5
+ # OS generated files #
6
+ ######################
7
+ .DS_Store
8
+ Icon?
9
+ nohup.out
10
+ ehthumbs.db
11
+ Thumbs.db
12
+
13
+ # SASS #
14
+ ########
15
+ .sass-cache
16
+
17
+ # EDITORS #
18
+ ###########
19
+ \#*
20
+ .#*
21
+ *~
22
+ *.sw[a-z]
23
+ *.bak
24
+ REVISION
25
+ TAGS*
26
+ tmtags
27
+ *_flymake.*
28
+ *_flymake
29
+ *.tmproj
30
+ .project
31
+ .settings
32
+ mkmf.log
33
+
34
+ ## COMPILED ##
35
+ ##############
36
+ a.out
37
+ *.o
38
+ *.pyc
39
+ *.so
40
+ *.com
41
+ *.class
42
+ *.dll
43
+ *.exe
44
+ */rdoc/
45
+
46
+ # Testing #
47
+ ###########
48
+ .watchr
49
+ .rspec
50
+ spec/*
51
+ spec/fixtures/*
52
+ test/*
53
+ features/*
54
+ Guardfile
55
+ Procfile
56
+
57
+ # SCM #
58
+ #######
59
+ .git
60
+ */.git
61
+ .gitignore
62
+ .gitmodules
63
+ .gitconfig
64
+ .gitattributes
65
+ .svn
66
+ */.bzr/*
67
+ */.hg/*
68
+ */.svn/*
69
+
70
+ # Berkshelf #
71
+ #############
72
+ cookbooks/*
73
+ tmp
74
+
75
+ # Cookbooks #
76
+ #############
77
+ CONTRIBUTING
78
+ CHANGELOG*
79
+
80
+ # Strainer #
81
+ ############
82
+ Colanderfile
83
+ Strainerfile
84
+ .colander
85
+ .strainer
86
+
87
+ # Vagrant #
88
+ ###########
89
+ .vagrant
90
+ Vagrantfile
91
+
92
+ # Travis #
93
+ ##########
94
+ .travis.yml
@@ -0,0 +1,5 @@
1
+ name 'cookbook_analogj_test'
2
+ license 'All rights reserved'
3
+ description 'Installs/Configures cookbook_analogj_test'
4
+ long_description 'Installs/Configures cookbook_analogj_test'
5
+ version '0.1.10'
@@ -0,0 +1,6 @@
1
+ #
2
+ # Cookbook Name:: test_cookbook
3
+ # Recipe:: default
4
+ # #
5
+ # All rights reserved - Do Not Redistribute
6
+ #
@@ -0,0 +1,4 @@
1
+ ---
2
+ npm_auth_token: sample_auth_token
3
+ source_github_access_token: sample_test_token
4
+ source: 'invalid'
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Jason Kulatunga
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,2 @@
1
+ # test_npm
2
+ Test npm package for use with capsulecd.
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "javascript_analogj_test",
3
+ "version": "1.0.0",
4
+ "description": "test javascript package for capsulecd",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\""
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/AnalogJ/javascript_analogj_test.git"
12
+ },
13
+ "author": "",
14
+ "license": "MIT",
15
+ "bugs": {
16
+ "url": "https://github.com/AnalogJ/javascript_analogj_test/issues"
17
+ },
18
+ "homepage": "https://github.com/AnalogJ/javascript_analogj_test#readme"
19
+ }
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Jason Kulatunga
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,2 @@
1
+ # test_npm
2
+ Test npm package for use with capsulecd.
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "npm_analogj_test",
3
+ "version": "1.0.8",
4
+ "description": "test javascript package for capsulecd",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\""
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/AnalogJ/npm_analogj_test.git"
12
+ },
13
+ "author": "",
14
+ "license": "MIT",
15
+ "bugs": {
16
+ "url": "https://github.com/AnalogJ/npm_analogj_test/issues"
17
+ },
18
+ "homepage": "https://github.com/AnalogJ/npm_analogj_test#readme"
19
+ }
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Jason Kulatunga
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ include README.md LICENSE requirements.txt VERSION
@@ -0,0 +1 @@
1
+ 1.0.6
@@ -0,0 +1,5 @@
1
+ [bdist_wheel]
2
+ # This flag says that the code is written to work on both Python 2 and Python
3
+ # 3. If at all possible, it is good practice to do this. If you cannot, you
4
+ # will need to generate wheels for each Python version that you support.
5
+ universal=1