yu 0.1.5 → 0.1.6
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.
- checksums.yaml +4 -4
- data/lib/templates/ruby_base/.env.erb +2 -0
- data/lib/templates/ruby_base/Dockerfile +14 -0
- data/lib/templates/ruby_base/Gemfile +6 -0
- data/lib/templates/ruby_base/Gemfile.lock +31 -0
- data/lib/templates/ruby_base/_docker-compose.yml.erb +6 -0
- data/lib/templates/ruby_base/bin/run +8 -0
- data/lib/templates/ruby_base/bin/test +2 -0
- data/lib/templates/ruby_base/config/env.rb +2 -0
- data/lib/templates/ruby_base/service.rb.erb +12 -0
- data/lib/templates/ruby_base/spec/spec_helper.rb +12 -0
- data/lib/yu/version.rb +1 -1
- data/lib/yu.rb +58 -0
- metadata +11 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c10a73d66a86ec7e08c340efeea2be959c75ef1a
|
4
|
+
data.tar.gz: 648cdd1f69b19247bddcde521136bce10e53a469
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91a40197ae9e0b86a9b10e1a62dc40c94974767afac9a358d2473b7dcf0da9a5c097c55973dcd12a86ca070f9e39b874324c48fe2669a21dc48ddde8d95d49ad
|
7
|
+
data.tar.gz: d0851fa91ff16a6daba2a3a6e51bcb519bfa10336d9d98c54913696bdd210366700e0fdf06bb90f652fc6741df6b2ce0e0b78ea03bb812955e52aaeee8d63a94
|
@@ -0,0 +1,14 @@
|
|
1
|
+
FROM ruby:latest
|
2
|
+
|
3
|
+
# Install build dependencies:
|
4
|
+
# RUN yum groupinstall -y development
|
5
|
+
|
6
|
+
WORKDIR /tmp
|
7
|
+
COPY Gemfile /tmp/Gemfile
|
8
|
+
COPY Gemfile.lock /tmp/Gemfile.lock
|
9
|
+
ADD ./vendor/cache /tmp/vendor/cache
|
10
|
+
|
11
|
+
RUN bundle install --local --no-cache
|
12
|
+
|
13
|
+
ADD ./ /app
|
14
|
+
WORKDIR /app
|
@@ -0,0 +1,31 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
coderay (1.1.0)
|
5
|
+
diff-lcs (1.2.5)
|
6
|
+
method_source (0.8.2)
|
7
|
+
pry (0.10.1)
|
8
|
+
coderay (~> 1.1.0)
|
9
|
+
method_source (~> 0.8.1)
|
10
|
+
slop (~> 3.4)
|
11
|
+
rspec (3.2.0)
|
12
|
+
rspec-core (~> 3.2.0)
|
13
|
+
rspec-expectations (~> 3.2.0)
|
14
|
+
rspec-mocks (~> 3.2.0)
|
15
|
+
rspec-core (3.2.3)
|
16
|
+
rspec-support (~> 3.2.0)
|
17
|
+
rspec-expectations (3.2.1)
|
18
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
19
|
+
rspec-support (~> 3.2.0)
|
20
|
+
rspec-mocks (3.2.1)
|
21
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
22
|
+
rspec-support (~> 3.2.0)
|
23
|
+
rspec-support (3.2.2)
|
24
|
+
slop (3.6.0)
|
25
|
+
|
26
|
+
PLATFORMS
|
27
|
+
ruby
|
28
|
+
|
29
|
+
DEPENDENCIES
|
30
|
+
pry
|
31
|
+
rspec
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require_relative '../config/env'
|
2
|
+
require 'pry'
|
3
|
+
|
4
|
+
RSpec.configure do |config|
|
5
|
+
config.expect_with :rspec do |expectations|
|
6
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
7
|
+
end
|
8
|
+
|
9
|
+
config.mock_with :rspec do |mocks|
|
10
|
+
mocks.verify_partial_doubles = true
|
11
|
+
end
|
12
|
+
end
|
data/lib/yu/version.rb
CHANGED
data/lib/yu.rb
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'erb'
|
3
|
+
require 'ostruct'
|
4
|
+
|
1
5
|
require 'yu/version'
|
2
6
|
require 'commander'
|
3
7
|
|
@@ -64,6 +68,12 @@ module Yu
|
|
64
68
|
c.action(method(:recreate))
|
65
69
|
end
|
66
70
|
|
71
|
+
command :service do |c|
|
72
|
+
c.syntax = 'yu service'
|
73
|
+
c.description = 'Create service from template'
|
74
|
+
c.action(method(:service))
|
75
|
+
end
|
76
|
+
|
67
77
|
global_option('-V', '--verbose', 'Verbose output') { $verbose_mode = true }
|
68
78
|
|
69
79
|
run!
|
@@ -164,6 +174,54 @@ module Yu
|
|
164
174
|
run_command "docker-compose up -d #{service_list}"
|
165
175
|
end
|
166
176
|
|
177
|
+
def service(args, options)
|
178
|
+
service_names = args.map(&method(:normalise_service_name_from_dir))
|
179
|
+
existing_services = get_existing_services(service_names)
|
180
|
+
if existing_services.any?
|
181
|
+
info "The following services already exist in the project: #{existing_services.join(', ')}"
|
182
|
+
else
|
183
|
+
service_names.each do |service_name|
|
184
|
+
copy_template_into_dir(service_name: service_name)
|
185
|
+
render_and_remove_erb_files(service_name: service_name)
|
186
|
+
append_partial_to_docker_compose_yml(service_name)
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
def get_existing_services(service_names)
|
192
|
+
service_names.select { |service_name| Pathname(service_name).exist? }
|
193
|
+
end
|
194
|
+
|
195
|
+
def copy_template_into_dir(service_name:)
|
196
|
+
run_command("cp -aR #{template_dir} #{service_name}")
|
197
|
+
end
|
198
|
+
|
199
|
+
def render_and_remove_erb_files(options)
|
200
|
+
service_name = options.fetch(:service_name)
|
201
|
+
template_context = OpenStruct.new(options).instance_eval { binding }
|
202
|
+
|
203
|
+
Dir.glob("#{service_name}/**/{*,.*}.erb").each do |erb_file_path|
|
204
|
+
template_string = File.read(erb_file_path)
|
205
|
+
template = ERB.new(template_string)
|
206
|
+
rendered_content = template.result(template_context)
|
207
|
+
target_file_path = erb_file_path.match(/(.*)\.erb$/)[1]
|
208
|
+
|
209
|
+
File.write(target_file_path, rendered_content)
|
210
|
+
run_command "rm #{erb_file_path}"
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
def append_partial_to_docker_compose_yml(service_name)
|
215
|
+
partial_path = "#{service_name}/_docker-compose.yml"
|
216
|
+
run_command "cat #{partial_path} >> docker-compose.yml"
|
217
|
+
run_command "rm #{partial_path}"
|
218
|
+
end
|
219
|
+
|
220
|
+
def template_dir
|
221
|
+
relative_path = Pathname(__FILE__).dirname + "templates/ruby_base"
|
222
|
+
relative_path.realpath
|
223
|
+
end
|
224
|
+
|
167
225
|
def run_command(command, showing_output: true, exit_on_failure: true)
|
168
226
|
unless showing_output || verbose_mode?
|
169
227
|
command = "#{command} &>/dev/null"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Kelly
|
@@ -83,6 +83,16 @@ files:
|
|
83
83
|
- bin/console
|
84
84
|
- bin/setup
|
85
85
|
- exe/yu
|
86
|
+
- lib/templates/ruby_base/.env.erb
|
87
|
+
- lib/templates/ruby_base/Dockerfile
|
88
|
+
- lib/templates/ruby_base/Gemfile
|
89
|
+
- lib/templates/ruby_base/Gemfile.lock
|
90
|
+
- lib/templates/ruby_base/_docker-compose.yml.erb
|
91
|
+
- lib/templates/ruby_base/bin/run
|
92
|
+
- lib/templates/ruby_base/bin/test
|
93
|
+
- lib/templates/ruby_base/config/env.rb
|
94
|
+
- lib/templates/ruby_base/service.rb.erb
|
95
|
+
- lib/templates/ruby_base/spec/spec_helper.rb
|
86
96
|
- lib/yu.rb
|
87
97
|
- lib/yu/version.rb
|
88
98
|
- yu.gemspec
|