takelage 0.13.2 → 0.13.3
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 +2 -0
- data/bin/tau +1 -0
- data/lib/Thorfile +2 -0
- data/lib/takelage/bit/check/cli.rb +2 -2
- data/lib/takelage/bit/check/module.rb +21 -12
- data/lib/takelage/bit/cli.rb +1 -3
- data/lib/takelage/bit/clipboard/cli.rb +2 -4
- data/lib/takelage/bit/clipboard/module.rb +264 -194
- data/lib/takelage/bit/scope/cli.rb +2 -2
- data/lib/takelage/bit/scope/module.rb +64 -59
- data/lib/takelage/completion/cli.rb +2 -2
- data/lib/takelage/docker/check/cli.rb +2 -2
- data/lib/takelage/docker/check/module.rb +6 -8
- data/lib/takelage/docker/cli.rb +2 -3
- data/lib/takelage/docker/container/check/cli.rb +2 -2
- data/lib/takelage/docker/container/check/module.rb +28 -19
- data/lib/takelage/docker/container/cli.rb +13 -10
- data/lib/takelage/docker/container/module.rb +143 -110
- data/lib/takelage/docker/image/check/cli.rb +2 -3
- data/lib/takelage/docker/image/check/module.rb +26 -12
- data/lib/takelage/docker/image/cli.rb +3 -4
- data/lib/takelage/docker/image/module.rb +19 -14
- data/lib/takelage/docker/image/tag/check/cli.rb +2 -3
- data/lib/takelage/docker/image/tag/check/module.rb +33 -17
- data/lib/takelage/docker/image/tag/cli.rb +2 -3
- data/lib/takelage/docker/image/tag/latest/cli.rb +2 -3
- data/lib/takelage/docker/image/tag/latest/module.rb +6 -5
- data/lib/takelage/docker/image/tag/list/cli.rb +2 -3
- data/lib/takelage/docker/image/tag/list/module.rb +19 -16
- data/lib/takelage/docker/socket/cli.rb +2 -3
- data/lib/takelage/docker/socket/module.rb +137 -107
- data/lib/takelage/git/check/cli.rb +2 -2
- data/lib/takelage/git/check/module.rb +53 -35
- data/lib/takelage/git/cli.rb +2 -3
- data/lib/takelage/info/cli.rb +2 -3
- data/lib/takelage/info/project/cli.rb +2 -2
- data/lib/takelage/lib/config.rb +62 -45
- data/lib/takelage/lib/logging.rb +33 -16
- data/lib/takelage/lib/project.rb +43 -28
- data/lib/takelage/lib/subcmd.rb +2 -0
- data/lib/takelage/lib/system.rb +43 -27
- data/lib/takelage/self/cli.rb +2 -0
- data/lib/takelage/self/config/cli.rb +2 -0
- data/lib/takelage/self/module.rb +2 -0
- data/lib/takelage/version +1 -1
- data/lib/takelage.rb +6 -7
- metadata +1 -1
@@ -1,9 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# takelage docker container module
|
2
4
|
module DockerContainerModule
|
3
|
-
|
4
5
|
# Backend method for docker container run.
|
5
6
|
def docker_container_command(command)
|
6
|
-
log.debug
|
7
|
+
log.debug 'Running command in container'
|
7
8
|
|
8
9
|
return false unless docker_check_running
|
9
10
|
|
@@ -11,9 +12,10 @@ module DockerContainerModule
|
|
11
12
|
|
12
13
|
_create_network @hostname unless docker_container_check_network @hostname
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
unless docker_container_check_existing @hostname
|
16
|
+
return false unless _docker_container_create_container @hostname
|
17
|
+
end
|
18
|
+
|
17
19
|
_run_command_in_container @hostname, command
|
18
20
|
end
|
19
21
|
|
@@ -25,9 +27,11 @@ module DockerContainerModule
|
|
25
27
|
|
26
28
|
_create_network @hostname unless docker_container_check_network @hostname
|
27
29
|
|
28
|
-
|
29
|
-
|
30
|
-
|
30
|
+
unless docker_container_check_existing @hostname
|
31
|
+
return false unless _docker_container_create_container @hostname
|
32
|
+
end
|
33
|
+
|
34
|
+
true
|
31
35
|
end
|
32
36
|
|
33
37
|
# Backend method for docker container login.
|
@@ -36,24 +40,17 @@ module DockerContainerModule
|
|
36
40
|
|
37
41
|
return false unless docker_check_running
|
38
42
|
|
39
|
-
|
40
|
-
outdated = docker_image_check_outdated @docker_tag
|
41
|
-
if outdated
|
42
|
-
tag_latest_remote = docker_image_tag_latest_remote
|
43
|
-
log.warn "#{@docker_user}/#{@docker_repo}:#{@docker_tag} is outdated"
|
44
|
-
log.warn "#{@docker_user}/#{@docker_repo}:#{tag_latest_remote} is available"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
43
|
+
_docker_container_login_check_outdated
|
48
44
|
docker_socket_start
|
49
|
-
|
50
45
|
_create_network @hostname unless docker_container_check_network @hostname
|
51
46
|
|
52
|
-
|
53
|
-
|
54
|
-
|
47
|
+
unless docker_container_check_existing @hostname
|
48
|
+
return false unless _docker_container_create_container @hostname
|
49
|
+
end
|
50
|
+
|
51
|
+
cmd_enter_container = _docker_container_enter_container @hostname
|
55
52
|
|
56
|
-
|
53
|
+
run_and_exit cmd_enter_container
|
57
54
|
end
|
58
55
|
|
59
56
|
# Backend method for docker container nuke.
|
@@ -62,20 +59,9 @@ module DockerContainerModule
|
|
62
59
|
|
63
60
|
return false unless docker_check_running
|
64
61
|
|
65
|
-
|
66
|
-
if hostname.start_with? "#{@docker_repo}_"
|
67
|
-
log.error "Please run \"tau nuke\" outside of #{@docker_repo} containers"
|
68
|
-
log.info "Run \"tau purge\" to remove orphaned #{@docker_repo} containers"
|
69
|
-
return false
|
70
|
-
end
|
71
|
-
|
72
|
-
networks = []
|
62
|
+
return false if _docker_container_harakiri?
|
73
63
|
|
74
|
-
|
75
|
-
name = _get_container_name_by_id container
|
76
|
-
_stop_container container
|
77
|
-
networks << name unless networks.include? name
|
78
|
-
end
|
64
|
+
networks = _docker_container_kill_existing_containers
|
79
65
|
|
80
66
|
networks.each do |network|
|
81
67
|
_remove_network network if docker_container_check_network network
|
@@ -88,39 +74,38 @@ module DockerContainerModule
|
|
88
74
|
|
89
75
|
return false unless docker_check_running
|
90
76
|
|
91
|
-
networks =
|
92
|
-
|
93
|
-
_get_containers.each do |container|
|
94
|
-
if docker_container_check_orphaned container
|
95
|
-
name = _get_container_name_by_id container
|
96
|
-
_stop_container container
|
97
|
-
networks << name unless networks.include? name
|
98
|
-
end
|
99
|
-
end
|
77
|
+
networks = _docker_container_kill_orphaned_containers
|
100
78
|
|
101
79
|
networks.each do |network|
|
102
80
|
_remove_network network if docker_container_check_network network
|
103
81
|
end
|
104
82
|
end
|
105
83
|
|
84
|
+
private
|
85
|
+
|
86
|
+
# Check if newer docker container is available.
|
87
|
+
def _docker_container_login_check_outdated
|
88
|
+
return if @docker_tag == 'latest'
|
89
|
+
|
90
|
+
outdated = docker_image_check_outdated @docker_tag
|
91
|
+
return unless outdated
|
92
|
+
|
93
|
+
tag_latest = docker_image_tag_latest_remote
|
94
|
+
log.warn "#{@docker_user}/#{@docker_repo}:#{@docker_tag} is outdated"
|
95
|
+
log.warn "#{@docker_user}/#{@docker_repo}:#{tag_latest} is available"
|
96
|
+
end
|
97
|
+
|
106
98
|
# Create docker container.
|
107
|
-
|
99
|
+
# rubocop:disable Metrics/MethodLength
|
100
|
+
def _docker_container_create_container(container)
|
108
101
|
log.debug "Creating container \"#{container}\""
|
109
102
|
|
110
103
|
image = "#{@docker_user}/#{@docker_repo}:#{@docker_tag}"
|
111
104
|
|
112
|
-
unless
|
113
|
-
log.error "No local image \"#{image}\" available"
|
114
|
-
return false
|
115
|
-
end
|
105
|
+
return false unless _docker_container_image_available? image
|
116
106
|
|
117
107
|
log.debug "Using docker image \"#{image}\""
|
118
108
|
|
119
|
-
unless docker_image_tag_check_local @docker_tag
|
120
|
-
log.error "Image \"#{image}\" does not exist"
|
121
|
-
return false
|
122
|
-
end
|
123
|
-
|
124
109
|
unless @socket_host == '127.0.0.1'
|
125
110
|
addhost = "--add-host host.docker.internal:#{@socket_host}"
|
126
111
|
end
|
@@ -128,74 +113,93 @@ module DockerContainerModule
|
|
128
113
|
entrypoint = '/entrypoint.py '
|
129
114
|
volume_dev = ''
|
130
115
|
if options[:development]
|
131
|
-
entrypoint
|
116
|
+
entrypoint += ' --debug '
|
132
117
|
volume_dev = "--volume #{@workdir}/#{@docker_debug}:/debug "
|
133
118
|
end
|
134
119
|
|
135
120
|
cmd_docker_create =
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
121
|
+
format(
|
122
|
+
config.active['cmd_docker_container_create'],
|
123
|
+
workdir: @workdir,
|
124
|
+
timezone: @timezone,
|
125
|
+
container: container,
|
126
|
+
dockersock: @dockersock,
|
127
|
+
homedir: @homedir,
|
128
|
+
volume_dev: volume_dev,
|
129
|
+
image: image,
|
130
|
+
addhost: addhost,
|
131
|
+
dockerrun_options: @dockerrun_options,
|
132
|
+
entrypoint: entrypoint,
|
133
|
+
gid: @gid,
|
134
|
+
uid: @uid,
|
135
|
+
username: @username,
|
136
|
+
gpg_agent_port: @gpg_agent_port,
|
137
|
+
gpg_ssh_agent_port: @gpg_ssh_agent_port,
|
138
|
+
extra: @entrypoint_extra,
|
139
|
+
entrypoint_options: @entrypoint_options
|
140
|
+
)
|
155
141
|
|
156
142
|
run cmd_docker_create
|
157
143
|
true
|
158
144
|
end
|
145
|
+
# rubocop:enable Metrics/MethodLength
|
146
|
+
|
147
|
+
# Check if docker image is available
|
148
|
+
def _docker_container_image_available?(image)
|
149
|
+
return true if docker_image_tag_list_local.include? @docker_tag
|
150
|
+
|
151
|
+
log.error "No local image \"#{image}\" available"
|
152
|
+
log.info "Try: docker pull #{image}"
|
153
|
+
false
|
154
|
+
end
|
159
155
|
|
160
156
|
# Create docker network.
|
161
157
|
def _create_network(network)
|
162
158
|
log.debug "Create network \"#{network}\""
|
163
159
|
|
164
160
|
cmd_create_network =
|
165
|
-
|
166
|
-
|
167
|
-
|
161
|
+
format(
|
162
|
+
config.active['cmd_docker_container_create_network'],
|
163
|
+
network: network
|
164
|
+
)
|
168
165
|
|
169
166
|
run cmd_create_network
|
170
167
|
end
|
171
168
|
|
172
169
|
# Enter existing docker container.
|
173
|
-
def
|
170
|
+
def _docker_container_enter_container(container)
|
174
171
|
log.debug "Entering container \"#{container}\""
|
175
172
|
|
176
|
-
loginpoint = '/loginpoint.py
|
177
|
-
if options[:development]
|
178
|
-
|
179
|
-
|
173
|
+
loginpoint = '/loginpoint.py'
|
174
|
+
loginpoint += ' --debug ' if options[:development]
|
175
|
+
|
176
|
+
format(
|
177
|
+
config.active['cmd_docker_container_enter_container'],
|
178
|
+
container: container,
|
179
|
+
loginpoint: loginpoint,
|
180
|
+
username: @username
|
181
|
+
)
|
182
|
+
end
|
180
183
|
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
username: @username
|
186
|
-
}
|
184
|
+
# Check if we are running tau nuke inside a takelage container
|
185
|
+
def _docker_container_harakiri?
|
186
|
+
hostname = ENV['HOSTNAME'] || ''
|
187
|
+
return false unless hostname.start_with? "#{@docker_repo}_"
|
187
188
|
|
188
|
-
|
189
|
+
log.error "Please run \"tau nuke\" outside of #{@docker_repo} containers"
|
190
|
+
log.info "Run \"tau purge\" to remove orphaned #{@docker_repo} containers"
|
191
|
+
true
|
189
192
|
end
|
190
193
|
|
191
194
|
# Get container name by id.
|
192
|
-
def
|
195
|
+
def _docker_container_get_container_name_by_id(container)
|
193
196
|
log.debug "Getting name of container \"#{container}\""
|
194
197
|
|
195
198
|
cmd_get_container_name_by_id =
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
+
format(
|
200
|
+
config.active['cmd_docker_container_get_container_name'],
|
201
|
+
container: container
|
202
|
+
)
|
199
203
|
|
200
204
|
stdout_str = run cmd_get_container_name_by_id
|
201
205
|
|
@@ -208,13 +212,14 @@ module DockerContainerModule
|
|
208
212
|
|
209
213
|
# Get all docker containers.
|
210
214
|
# @return [Array] list of docker containers
|
211
|
-
def
|
215
|
+
def _docker_container_get_containers
|
212
216
|
log.debug "Getting all containers of image \"#{@docker_repo}\""
|
213
217
|
|
214
218
|
cmd_docker_get =
|
215
|
-
|
216
|
-
|
217
|
-
|
219
|
+
format(
|
220
|
+
config.active['cmd_docker_container_get_containers'],
|
221
|
+
docker_repo: @docker_repo
|
222
|
+
)
|
218
223
|
|
219
224
|
stdout_str = run cmd_docker_get
|
220
225
|
|
@@ -222,14 +227,40 @@ module DockerContainerModule
|
|
222
227
|
stdout_str.split(/\n+/)
|
223
228
|
end
|
224
229
|
|
230
|
+
# Kill all docker containers and return list of networks
|
231
|
+
def _docker_container_kill_existing_containers
|
232
|
+
networks = []
|
233
|
+
_docker_container_get_containers.each do |container|
|
234
|
+
name = _docker_container_get_container_name_by_id container
|
235
|
+
_docker_container_stop_container container
|
236
|
+
networks << name unless networks.include? name
|
237
|
+
end
|
238
|
+
networks
|
239
|
+
end
|
240
|
+
|
241
|
+
# Kill orphaned docker containers and return list of networks
|
242
|
+
def _docker_container_kill_orphaned_containers
|
243
|
+
networks = []
|
244
|
+
|
245
|
+
_docker_container_get_containers.each do |container|
|
246
|
+
next unless docker_container_check_orphaned container
|
247
|
+
|
248
|
+
name = _docker_container_get_container_name_by_id container
|
249
|
+
_docker_container_stop_container container
|
250
|
+
networks << name unless networks.include? name
|
251
|
+
end
|
252
|
+
networks
|
253
|
+
end
|
254
|
+
|
225
255
|
# Remove docker network.
|
226
|
-
def _remove_network
|
256
|
+
def _remove_network(network)
|
227
257
|
log.debug "Remove network \"#{network}\""
|
228
258
|
|
229
259
|
cmd_remove_network =
|
230
|
-
|
231
|
-
|
232
|
-
|
260
|
+
format(
|
261
|
+
config.active['cmd_docker_container_remove_network'],
|
262
|
+
network: network
|
263
|
+
)
|
233
264
|
|
234
265
|
run cmd_remove_network
|
235
266
|
end
|
@@ -239,23 +270,25 @@ module DockerContainerModule
|
|
239
270
|
log.debug "Running command \"#{command}\" in container \"#{container}\""
|
240
271
|
|
241
272
|
cmd_docker_run_command =
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
273
|
+
format(
|
274
|
+
config.active['cmd_docker_container_docker_exec'],
|
275
|
+
container: container,
|
276
|
+
username: @username,
|
277
|
+
command: command
|
278
|
+
)
|
247
279
|
|
248
280
|
run_and_exit cmd_docker_run_command
|
249
281
|
end
|
250
282
|
|
251
283
|
# Stop container.
|
252
|
-
def
|
284
|
+
def _docker_container_stop_container(container)
|
253
285
|
log.debug "Stopping container \"#{container}\""
|
254
286
|
|
255
287
|
cmd_docker_stop =
|
256
|
-
|
257
|
-
|
258
|
-
|
288
|
+
format(
|
289
|
+
config.active['cmd_docker_container_stop_container'],
|
290
|
+
container: container
|
291
|
+
)
|
259
292
|
|
260
293
|
run cmd_docker_stop
|
261
294
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
module Takelage
|
3
4
|
# takelage docker image check
|
4
5
|
class DockerImageCheck < SubCommandBase
|
5
|
-
|
6
6
|
include LoggingModule
|
7
7
|
include SystemModule
|
8
8
|
include ConfigModule
|
@@ -13,7 +13,6 @@ module Takelage
|
|
13
13
|
|
14
14
|
# Initialize takelage docker image check
|
15
15
|
def initialize(args = [], local_options = {}, configuration = {})
|
16
|
-
|
17
16
|
# initialize thor parent class
|
18
17
|
super args, local_options, configuration
|
19
18
|
|
@@ -1,27 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# takelage docker image check module
|
2
4
|
module DockerImageCheckModule
|
3
|
-
|
4
5
|
# Backend method for docker image check outdated.
|
5
|
-
# @return [Boolean] is docker image tag older than latest remote
|
6
|
+
# @return [Boolean] is docker image tag older than latest remote image tag?
|
7
|
+
# rubocop:disable Style/RedundantSort
|
6
8
|
def docker_image_check_outdated(tag)
|
7
9
|
log.debug "Check if docker image version \"#{tag}\" is outdated"
|
8
10
|
|
9
11
|
return false unless docker_check_running
|
10
12
|
|
11
|
-
if tag
|
12
|
-
log.debug "Docker image version \"latest\" is by definition never outdated"
|
13
|
-
return false
|
14
|
-
end
|
13
|
+
return false if _docker_outdated_tag_latest? tag
|
15
14
|
|
16
15
|
tag_latest_remote = docker_image_tag_latest_remote
|
17
|
-
tags = [tag,
|
18
|
-
outdated = tag != VersionSorter.sort(tags).last
|
16
|
+
tags = [tag, docker_image_tag_latest_remote]
|
17
|
+
outdated = (tag != VersionSorter.sort(tags).last)
|
19
18
|
|
20
|
-
if outdated
|
21
|
-
"Docker image version \"#{tag}\" is outdated"
|
22
|
-
"Docker image version \"#{tag_latest_remote}\" is available"
|
23
|
-
end
|
19
|
+
_docker_outdated_log_info tag, tag_latest_remote if outdated
|
24
20
|
|
25
21
|
outdated
|
26
22
|
end
|
23
|
+
|
24
|
+
# rubocop:enable Style/RedundantSort
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
# Check if the tag is "latest".
|
29
|
+
def _docker_outdated_tag_latest?(tag)
|
30
|
+
return false unless tag == 'latest'
|
31
|
+
|
32
|
+
log.debug 'Docker image version "latest" is by definition never outdated'
|
33
|
+
true
|
34
|
+
end
|
35
|
+
|
36
|
+
# Log info if docker image is outdated.
|
37
|
+
def _docker_outdated_log_info(tag, tag_latest_remote)
|
38
|
+
log.debug "Docker image version is outdated: #{tag}"
|
39
|
+
log.debug "Docker image version is available: #{tag_latest_remote}"
|
40
|
+
end
|
27
41
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
module Takelage
|
3
4
|
# takelage docker image
|
4
5
|
class DockerImage < SubCommandBase
|
5
|
-
|
6
6
|
include LoggingModule
|
7
7
|
include SystemModule
|
8
8
|
include ConfigModule
|
@@ -12,8 +12,7 @@ module Takelage
|
|
12
12
|
include DockerImageModule
|
13
13
|
|
14
14
|
# Initialize takelage docker image
|
15
|
-
def initialize(args=[], local_options={}, configuration={})
|
16
|
-
|
15
|
+
def initialize(args = [], local_options = {}, configuration = {})
|
17
16
|
# initialize thor parent class
|
18
17
|
super args, local_options, configuration
|
19
18
|
|
@@ -1,28 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# takelage docker image module
|
2
4
|
module DockerImageModule
|
3
|
-
|
4
5
|
# Backend method for docker image update.
|
5
6
|
def docker_image_update
|
6
7
|
return false unless docker_check_running
|
7
8
|
|
8
9
|
tags_remote = docker_image_tag_list_remote
|
9
10
|
|
10
|
-
|
11
|
-
|
12
|
-
else
|
13
|
-
tag = docker_image_tag_latest_remote
|
14
|
-
end
|
11
|
+
tag = 'latest'
|
12
|
+
tag = docker_image_tag_latest_remote unless tags_remote.include?('latest')
|
15
13
|
|
16
|
-
cmd_docker_pull_latest =
|
17
|
-
config.active['cmd_docker_image_update_docker_pull_latest'] % {
|
18
|
-
docker_user: @docker_user,
|
19
|
-
docker_repo: @docker_repo,
|
20
|
-
tag_latest_remote: tag
|
21
|
-
}
|
14
|
+
cmd_docker_pull_latest = _docker_image_update_cmd_docker_pull_latest tag
|
22
15
|
|
23
16
|
cmd_docker_remove_dangling =
|
24
|
-
|
17
|
+
config.active['cmd_docker_image_update_docker_remove_dangling']
|
25
18
|
|
26
19
|
run_and_exit "#{cmd_docker_pull_latest} && #{cmd_docker_remove_dangling}"
|
27
20
|
end
|
28
|
-
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
# Prepare dpcker pull latest command.
|
25
|
+
def _docker_image_update_cmd_docker_pull_latest(tag)
|
26
|
+
format(
|
27
|
+
config.active['cmd_docker_image_update_docker_pull_latest'],
|
28
|
+
docker_user: @docker_user,
|
29
|
+
docker_repo: @docker_repo,
|
30
|
+
tag_latest_remote: tag
|
31
|
+
)
|
32
|
+
end
|
33
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
module Takelage
|
3
4
|
# takelage docker image tag check
|
4
5
|
class DockerImageTagCheck < SubCommandBase
|
5
|
-
|
6
6
|
include LoggingModule
|
7
7
|
include SystemModule
|
8
8
|
include ConfigModule
|
@@ -12,7 +12,6 @@ module Takelage
|
|
12
12
|
|
13
13
|
# Initialize takelage docker image tag check
|
14
14
|
def initialize(args = [], local_options = {}, configuration = {})
|
15
|
-
|
16
15
|
# initialize thor parent class
|
17
16
|
super args, local_options, configuration
|
18
17
|
|
@@ -1,6 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# takelage docker image tag check module
|
2
4
|
module DockerImageTagCheckModule
|
3
|
-
|
4
5
|
# Backend method for docker image check tag local.
|
5
6
|
# @return [Boolean] does local docker image tag exist?
|
6
7
|
def docker_image_tag_check_local(tag)
|
@@ -9,23 +10,13 @@ module DockerImageTagCheckModule
|
|
9
10
|
return false unless docker_check_running
|
10
11
|
|
11
12
|
if tag.to_s.strip.empty?
|
12
|
-
log.warn
|
13
|
+
log.warn 'No local docker image tag specified'
|
13
14
|
return false
|
14
15
|
end
|
15
16
|
|
16
17
|
image = "#{@docker_user}/#{@docker_repo}:#{tag}"
|
17
18
|
|
18
|
-
|
19
|
-
config.active['cmd_docker_image_tag_check_local_docker_images'] % {
|
20
|
-
image: image
|
21
|
-
}
|
22
|
-
|
23
|
-
stdout_str = run cmd_docker_images
|
24
|
-
|
25
|
-
if stdout_str.to_s.strip.empty?
|
26
|
-
log.debug "No local docker image \"#{image}\" found"
|
27
|
-
return false
|
28
|
-
end
|
19
|
+
return false unless _docker_image_check_local_image? image
|
29
20
|
|
30
21
|
log.debug "Found local docker image \"#{image}\""
|
31
22
|
true
|
@@ -38,21 +29,46 @@ module DockerImageTagCheckModule
|
|
38
29
|
|
39
30
|
return false unless docker_check_running
|
40
31
|
|
41
|
-
if tag
|
42
|
-
log.warn
|
32
|
+
if tag.to_s.strip.empty?
|
33
|
+
log.warn 'No remote docker image tag specified'
|
43
34
|
return false
|
44
35
|
end
|
45
36
|
|
46
37
|
image = "#{@docker_user}/#{@docker_repo}:#{tag}"
|
47
38
|
|
39
|
+
return false unless _docker_iamge_check_remote_image? image, tag
|
40
|
+
|
41
|
+
log.debug "Found remote docker image \"#{image}\""
|
42
|
+
true
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
# Check if local image exists.
|
48
|
+
def _docker_image_check_local_image?(image)
|
49
|
+
cmd_docker_images =
|
50
|
+
format(
|
51
|
+
config.active['cmd_docker_image_tag_check_local_docker_images'],
|
52
|
+
image: image
|
53
|
+
)
|
54
|
+
|
55
|
+
if (run cmd_docker_images).to_s.strip.empty?
|
56
|
+
log.debug "No local docker image \"#{image}\" found"
|
57
|
+
return false
|
58
|
+
end
|
59
|
+
|
60
|
+
true
|
61
|
+
end
|
62
|
+
|
63
|
+
# Check if remote image exists.
|
64
|
+
def _docker_iamge_check_remote_image?(image, tag)
|
48
65
|
tags = docker_image_tag_list_remote
|
49
66
|
|
50
|
-
unless tags != false
|
67
|
+
unless tags != false && tags.include?(tag)
|
51
68
|
log.debug "No remote docker image \"#{image}\" found"
|
52
69
|
return false
|
53
70
|
end
|
54
71
|
|
55
|
-
log.debug "Found remote docker image \"#{image}\""
|
56
72
|
true
|
57
73
|
end
|
58
74
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
module Takelage
|
3
4
|
# takelage docker image tag
|
4
5
|
class DockerImageTag < SubCommandBase
|
5
|
-
|
6
6
|
desc 'check [COMMAND]', 'Check docker image tag'
|
7
7
|
subcommand 'check', DockerImageTagCheck
|
8
8
|
|
@@ -11,6 +11,5 @@ module Takelage
|
|
11
11
|
|
12
12
|
desc 'list [COMMAND]', 'Print local or remote docker image tags'
|
13
13
|
subcommand 'list', DockerImageTagList
|
14
|
-
|
15
14
|
end
|
16
15
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
module Takelage
|
3
4
|
# takelage docker image tag latest
|
4
5
|
class DockerImageTagLatest < SubCommandBase
|
5
|
-
|
6
6
|
include LoggingModule
|
7
7
|
include SystemModule
|
8
8
|
include ConfigModule
|
@@ -12,7 +12,6 @@ module Takelage
|
|
12
12
|
|
13
13
|
# Initialize takelage docker image tag latest
|
14
14
|
def initialize(args = [], local_options = {}, configuration = {})
|
15
|
-
|
16
15
|
# initialize thor parent class
|
17
16
|
super args, local_options, configuration
|
18
17
|
|