kuby-core 0.11.14 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -0
  3. data/Gemfile +2 -2
  4. data/README.md +2 -1
  5. data/bin/kuby +2 -0
  6. data/kuby-core.gemspec +2 -2
  7. data/lib/kuby/basic_logger.rb +1 -1
  8. data/lib/kuby/cli_base.rb +9 -4
  9. data/lib/kuby/commands.rb +16 -69
  10. data/lib/kuby/docker/alpine.rb +2 -1
  11. data/lib/kuby/docker/app_image.rb +19 -0
  12. data/lib/kuby/docker/bundler_phase.rb +9 -3
  13. data/lib/kuby/docker/cli.rb +4 -12
  14. data/lib/kuby/docker/docker_uri.rb +18 -7
  15. data/lib/kuby/docker/errors.rb +1 -19
  16. data/lib/kuby/docker/image.rb +115 -0
  17. data/lib/kuby/docker/layer.rb +0 -7
  18. data/lib/kuby/docker/local_tags.rb +9 -10
  19. data/lib/kuby/docker/package_phase.rb +0 -5
  20. data/lib/kuby/docker/packages.rb +1 -0
  21. data/lib/kuby/docker/remote_tags.rb +10 -5
  22. data/lib/kuby/docker/setup_phase.rb +17 -9
  23. data/lib/kuby/docker/spec.rb +29 -62
  24. data/lib/kuby/docker/timestamp_tag.rb +8 -1
  25. data/lib/kuby/docker/timestamped_image.rb +113 -0
  26. data/lib/kuby/docker/yarn_phase.rb +2 -2
  27. data/lib/kuby/docker.rb +27 -25
  28. data/lib/kuby/environment.rb +1 -10
  29. data/lib/kuby/kubernetes/bare_metal_provider.rb +53 -0
  30. data/lib/kuby/kubernetes/deployer.rb +2 -1
  31. data/lib/kuby/kubernetes/docker_desktop_provider.rb +0 -15
  32. data/lib/kuby/kubernetes/spec.rb +21 -17
  33. data/lib/kuby/kubernetes.rb +1 -0
  34. data/lib/kuby/plugin.rb +2 -2
  35. data/lib/kuby/plugins/rails_app/assets.rb +60 -70
  36. data/lib/kuby/plugins/rails_app/assets_image.rb +55 -0
  37. data/lib/kuby/plugins/rails_app/plugin.rb +54 -213
  38. data/lib/kuby/plugins/rails_app.rb +1 -0
  39. data/lib/kuby/tasks.rb +30 -69
  40. data/lib/kuby/version.rb +1 -1
  41. data/lib/kuby.rb +3 -20
  42. data/spec/docker/spec_spec.rb +21 -118
  43. data/spec/docker/timestamped_image_spec.rb +123 -0
  44. data/spec/spec_helper.rb +10 -11
  45. metadata +11 -14
  46. data/lib/kuby/dev_setup.rb +0 -346
  47. data/lib/kuby/docker/dev_spec.rb +0 -202
  48. data/lib/kuby/docker/metadata.rb +0 -90
  49. data/lib/kuby/docker/tags.rb +0 -92
  50. data/lib/kuby/rails_commands.rb +0 -84
  51. data/spec/docker/metadata_spec.rb +0 -73
  52. data/spec/dummy/Gemfile.lock +0 -223
  53. data/spec/dummy/config/master.key +0 -1
  54. data/spec/dummy/tmp/cache/bootsnap-load-path-cache +0 -0
@@ -1,84 +0,0 @@
1
- # typed: true
2
- module Kuby
3
- class Args
4
- attr_reader :args, :flag_aliases
5
-
6
- def initialize(args, flag_aliases = [])
7
- @args = args
8
- @flag_aliases = flag_aliases
9
- end
10
-
11
- def [](flag)
12
- idx = find_arg_index(flag)
13
- idx ? args[idx] : nil
14
- end
15
-
16
- def []=(flag, new_value)
17
- idx = find_arg_index(flag)
18
-
19
- if idx
20
- args[idx] = new_value
21
- else
22
- @args += [flag, new_value]
23
- end
24
- end
25
-
26
- private
27
-
28
- def find_arg_index(flag)
29
- idx = args.find_index do |arg|
30
- flag_aliases.any? { |fas| fas.include?(arg) && fas.include?(flag) }
31
- end
32
-
33
- idx ? idx + 1 : nil
34
- end
35
- end
36
-
37
- class RailsCommands
38
- PREFIX = %w(bundle exec).freeze
39
- SERVER_ARG_ALIASES = [['--binding', '-b'], ['-p', '--port']].freeze
40
-
41
- class << self
42
- def run(args = ARGV)
43
- command = args[0]
44
-
45
- if command == 'rails'
46
- subcommand = args[1]
47
- arglist = nil
48
-
49
- case subcommand
50
- when 'server', 's'
51
- arglist = Args.new([*PREFIX, *args], SERVER_ARG_ALIASES)
52
- arglist['-b'] ||= '0.0.0.0'
53
- arglist['-p'] ||= '3000'
54
- end
55
- end
56
-
57
- setup
58
-
59
- arglist ||= Args.new([*PREFIX, *args])
60
- tasks = Kuby::Tasks.new(environment)
61
- tasks.remote_exec(arglist.args)
62
- end
63
-
64
- private
65
-
66
- def setup
67
- require 'kuby'
68
- Kuby.load!
69
- end
70
-
71
- def kubernetes_cli
72
- kubernetes.provider.kubernetes.cli
73
- end
74
-
75
- def kubernetes
76
- environment.kubernetes
77
- end
78
-
79
- def environment
80
- Kuby.definition.environment
81
- end
82
- end
83
- end
84
- end
@@ -1,73 +0,0 @@
1
- # typed: false
2
- require 'spec_helper'
3
- require 'timecop'
4
-
5
- describe Kuby::Docker::Metadata do
6
- let(:metadata) { definition.environment.docker.metadata }
7
-
8
- describe '#image_url' do
9
- subject { metadata.image_url }
10
-
11
- it { is_expected.to eq(docker_image_url) }
12
-
13
- context 'when no image URL is configured' do
14
- let(:docker_image_url) { nil }
15
- it { is_expected.to eq(definition.app_name) }
16
- end
17
- end
18
-
19
- describe '#image_host' do
20
- subject { metadata.image_host }
21
-
22
- it { is_expected.to eq("#{Kuby::Docker::DockerURI::DEFAULT_REGISTRY_HOST}:443") }
23
-
24
- context 'when the image URL contains an explicit host' do
25
- let(:docker_image_url) { 'registry.foo.com/foo/testapp' }
26
-
27
- it { is_expected.to eq('registry.foo.com:443') }
28
- end
29
-
30
- context 'when the image URL contains an explicit host' do
31
- let(:docker_image_url) { 'http://registry.foo.com/foo/testapp' }
32
-
33
- it { is_expected.to eq('registry.foo.com:443') }
34
- end
35
- end
36
-
37
- describe '#image_repo' do
38
- subject { metadata.image_repo }
39
-
40
- it { is_expected.to eq('foo/testapp') }
41
-
42
- context 'when the image URL contains an explicit host' do
43
- let(:docker_image_url) { 'registry.foo.com/foo/testapp' }
44
-
45
- it { is_expected.to eq('foo/testapp') }
46
- end
47
- end
48
-
49
- describe '#tags' do
50
- subject { metadata.tags }
51
-
52
- it 'specifies the current timestamp tag and the default tag' do
53
- Timecop.freeze do
54
- expect(subject).to eq([
55
- Time.now.strftime('%Y%m%d%H%M%S'),
56
- Kuby::Docker::Metadata::LATEST_TAG
57
- ])
58
- end
59
- end
60
- end
61
-
62
- describe '#distro' do
63
- subject { metadata.distro }
64
-
65
- it { is_expected.to eq(Kuby::Docker::Metadata::DEFAULT_DISTRO) }
66
-
67
- context 'with a distro set manually' do
68
- before { metadata.distro = :alpine }
69
-
70
- it { is_expected.to eq(:alpine) }
71
- end
72
- end
73
- end
@@ -1,223 +0,0 @@
1
- GEM
2
- remote: https://rubygems.org/
3
- specs:
4
- actioncable (6.0.3.2)
5
- actionpack (= 6.0.3.2)
6
- nio4r (~> 2.0)
7
- websocket-driver (>= 0.6.1)
8
- actionmailbox (6.0.3.2)
9
- actionpack (= 6.0.3.2)
10
- activejob (= 6.0.3.2)
11
- activerecord (= 6.0.3.2)
12
- activestorage (= 6.0.3.2)
13
- activesupport (= 6.0.3.2)
14
- mail (>= 2.7.1)
15
- actionmailer (6.0.3.2)
16
- actionpack (= 6.0.3.2)
17
- actionview (= 6.0.3.2)
18
- activejob (= 6.0.3.2)
19
- mail (~> 2.5, >= 2.5.4)
20
- rails-dom-testing (~> 2.0)
21
- actionpack (6.0.3.2)
22
- actionview (= 6.0.3.2)
23
- activesupport (= 6.0.3.2)
24
- rack (~> 2.0, >= 2.0.8)
25
- rack-test (>= 0.6.3)
26
- rails-dom-testing (~> 2.0)
27
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
28
- actiontext (6.0.3.2)
29
- actionpack (= 6.0.3.2)
30
- activerecord (= 6.0.3.2)
31
- activestorage (= 6.0.3.2)
32
- activesupport (= 6.0.3.2)
33
- nokogiri (>= 1.8.5)
34
- actionview (6.0.3.2)
35
- activesupport (= 6.0.3.2)
36
- builder (~> 3.1)
37
- erubi (~> 1.4)
38
- rails-dom-testing (~> 2.0)
39
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
40
- activejob (6.0.3.2)
41
- activesupport (= 6.0.3.2)
42
- globalid (>= 0.3.6)
43
- activemodel (6.0.3.2)
44
- activesupport (= 6.0.3.2)
45
- activerecord (6.0.3.2)
46
- activemodel (= 6.0.3.2)
47
- activesupport (= 6.0.3.2)
48
- activestorage (6.0.3.2)
49
- actionpack (= 6.0.3.2)
50
- activejob (= 6.0.3.2)
51
- activerecord (= 6.0.3.2)
52
- marcel (~> 0.3.1)
53
- activesupport (6.0.3.2)
54
- concurrent-ruby (~> 1.0, >= 1.0.2)
55
- i18n (>= 0.7, < 2)
56
- minitest (~> 5.1)
57
- tzinfo (~> 1.1)
58
- zeitwerk (~> 2.2, >= 2.2.2)
59
- addressable (2.7.0)
60
- public_suffix (>= 2.0.2, < 5.0)
61
- bindex (0.8.1)
62
- bootsnap (1.4.8)
63
- msgpack (~> 1.0)
64
- builder (3.2.4)
65
- byebug (11.1.3)
66
- capybara (3.33.0)
67
- addressable
68
- mini_mime (>= 0.1.3)
69
- nokogiri (~> 1.8)
70
- rack (>= 1.6.0)
71
- rack-test (>= 0.6.3)
72
- regexp_parser (~> 1.5)
73
- xpath (~> 3.2)
74
- childprocess (3.0.0)
75
- concurrent-ruby (1.1.7)
76
- crass (1.0.6)
77
- erubi (1.9.0)
78
- ffi (1.13.1)
79
- globalid (0.4.2)
80
- activesupport (>= 4.2.0)
81
- i18n (1.8.5)
82
- concurrent-ruby (~> 1.0)
83
- jbuilder (2.10.0)
84
- activesupport (>= 5.0.0)
85
- listen (3.2.1)
86
- rb-fsevent (~> 0.10, >= 0.10.3)
87
- rb-inotify (~> 0.9, >= 0.9.10)
88
- loofah (2.7.0)
89
- crass (~> 1.0.2)
90
- nokogiri (>= 1.5.9)
91
- mail (2.7.1)
92
- mini_mime (>= 0.1.1)
93
- marcel (0.3.3)
94
- mimemagic (~> 0.3.2)
95
- method_source (1.0.0)
96
- mimemagic (0.3.5)
97
- mini_mime (1.0.2)
98
- mini_portile2 (2.4.0)
99
- minitest (5.14.1)
100
- msgpack (1.3.3)
101
- nio4r (2.5.2)
102
- nokogiri (1.10.10)
103
- mini_portile2 (~> 2.4.0)
104
- public_suffix (4.0.5)
105
- puma (4.3.5)
106
- nio4r (~> 2.0)
107
- rack (2.2.3)
108
- rack-proxy (0.6.5)
109
- rack
110
- rack-test (1.1.0)
111
- rack (>= 1.0, < 3)
112
- rails (6.0.3.2)
113
- actioncable (= 6.0.3.2)
114
- actionmailbox (= 6.0.3.2)
115
- actionmailer (= 6.0.3.2)
116
- actionpack (= 6.0.3.2)
117
- actiontext (= 6.0.3.2)
118
- actionview (= 6.0.3.2)
119
- activejob (= 6.0.3.2)
120
- activemodel (= 6.0.3.2)
121
- activerecord (= 6.0.3.2)
122
- activestorage (= 6.0.3.2)
123
- activesupport (= 6.0.3.2)
124
- bundler (>= 1.3.0)
125
- railties (= 6.0.3.2)
126
- sprockets-rails (>= 2.0.0)
127
- rails-dom-testing (2.0.3)
128
- activesupport (>= 4.2.0)
129
- nokogiri (>= 1.6)
130
- rails-html-sanitizer (1.3.0)
131
- loofah (~> 2.3)
132
- railties (6.0.3.2)
133
- actionpack (= 6.0.3.2)
134
- activesupport (= 6.0.3.2)
135
- method_source
136
- rake (>= 0.8.7)
137
- thor (>= 0.20.3, < 2.0)
138
- rake (13.0.1)
139
- rb-fsevent (0.10.4)
140
- rb-inotify (0.10.1)
141
- ffi (~> 1.0)
142
- regexp_parser (1.7.1)
143
- rubyzip (2.3.0)
144
- sass-rails (6.0.0)
145
- sassc-rails (~> 2.1, >= 2.1.1)
146
- sassc (2.4.0)
147
- ffi (~> 1.9)
148
- sassc-rails (2.1.2)
149
- railties (>= 4.0.0)
150
- sassc (>= 2.0)
151
- sprockets (> 3.0)
152
- sprockets-rails
153
- tilt
154
- selenium-webdriver (3.142.7)
155
- childprocess (>= 0.5, < 4.0)
156
- rubyzip (>= 1.2.2)
157
- spring (2.1.1)
158
- spring-watcher-listen (2.0.1)
159
- listen (>= 2.7, < 4.0)
160
- spring (>= 1.2, < 3.0)
161
- sprockets (4.0.2)
162
- concurrent-ruby (~> 1.0)
163
- rack (> 1, < 3)
164
- sprockets-rails (3.2.1)
165
- actionpack (>= 4.0)
166
- activesupport (>= 4.0)
167
- sprockets (>= 3.0.0)
168
- sqlite3 (1.4.2)
169
- thor (1.0.1)
170
- thread_safe (0.3.6)
171
- tilt (2.0.10)
172
- turbolinks (5.2.1)
173
- turbolinks-source (~> 5.2)
174
- turbolinks-source (5.2.0)
175
- tzinfo (1.2.7)
176
- thread_safe (~> 0.1)
177
- web-console (4.0.4)
178
- actionview (>= 6.0.0)
179
- activemodel (>= 6.0.0)
180
- bindex (>= 0.4.0)
181
- railties (>= 6.0.0)
182
- webdrivers (4.4.1)
183
- nokogiri (~> 1.6)
184
- rubyzip (>= 1.3.0)
185
- selenium-webdriver (>= 3.0, < 4.0)
186
- webpacker (4.3.0)
187
- activesupport (>= 4.2)
188
- rack-proxy (>= 0.6.1)
189
- railties (>= 4.2)
190
- websocket-driver (0.7.3)
191
- websocket-extensions (>= 0.1.0)
192
- websocket-extensions (0.1.5)
193
- xpath (3.2.0)
194
- nokogiri (~> 1.8)
195
- zeitwerk (2.4.0)
196
-
197
- PLATFORMS
198
- ruby
199
-
200
- DEPENDENCIES
201
- bootsnap (>= 1.4.2)
202
- byebug
203
- capybara (>= 2.15)
204
- jbuilder (~> 2.7)
205
- listen (~> 3.2)
206
- puma (~> 4.1)
207
- rails (~> 6.0.3, >= 6.0.3.2)
208
- sass-rails (>= 6)
209
- selenium-webdriver
210
- spring
211
- spring-watcher-listen (~> 2.0.0)
212
- sqlite3 (~> 1.4)
213
- turbolinks (~> 5)
214
- tzinfo-data
215
- web-console (>= 3.3.0)
216
- webdrivers
217
- webpacker (~> 4.0)
218
-
219
- RUBY VERSION
220
- ruby 2.5.8p224
221
-
222
- BUNDLED WITH
223
- 2.1.4
@@ -1 +0,0 @@
1
- e02c0a6ae84e2533f0f5a02962d0ac35