dry-dock 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/.dockerignore +6 -0
  3. data/.pryrc +1 -0
  4. data/.rspec +2 -0
  5. data/Dockerfile +69 -0
  6. data/Gemfile +20 -0
  7. data/Gemfile.lock +102 -0
  8. data/LICENSE +22 -0
  9. data/README.md +75 -0
  10. data/Rakefile +53 -0
  11. data/VERSION +1 -0
  12. data/bin/drydock +45 -0
  13. data/bin/json-test-consumer.rb +11 -0
  14. data/bin/json-test-producer.rb +25 -0
  15. data/bin/test-tar-writer-digest.rb +27 -0
  16. data/dry-dock.gemspec +135 -0
  17. data/examples/ruby-dsl.rb +14 -0
  18. data/examples/ruby-node-app-dsl.rb +128 -0
  19. data/examples/test-dsl.rb +9 -0
  20. data/examples/test.rb +46 -0
  21. data/lib/drydock/cli_flags.rb +46 -0
  22. data/lib/drydock/container_config.rb +75 -0
  23. data/lib/drydock/docker_api_patch.rb +176 -0
  24. data/lib/drydock/drydock.rb +65 -0
  25. data/lib/drydock/errors.rb +6 -0
  26. data/lib/drydock/file_manager.rb +26 -0
  27. data/lib/drydock/formatters.rb +13 -0
  28. data/lib/drydock/ignorefile_definition.rb +61 -0
  29. data/lib/drydock/image_repository.rb +50 -0
  30. data/lib/drydock/logger.rb +61 -0
  31. data/lib/drydock/object_caches/base.rb +24 -0
  32. data/lib/drydock/object_caches/filesystem_cache.rb +88 -0
  33. data/lib/drydock/object_caches/in_memory_cache.rb +52 -0
  34. data/lib/drydock/object_caches/no_cache.rb +38 -0
  35. data/lib/drydock/phase.rb +50 -0
  36. data/lib/drydock/phase_chain.rb +233 -0
  37. data/lib/drydock/plugins/apk.rb +31 -0
  38. data/lib/drydock/plugins/base.rb +15 -0
  39. data/lib/drydock/plugins/npm.rb +16 -0
  40. data/lib/drydock/plugins/package_manager.rb +30 -0
  41. data/lib/drydock/plugins/rubygems.rb +30 -0
  42. data/lib/drydock/project.rb +427 -0
  43. data/lib/drydock/runtime_options.rb +79 -0
  44. data/lib/drydock/stream_monitor.rb +54 -0
  45. data/lib/drydock/tar_writer.rb +36 -0
  46. data/lib/drydock.rb +35 -0
  47. data/spec/assets/MANIFEST +4 -0
  48. data/spec/assets/hello-world.txt +1 -0
  49. data/spec/assets/sample.tar +0 -0
  50. data/spec/assets/test.sh +3 -0
  51. data/spec/drydock/cli_flags_spec.rb +38 -0
  52. data/spec/drydock/container_config_spec.rb +230 -0
  53. data/spec/drydock/docker_api_patch_spec.rb +103 -0
  54. data/spec/drydock/drydock_spec.rb +25 -0
  55. data/spec/drydock/file_manager_spec.rb +53 -0
  56. data/spec/drydock/formatters_spec.rb +26 -0
  57. data/spec/drydock/ignorefile_definition_spec.rb +123 -0
  58. data/spec/drydock/image_repository_spec.rb +54 -0
  59. data/spec/drydock/object_caches/base_spec.rb +28 -0
  60. data/spec/drydock/object_caches/filesystem_cache_spec.rb +48 -0
  61. data/spec/drydock/object_caches/no_cache_spec.rb +62 -0
  62. data/spec/drydock/phase_chain_spec.rb +118 -0
  63. data/spec/drydock/phase_spec.rb +67 -0
  64. data/spec/drydock/plugins/apk_spec.rb +49 -0
  65. data/spec/drydock/plugins/base_spec.rb +13 -0
  66. data/spec/drydock/plugins/npm_spec.rb +26 -0
  67. data/spec/drydock/plugins/package_manager_spec.rb +12 -0
  68. data/spec/drydock/plugins/rubygems_spec.rb +53 -0
  69. data/spec/drydock/project_import_spec.rb +39 -0
  70. data/spec/drydock/project_spec.rb +156 -0
  71. data/spec/drydock/runtime_options_spec.rb +31 -0
  72. data/spec/drydock/stream_monitor_spec.rb +41 -0
  73. data/spec/drydock/tar_writer_spec.rb +27 -0
  74. data/spec/spec_helper.rb +47 -0
  75. data/spec/support/shared_examples/base_class.rb +3 -0
  76. data/spec/support/shared_examples/container_config.rb +12 -0
  77. data/spec/support/shared_examples/drydockfile.rb +6 -0
  78. metadata +223 -0
@@ -0,0 +1,27 @@
1
+
2
+ RSpec.describe Drydock::TarWriter do
3
+
4
+ describe '#add_entry' do
5
+
6
+ let(:buffer) { StringIO.new('') }
7
+
8
+ let(:some_time) { 1420070400 } # Jan 1, 2015 00:00:00 GMT
9
+ let(:file1) { {name: 'test_file', contents: 'So Much Wow!', mode: 0640, mtime: Time.at(some_time)} }
10
+ let(:file2) { {name: 'some_file', contents: "#!/bin/sh\n", mode: 0755, mtime: Time.at(some_time)} }
11
+
12
+ it 'creates the correct tar stream containing the correct files' do
13
+ described_class.new(buffer) do |tar|
14
+ [file1, file2].each do |file|
15
+ tar.add_entry(file[:name], mode: file[:mode], mtime: file[:mtime]) do |stream|
16
+ stream.write(file[:contents])
17
+ end
18
+ end
19
+ end
20
+
21
+ buffer.rewind
22
+ expect(buffer.string).to eq(File.read('spec/assets/sample.tar'))
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,47 @@
1
+
2
+ require 'bundler'
3
+ require 'rspec/collection_matchers'
4
+ require 'rake'
5
+ require 'pp'
6
+ require 'fakefs/spec_helpers'
7
+ require 'simplecov'
8
+ require 'simplecov-rcov'
9
+
10
+ unless ENV.key?('RCOV')
11
+ SimpleCov.start {
12
+ add_filter '/vendor/'
13
+ add_filter '/spec/'
14
+ }
15
+ end
16
+
17
+ Dir['./spec/support/**/*.rb'].each { |file| require file }
18
+
19
+ require_relative '../lib/drydock'
20
+
21
+ RSpec.configure do |config|
22
+ SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
23
+
24
+ if ENV.key?('RSPEC_DEBUG')
25
+ Drydock.logger = Drydock::Logger.new(STDOUT).tap do |l|
26
+ l.level = ::Logger::DEBUG
27
+ l.formatter = Drydock::Formatter.new
28
+ end
29
+ end
30
+
31
+ if config.files_to_run.one?
32
+ config.default_formatter = 'doc'
33
+ end
34
+
35
+ config.order = :random
36
+ Kernel.srand config.seed
37
+
38
+ config.expect_with :rspec do |expectations|
39
+ # Enable only the newer, non-monkey-patching expect syntax.
40
+ expectations.syntax = :expect
41
+ end
42
+
43
+ config.mock_with :rspec do |mocks|
44
+ mocks.syntax = :expect
45
+ mocks.verify_partial_doubles = true
46
+ end
47
+ end
@@ -0,0 +1,3 @@
1
+
2
+ RSpec.shared_examples_for 'a base class' do
3
+ end
@@ -0,0 +1,12 @@
1
+
2
+ RSpec.shared_examples_for 'the same configs' do
3
+ it 'are equal' do
4
+ expect(described_class.from(config1)).to eq(described_class.from(config2))
5
+ end
6
+ end
7
+
8
+ RSpec.shared_examples_for 'different configs' do
9
+ it 'are different' do
10
+ expect(described_class.from(config1)).not_to eq(described_class.from(config2))
11
+ end
12
+ end
@@ -0,0 +1,6 @@
1
+
2
+ RSpec.shared_examples_for 'a Drydockfile' do
3
+ it do
4
+ expect { described_class.build(opts) { [script, 'Drydockfile'] } }.not_to raise_error
5
+ end
6
+ end
metadata ADDED
@@ -0,0 +1,223 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dry-dock
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ripta Pasay
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: docker-api
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.22'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.22'
27
+ - !ruby/object:Gem::Dependency
28
+ name: excon
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.45'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.45'
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.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: jeweler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.0'
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.10'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.10'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.9'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.9'
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov-rcov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.2'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.2'
111
+ description: A Dockerfile-replacement DSL for building complex images
112
+ email: github@r8y.org
113
+ executables:
114
+ - drydock
115
+ - json-test-consumer.rb
116
+ - json-test-producer.rb
117
+ - test-tar-writer-digest.rb
118
+ extensions: []
119
+ extra_rdoc_files:
120
+ - LICENSE
121
+ - README.md
122
+ files:
123
+ - ".dockerignore"
124
+ - ".pryrc"
125
+ - ".rspec"
126
+ - Dockerfile
127
+ - Gemfile
128
+ - Gemfile.lock
129
+ - LICENSE
130
+ - README.md
131
+ - Rakefile
132
+ - VERSION
133
+ - bin/drydock
134
+ - bin/json-test-consumer.rb
135
+ - bin/json-test-producer.rb
136
+ - bin/test-tar-writer-digest.rb
137
+ - dry-dock.gemspec
138
+ - examples/ruby-dsl.rb
139
+ - examples/ruby-node-app-dsl.rb
140
+ - examples/test-dsl.rb
141
+ - examples/test.rb
142
+ - lib/drydock.rb
143
+ - lib/drydock/cli_flags.rb
144
+ - lib/drydock/container_config.rb
145
+ - lib/drydock/docker_api_patch.rb
146
+ - lib/drydock/drydock.rb
147
+ - lib/drydock/errors.rb
148
+ - lib/drydock/file_manager.rb
149
+ - lib/drydock/formatters.rb
150
+ - lib/drydock/ignorefile_definition.rb
151
+ - lib/drydock/image_repository.rb
152
+ - lib/drydock/logger.rb
153
+ - lib/drydock/object_caches/base.rb
154
+ - lib/drydock/object_caches/filesystem_cache.rb
155
+ - lib/drydock/object_caches/in_memory_cache.rb
156
+ - lib/drydock/object_caches/no_cache.rb
157
+ - lib/drydock/phase.rb
158
+ - lib/drydock/phase_chain.rb
159
+ - lib/drydock/plugins/apk.rb
160
+ - lib/drydock/plugins/base.rb
161
+ - lib/drydock/plugins/npm.rb
162
+ - lib/drydock/plugins/package_manager.rb
163
+ - lib/drydock/plugins/rubygems.rb
164
+ - lib/drydock/project.rb
165
+ - lib/drydock/runtime_options.rb
166
+ - lib/drydock/stream_monitor.rb
167
+ - lib/drydock/tar_writer.rb
168
+ - spec/assets/MANIFEST
169
+ - spec/assets/hello-world.txt
170
+ - spec/assets/sample.tar
171
+ - spec/assets/test.sh
172
+ - spec/drydock/cli_flags_spec.rb
173
+ - spec/drydock/container_config_spec.rb
174
+ - spec/drydock/docker_api_patch_spec.rb
175
+ - spec/drydock/drydock_spec.rb
176
+ - spec/drydock/file_manager_spec.rb
177
+ - spec/drydock/formatters_spec.rb
178
+ - spec/drydock/ignorefile_definition_spec.rb
179
+ - spec/drydock/image_repository_spec.rb
180
+ - spec/drydock/object_caches/base_spec.rb
181
+ - spec/drydock/object_caches/filesystem_cache_spec.rb
182
+ - spec/drydock/object_caches/no_cache_spec.rb
183
+ - spec/drydock/phase_chain_spec.rb
184
+ - spec/drydock/phase_spec.rb
185
+ - spec/drydock/plugins/apk_spec.rb
186
+ - spec/drydock/plugins/base_spec.rb
187
+ - spec/drydock/plugins/npm_spec.rb
188
+ - spec/drydock/plugins/package_manager_spec.rb
189
+ - spec/drydock/plugins/rubygems_spec.rb
190
+ - spec/drydock/project_import_spec.rb
191
+ - spec/drydock/project_spec.rb
192
+ - spec/drydock/runtime_options_spec.rb
193
+ - spec/drydock/stream_monitor_spec.rb
194
+ - spec/drydock/tar_writer_spec.rb
195
+ - spec/spec_helper.rb
196
+ - spec/support/shared_examples/base_class.rb
197
+ - spec/support/shared_examples/container_config.rb
198
+ - spec/support/shared_examples/drydockfile.rb
199
+ homepage: http://github.com/ripta/drydock
200
+ licenses:
201
+ - MIT
202
+ metadata: {}
203
+ post_install_message:
204
+ rdoc_options: []
205
+ require_paths:
206
+ - lib
207
+ required_ruby_version: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - ">="
210
+ - !ruby/object:Gem::Version
211
+ version: '0'
212
+ required_rubygems_version: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ requirements: []
218
+ rubyforge_project:
219
+ rubygems_version: 2.2.2
220
+ signing_key:
221
+ specification_version: 4
222
+ summary: Docker Image Pipeline DSL
223
+ test_files: []