yu 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -0
  3. data/lib/yu.rb +61 -29
  4. data/lib/yu/version.rb +1 -1
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2bce149a98ba79b8e5b443d5e08b6a72de4ef4f2
4
- data.tar.gz: 8dc032e5e7f950be1caa09c1a10e6acb073c1d20
3
+ metadata.gz: 966869713d53857c276a5a5b42402c5c7eee1bf2
4
+ data.tar.gz: b8944277007f182c41e5b29e4f40fc342673af4f
5
5
  SHA512:
6
- metadata.gz: 582744c63acc6a1e4fdca8765abd8e7a6f298d9035fac47eaf0978345d4da7cd38a3c36351ca752c83b06ba620ff36b519f3985587372f48ab8bf84cc0f688c8
7
- data.tar.gz: 3faa57ff181c2c5209c6c699eeb6252f657cc2263d4b83eb25d362dd2b0de440bb057283018d923b01c8672c343c7cd774ef1cc60cd7e942169f50a48633843c
6
+ metadata.gz: df8665a17bf5526d9cb8a65696e2ea19e1a430f1c04c07a494b610a143d9da126db4aa9255d25c62c3198bd85129b7ef1c11bf89f0495bd22325460618fa1f3b
7
+ data.tar.gz: a1b1732be30ae876cbca0e46e61cbaacc75c79da98933486d2bc77f5dcd4423cb0432adaaac92fddb657af6566aa6d13d87abebb8cfeee6313448b8336d43f62
data/README.md CHANGED
@@ -30,6 +30,10 @@ yu shell --test api
30
30
  yu build
31
31
  # Build base image for specific service(s)
32
32
  yu build api web
33
+ # Restart all containers
34
+ yu restart
35
+ # Restart speciic container(s)
36
+ yu restart web
33
37
  ```
34
38
 
35
39
  ## Development
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 = 'Reset everything'
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
- target_containers = testable_containers
76
+ target_services = testable_services
58
77
  else
59
- target_containers = args.map(&method(:normalise_container_name_from_dir))
78
+ target_services = args.map(&method(:normalise_service_name_from_dir))
60
79
  end
61
80
 
62
- results = target_containers.map do |container|
63
- info "Running tests for #{container}..."
81
+ results = target_services.map do |service|
82
+ info "Running tests for #{service}..."
64
83
  run_command(
65
- "docker-compose run --rm #{container} bin/test",
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
- target_containers = args.map(&method(:normalise_container_name_from_dir))
75
- if target_containers.none?
76
- target_gemfiled_containers = gemfiled_containers
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
- target_gemfiled_containers = gemfiled_containers & target_containers
97
+ target_gemfiled_services = gemfiled_services & target_services
79
98
  end
80
99
 
81
- target_gemfiled_containers.each(&method(:package_gems_for_container))
100
+ target_gemfiled_services.each(&method(:package_gems_for_service))
82
101
  info "Building images..."
83
- execute_command("docker-compose build #{target_containers.join(" ")}")
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 container"
108
+ info "Please provide service"
90
109
  exit 1
91
110
  when 1
92
- target_container = normalise_container_name_from_dir(args.first)
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 #{target_container}..."
95
- execute_command("docker-compose run --rm #{env_option} #{target_container} bash")
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
- gemfiled_containers.each(&method(:package_gems_for_container))
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 all containers up"
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 package_gems_for_container(container)
159
- info "Packaging gems for #{container}"
160
- run_command("cd #{container} && bundle package --all")
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 gemfiled_containers
164
- containers_with_file("Gemfile")
195
+ def gemfiled_services
196
+ services_with_file("Gemfile")
165
197
  end
166
198
 
167
- def testable_containers
168
- containers_with_file("bin/test")
199
+ def testable_services
200
+ services_with_file("bin/test")
169
201
  end
170
202
 
171
- def normalise_container_name_from_dir(container_name_or_dir)
172
- File.basename(container_name_or_dir)
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 containers_with_file(file)
207
+ def services_with_file(file)
176
208
  Dir.glob("*/#{file}").map { |dir_path| dir_path.split("/").first }
177
209
  end
178
210
 
@@ -1,3 +1,3 @@
1
1
  module Yu
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
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
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 00:00:00.000000000 Z
11
+ date: 2015-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander