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.
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