docker-env 1.3.0 → 2.1.0

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 (4) hide show
  1. checksums.yaml +5 -5
  2. data/VERSION +1 -1
  3. data/bin/docker-env +59 -25
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: eb048673013e7f2bd08c48fd3a1f1e2b535c7dc8
4
- data.tar.gz: b50f1bec7b96b727b1166a37b0ab0c9a080ddeeb
2
+ SHA256:
3
+ metadata.gz: 49cc173315bbedee1d56df6586b8b643225e1e6749be840474ef21aa926e1206
4
+ data.tar.gz: 4235d13a8d3555027db37d4b9eea1a994826bd3b1776b243d9f65132f1fff797
5
5
  SHA512:
6
- metadata.gz: 3e323b83144cdd4bba4c22fdb7aeec62f0c376cc32bd7bcf5bd11f7d2fac90758b462365c0f5aee70e6f22ab34075d2c296e92999b118eb096deca9112f0acf2
7
- data.tar.gz: 5c825a0d1e18596d8f205b1d136159a62e69521ccc6febae05d8644df79861a52f0b2bc021fd630d79e20f36c375c7ddb9b51dc9c62a6804a2e4d6a22ea803e1
6
+ metadata.gz: 4683c6f9b8826e1940e23561d19ddcb1ec38d87e832c33bc9a84c1839df1889b9608c0158c88cef53a3539485c2e7f7a921856be6f14f25a445f62ef23a45143
7
+ data.tar.gz: 85503e832d3f91c7339451a278bdd0c955dc2249e483e85431c10f6ee7fea3a91d52a7b871dee39aa994843aab507e9c5eefa0266da6dbbee405a79ff82e996a
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.3.0
1
+ 2.1.0
@@ -7,8 +7,8 @@ include GLI::App
7
7
  DIR = File.expand_path(
8
8
  '~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux'
9
9
  ).freeze
10
- NAME = 'Docker.qcow2'.freeze
11
- SYMLINK = "#{DIR}/#{NAME}".freeze
10
+ QNAME = 'Docker.qcow2'.freeze
11
+ RNAME = 'Docker.raw'.freeze
12
12
 
13
13
  program_desc 'Manage docker for mac qcow images'
14
14
  version Version.current(File.dirname(__FILE__))
@@ -21,12 +21,28 @@ switch %i[v verbose], desc: 'be more verbose'
21
21
  switch %i[k kill], desc: 'quit docker if it is running'
22
22
  switch %i[r restart], desc: 'stop and start docker around command'
23
23
 
24
+ def symlink
25
+ n = File.join(DIR, QNAME);
26
+ return n if File.exist?(n)
27
+
28
+ return File.join(DIR, RNAME);
29
+ end
30
+
24
31
  def name(f, options)
25
- options[:verbose] ? f : f.sub(/^.+Docker\.qcow2\./, '')
32
+ options[:verbose] ? f : f.sub(/^.+Docker\.(qcow2|raw)\./, '')
33
+ end
34
+
35
+ def readlink
36
+ if !File.symlink?(symlink)
37
+ $stderr.puts "Image not symlink, try init!"
38
+ exit 1
39
+ end
40
+
41
+ File.readlink(symlink)
26
42
  end
27
43
 
28
44
  def current(options)
29
- name(File.readlink(SYMLINK), options)
45
+ name(readlink, options)
30
46
  end
31
47
 
32
48
  def tell_docker(what, options)
@@ -61,60 +77,73 @@ post do |global_options, _command, _options, _args|
61
77
  tell_docker('open', global_options) if global_options[:restart]
62
78
  end
63
79
 
64
- desc 'setup by moving Docker.qcow2 to "image_name" and linking back'
80
+ desc 'setup by moving Docker.{qcow2,raw} to "image_name" and linking back (FORCES RESTART)'
65
81
  arg 'image_name'
66
82
  command :init do |c|
67
83
  c.action do |global_options, _options, args|
84
+ global_options[:restart] = true
68
85
  running?(global_options)
69
- if File.symlink?(SYMLINK)
86
+ if File.symlink?(symlink)
70
87
  $stderr.puts "Already setup. Current is: #{current(global_options)}"
71
88
  exit 1
72
89
  end
73
90
 
74
- file = "#{SYMLINK}.#{args[0]}"
75
- File.rename(SYMLINK, file)
76
- File.symlink(file, SYMLINK)
91
+ link = symlink
92
+ file = "#{symlink}.#{args[0]}"
77
93
 
94
+ $stderr.puts "Moving #{link} -> #{file}" if global_options[:verbose]
95
+
96
+ File.rename(link, file)
97
+ File.symlink(file, link)
98
+
99
+ $stderr.puts "Linking #{file} -> #{link} and restarting" if global_options[:verbose]
78
100
  puts 'Current is now: ' + current(global_options)
79
101
  end
80
102
  end
81
103
 
82
- desc 'list available qcow images (.../Docker.qcow2.{name})'
104
+ desc 'Print path to disk imae directory'
105
+ command [:dir, :directory] do |c|
106
+ c.action { puts DIR }
107
+ end
108
+
109
+ desc 'list available disk images (.../Docker.(qcow2|raw).{name})'
83
110
  command [:list, :ls] do |c|
84
111
  c.action do |global_options, _options, _args|
85
112
  cur = current(global_options)
86
- puts Dir.glob("#{SYMLINK}.*").map { |f|
113
+ # only list images of base type...
114
+ ext = File.extname(symlink)
115
+ puts Dir.glob("#{DIR}/Docker#{ext}.*").map { |f|
87
116
  img = name(f, global_options)
88
117
  sprintf '%-2s%s', img == cur ? '*' : '', img
89
118
  }
90
119
  end
91
120
  end
92
121
 
93
- desc 'create new qcow "image"'
122
+ desc 'create new disk "image" (FORCES RESTART)'
94
123
  long_desc <<EOF
95
124
  Removes current link so that the next time docker starts, it will create a
96
125
  new empty image file. The (slightly long) steps to follow:
97
126
 
98
- 1. Stop Docker.app
99
- 2. Run this command (`docker-env new`)
100
- 3. Restart Docker.app
101
- 4. Stop Docker.app
102
- 5. Run `docker-env init {name}` to name the new image and
127
+ 1. Run this command (`docker-env new`)
128
+ 2. Wait for docker to fully restart
129
+ 3. Run `docker-env init {name}` to name the new image and
103
130
  create the symlink
104
131
  EOF
105
132
  command :new do |c|
106
133
  c.action do |global_options, _options, _args|
134
+ global_options[:restart] = true
107
135
  running?(global_options)
108
- if File.exist?(SYMLINK) || !File.symlink?(SYMLINK)
136
+ if File.exist?(symlink) && !File.symlink?(symlink)
109
137
  $stderr.puts "Please use '--force' to force delete current image!"
110
138
  exit 1
111
139
  end
112
140
 
141
+ $stderr.puts "Removing #{symlink} and restarting" if global_options[:verbose]
142
+
113
143
  begin
114
- File.unlink(SYMLINK)
144
+ File.unlink(symlink)
115
145
  rescue Errno::ENOENT # rubocop:disable Lint/HandleExceptions
116
146
  end
117
- help(['new'])
118
147
  end
119
148
  end
120
149
 
@@ -122,16 +151,17 @@ desc 'Delete "image"'
122
151
  arg 'image'
123
152
  command :rm do |c|
124
153
  c.action do |_global_options, _options, args|
125
- file = "#{SYMLINK}.#{args[0]}"
154
+ file = "#{symlink}.#{args[0]}"
126
155
  unless File.exist?(file)
127
156
  $stderr.puts "Image #{args[0]} doesnt exist!"
128
157
  exit 1
129
158
  end
130
- if File.readlink(SYMLINK) == file
159
+ if readlink == file
131
160
  $stderr.puts "Can't delete currently linked image"
132
161
  exit 1
133
162
  end
134
163
 
164
+ $stderr.puts "Removing #{file} to ${link}" if global_options[:verbose]
135
165
  File.unlink(file)
136
166
  end
137
167
  end
@@ -141,14 +171,18 @@ arg 'image'
141
171
  command :use do |c|
142
172
  c.action do |global_options, _options, args|
143
173
  running?(global_options)
144
- file = "#{SYMLINK}.#{args[0]}"
174
+ ext = args[0]
175
+ file = Dir.glob("#{DIR}/Docker.*.#{ext}")[0]
145
176
  File.exist?(file) or raise "Image #{file} does not exist"
146
177
 
147
178
  begin
148
- File.unlink(SYMLINK)
179
+ File.unlink(symlink)
149
180
  rescue Errno::ENOENT # rubocop:disable Lint/HandleExceptions
150
181
  end
151
- File.symlink(file, SYMLINK)
182
+
183
+ $stderr.puts "Linking #{file} to #{symlink}" if global_options[:verbose]
184
+
185
+ File.symlink(file, symlink)
152
186
  end
153
187
  end
154
188
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docker-env
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rick Frankel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-18 00:00:00.000000000 Z
11
+ date: 2018-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -116,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  version: '0'
117
117
  requirements: []
118
118
  rubyforge_project:
119
- rubygems_version: 2.6.12
119
+ rubygems_version: 2.7.4
120
120
  signing_key:
121
121
  specification_version: 4
122
122
  summary: A tool to switch docker for mac environments