yu 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -0
- data/lib/yu.rb +61 -29
- data/lib/yu/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 966869713d53857c276a5a5b42402c5c7eee1bf2
|
4
|
+
data.tar.gz: b8944277007f182c41e5b29e4f40fc342673af4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df8665a17bf5526d9cb8a65696e2ea19e1a430f1c04c07a494b610a143d9da126db4aa9255d25c62c3198bd85129b7ef1c11bf89f0495bd22325460618fa1f3b
|
7
|
+
data.tar.gz: a1b1732be30ae876cbca0e46e61cbaacc75c79da98933486d2bc77f5dcd4423cb0432adaaac92fddb657af6566aa6d13d87abebb8cfeee6313448b8336d43f62
|
data/README.md
CHANGED
data/lib/yu.rb
CHANGED
@@ -35,7 +35,8 @@ module Yu
|
|
35
35
|
|
36
36
|
command :reset do |c|
|
37
37
|
c.syntax = 'yu reset'
|
38
|
-
c.description = '
|
38
|
+
c.description = 'Fresh build of images for all services and restart'
|
39
|
+
c.option '--without-cache'
|
39
40
|
c.action(method(:reset))
|
40
41
|
end
|
41
42
|
|
@@ -45,6 +46,24 @@ module Yu
|
|
45
46
|
c.action(method(:doctor))
|
46
47
|
end
|
47
48
|
|
49
|
+
command :restart do |c|
|
50
|
+
c.syntax = 'yu restart'
|
51
|
+
c.description = 'Restart containers for service(s)'
|
52
|
+
c.action(method(:restart))
|
53
|
+
end
|
54
|
+
|
55
|
+
command :start do |c|
|
56
|
+
c.syntax = 'yu start'
|
57
|
+
c.description = 'Start containers containers for service(s)'
|
58
|
+
c.action(method(:restart))
|
59
|
+
end
|
60
|
+
|
61
|
+
command :recreate do |c|
|
62
|
+
c.syntax = 'yu recreate'
|
63
|
+
c.description = 'Recreate containers for service(s)'
|
64
|
+
c.action(method(:recreate))
|
65
|
+
end
|
66
|
+
|
48
67
|
global_option('-V', '--verbose', 'Verbose output') { $verbose_mode = true }
|
49
68
|
|
50
69
|
run!
|
@@ -54,15 +73,15 @@ module Yu
|
|
54
73
|
|
55
74
|
def test(args, options)
|
56
75
|
if args.none?
|
57
|
-
|
76
|
+
target_services = testable_services
|
58
77
|
else
|
59
|
-
|
78
|
+
target_services = args.map(&method(:normalise_service_name_from_dir))
|
60
79
|
end
|
61
80
|
|
62
|
-
results =
|
63
|
-
info "Running tests for #{
|
81
|
+
results = target_services.map do |service|
|
82
|
+
info "Running tests for #{service}..."
|
64
83
|
run_command(
|
65
|
-
"docker-compose run --rm #{
|
84
|
+
"docker-compose run --rm #{service} bin/test",
|
66
85
|
exit_on_failure: false,
|
67
86
|
)
|
68
87
|
end
|
@@ -71,28 +90,28 @@ module Yu
|
|
71
90
|
end
|
72
91
|
|
73
92
|
def build(args, options)
|
74
|
-
|
75
|
-
if
|
76
|
-
|
93
|
+
target_services = args.map(&method(:normalise_service_name_from_dir))
|
94
|
+
if target_services.none?
|
95
|
+
target_gemfiled_services = gemfiled_services
|
77
96
|
else
|
78
|
-
|
97
|
+
target_gemfiled_services = gemfiled_services & target_services
|
79
98
|
end
|
80
99
|
|
81
|
-
|
100
|
+
target_gemfiled_services.each(&method(:package_gems_for_service))
|
82
101
|
info "Building images..."
|
83
|
-
execute_command("docker-compose build #{
|
102
|
+
execute_command("docker-compose build #{target_services.join(" ")}")
|
84
103
|
end
|
85
104
|
|
86
105
|
def shell(args, options)
|
87
106
|
case args.count
|
88
107
|
when 0
|
89
|
-
info "Please provide
|
108
|
+
info "Please provide service"
|
90
109
|
exit 1
|
91
110
|
when 1
|
92
|
-
|
111
|
+
target_service = normalise_service_name_from_dir(args.first)
|
93
112
|
env_option = options.test ? "-e APP_ENV=test" : ""
|
94
|
-
info "Loading #{"test" if options.test} shell for #{
|
95
|
-
execute_command("docker-compose run --rm #{env_option} #{
|
113
|
+
info "Loading #{"test" if options.test} shell for #{target_service}..."
|
114
|
+
execute_command("docker-compose run --rm #{env_option} #{target_service} bash")
|
96
115
|
else
|
97
116
|
info "One at a time please!"
|
98
117
|
exit 1
|
@@ -101,18 +120,18 @@ module Yu
|
|
101
120
|
|
102
121
|
def reset(args, options)
|
103
122
|
info "Packaging gems in all services containing a Gemfile"
|
104
|
-
|
123
|
+
gemfiled_services.each(&method(:package_gems_for_service))
|
105
124
|
info "Killing any running containers"
|
106
125
|
run_command("docker-compose kill")
|
107
126
|
info "Removing all existing containers"
|
108
127
|
run_command "docker-compose rm --force"
|
109
128
|
info "Building fresh images"
|
110
|
-
run_command "docker-compose build"
|
129
|
+
run_command "docker-compose build #{'--no-cache' if options.without_cache}"
|
111
130
|
if File.exists? 'seed'
|
112
131
|
info "Seeding system state"
|
113
132
|
run_command "./seed"
|
114
133
|
end
|
115
|
-
info "Bringing
|
134
|
+
info "Bringing containers up for all services"
|
116
135
|
run_command "docker-compose up -d --no-recreate"
|
117
136
|
end
|
118
137
|
|
@@ -132,6 +151,19 @@ module Yu
|
|
132
151
|
info "Everything looks good."
|
133
152
|
end
|
134
153
|
|
154
|
+
def restart(args, options)
|
155
|
+
service_list = args.map(&method(:normalise_service_name_from_dir)).join(" ")
|
156
|
+
run_command "docker-compose kill #{service_list}"
|
157
|
+
run_command "docker-compose up -d --no-recreate #{service_list}"
|
158
|
+
end
|
159
|
+
|
160
|
+
def recreate(args, options)
|
161
|
+
service_list = args.map(&method(:normalise_service_name_from_dir)).join(" ")
|
162
|
+
run_command "docker-compose kill #{service_list}"
|
163
|
+
run_command "docker-compose rm --force #{service_list}"
|
164
|
+
run_command "docker-compose up -d #{service_list}"
|
165
|
+
end
|
166
|
+
|
135
167
|
def run_command(command, showing_output: true, exit_on_failure: true)
|
136
168
|
unless showing_output || verbose_mode?
|
137
169
|
command = "#{command} &>/dev/null"
|
@@ -155,24 +187,24 @@ module Yu
|
|
155
187
|
end
|
156
188
|
end
|
157
189
|
|
158
|
-
def
|
159
|
-
info "Packaging gems for #{
|
160
|
-
run_command("cd #{
|
190
|
+
def package_gems_for_service(service)
|
191
|
+
info "Packaging gems for #{service}"
|
192
|
+
run_command("cd #{service} && bundle package --all")
|
161
193
|
end
|
162
194
|
|
163
|
-
def
|
164
|
-
|
195
|
+
def gemfiled_services
|
196
|
+
services_with_file("Gemfile")
|
165
197
|
end
|
166
198
|
|
167
|
-
def
|
168
|
-
|
199
|
+
def testable_services
|
200
|
+
services_with_file("bin/test")
|
169
201
|
end
|
170
202
|
|
171
|
-
def
|
172
|
-
File.basename(
|
203
|
+
def normalise_service_name_from_dir(service_name_or_dir)
|
204
|
+
File.basename(service_name_or_dir)
|
173
205
|
end
|
174
206
|
|
175
|
-
def
|
207
|
+
def services_with_file(file)
|
176
208
|
Dir.glob("*/#{file}").map { |dir_path| dir_path.split("/").first }
|
177
209
|
end
|
178
210
|
|
data/lib/yu/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Kelly
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: commander
|