kuby-core 0.11.14 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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