yu 0.1.4 → 0.1.5
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/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
|