capsulecd 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.coveralls.yml +2 -0
- data/.dockerignore +5 -0
- data/.gitignore +95 -0
- data/.rspec +3 -0
- data/.simplecov +9 -0
- data/Dockerfile +16 -0
- data/Dockerfile.chef +26 -0
- data/Dockerfile.javascript +7 -0
- data/Dockerfile.node +7 -0
- data/Dockerfile.python +7 -0
- data/Dockerfile.ruby +4 -0
- data/FEATURES.md +12 -0
- data/Gemfile +26 -0
- data/LICENSE.md +22 -0
- data/README.md +227 -0
- data/Rakefile +43 -0
- data/bin/capsulecd +4 -0
- data/capsulecd.gemspec +27 -0
- data/circle.yml +24 -0
- data/lib/capsulecd/base/common/git_utils.rb +90 -0
- data/lib/capsulecd/base/common/validation_utils.rb +22 -0
- data/lib/capsulecd/base/configuration.rb +151 -0
- data/lib/capsulecd/base/engine.rb +163 -0
- data/lib/capsulecd/base/runner/circleci.rb +37 -0
- data/lib/capsulecd/base/runner/default.rb +38 -0
- data/lib/capsulecd/base/source/github.rb +183 -0
- data/lib/capsulecd/base/transform_engine.rb +62 -0
- data/lib/capsulecd/chef/chef_engine.rb +172 -0
- data/lib/capsulecd/chef/chef_helper.rb +29 -0
- data/lib/capsulecd/cli.rb +64 -0
- data/lib/capsulecd/error.rb +51 -0
- data/lib/capsulecd/javascript/javascript_engine.rb +213 -0
- data/lib/capsulecd/node/node_engine.rb +141 -0
- data/lib/capsulecd/python/python_engine.rb +157 -0
- data/lib/capsulecd/ruby/ruby_engine.rb +191 -0
- data/lib/capsulecd/ruby/ruby_helper.rb +60 -0
- data/lib/capsulecd/version.rb +3 -0
- data/lib/capsulecd.rb +16 -0
- data/logo.svg +1 -0
- data/spec/fixtures/chef/cookbook_analogj_test/CHANGELOG.md +3 -0
- data/spec/fixtures/chef/cookbook_analogj_test/Gemfile +18 -0
- data/spec/fixtures/chef/cookbook_analogj_test/LICENSE +21 -0
- data/spec/fixtures/chef/cookbook_analogj_test/README.md +13 -0
- data/spec/fixtures/chef/cookbook_analogj_test/Rakefile +1 -0
- data/spec/fixtures/chef/cookbook_analogj_test/Thorfile +12 -0
- data/spec/fixtures/chef/cookbook_analogj_test/chefignore +94 -0
- data/spec/fixtures/chef/cookbook_analogj_test/metadata.rb +5 -0
- data/spec/fixtures/chef/cookbook_analogj_test/recipes/default.rb +6 -0
- data/spec/fixtures/incorrect_configuration.yml +4 -0
- data/spec/fixtures/javascript/javascript_analogj_test/LICENSE +21 -0
- data/spec/fixtures/javascript/javascript_analogj_test/README.md +2 -0
- data/spec/fixtures/javascript/javascript_analogj_test/package.json +19 -0
- data/spec/fixtures/node/npm_analogj_test/LICENSE +21 -0
- data/spec/fixtures/node/npm_analogj_test/README.md +2 -0
- data/spec/fixtures/node/npm_analogj_test/package.json +19 -0
- data/spec/fixtures/python/pip_analogj_test/LICENSE +21 -0
- data/spec/fixtures/python/pip_analogj_test/MANIFEST.in +1 -0
- data/spec/fixtures/python/pip_analogj_test/README.md +1 -0
- data/spec/fixtures/python/pip_analogj_test/VERSION +1 -0
- data/spec/fixtures/python/pip_analogj_test/setup.cfg +5 -0
- data/spec/fixtures/python/pip_analogj_test/setup.py +80 -0
- data/spec/fixtures/python/pip_analogj_test/tox.ini +14 -0
- data/spec/fixtures/ruby/gem_analogj_test/Gemfile +4 -0
- data/spec/fixtures/ruby/gem_analogj_test/LICENSE.txt +21 -0
- data/spec/fixtures/ruby/gem_analogj_test/README.md +41 -0
- data/spec/fixtures/ruby/gem_analogj_test/Rakefile +6 -0
- data/spec/fixtures/ruby/gem_analogj_test/bin/console +14 -0
- data/spec/fixtures/ruby/gem_analogj_test/bin/setup +8 -0
- data/spec/fixtures/ruby/gem_analogj_test/gem_analogj_test.gemspec +25 -0
- data/spec/fixtures/ruby/gem_analogj_test/lib/gem_analogj_test/version.rb +3 -0
- data/spec/fixtures/ruby/gem_analogj_test/lib/gem_analogj_test.rb +5 -0
- data/spec/fixtures/ruby/gem_analogj_test/spec/gem_analogj_test_spec.rb +7 -0
- data/spec/fixtures/ruby/gem_analogj_test/spec/spec_helper.rb +2 -0
- data/spec/fixtures/ruby/gem_analogj_test-0.1.4.gem +0 -0
- data/spec/fixtures/sample_chef_configuration.yml +8 -0
- data/spec/fixtures/sample_configuration.yml +7 -0
- data/spec/fixtures/sample_global_configuration.yml +23 -0
- data/spec/fixtures/sample_node_configuration.yml +7 -0
- data/spec/fixtures/sample_python_configuration.yml +8 -0
- data/spec/fixtures/sample_repo_configuration.yml +22 -0
- data/spec/fixtures/sample_ruby_configuration.yml +5 -0
- data/spec/fixtures/vcr_cassettes/chef_build_step.yml +636 -0
- data/spec/fixtures/vcr_cassettes/gem_build_step.yml +653 -0
- data/spec/fixtures/vcr_cassettes/gem_build_step_without_version_rb.yml +653 -0
- data/spec/fixtures/vcr_cassettes/integration_chef.yml +1399 -0
- data/spec/fixtures/vcr_cassettes/integration_node.yml +1388 -0
- data/spec/fixtures/vcr_cassettes/integration_python.yml +1388 -0
- data/spec/fixtures/vcr_cassettes/integration_ruby.yml +1377 -0
- data/spec/fixtures/vcr_cassettes/node_build_step.yml +647 -0
- data/spec/fixtures/vcr_cassettes/pip_build_step.yml +653 -0
- data/spec/lib/capsulecd/base/configuration_spec.rb +75 -0
- data/spec/lib/capsulecd/base/engine_spec.rb +51 -0
- data/spec/lib/capsulecd/base/source/github_spec.rb +253 -0
- data/spec/lib/capsulecd/base/transform_engine_spec.rb +55 -0
- data/spec/lib/capsulecd/chef/chef_engine_spec.rb +114 -0
- data/spec/lib/capsulecd/cli_spec.rb +57 -0
- data/spec/lib/capsulecd/node/node_engine_spec.rb +113 -0
- data/spec/lib/capsulecd/python/python_engine_spec.rb +118 -0
- data/spec/lib/capsulecd/ruby/ruby_engine_spec.rb +128 -0
- data/spec/spec_helper.rb +105 -0
- data/spec/support/file_system.rb +21 -0
- data/spec/support/package_types.rb +11 -0
- 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
|
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,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 @@
|
|
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,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,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,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
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
1.0.6
|