takelage 0.22.1 → 0.23.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 +4 -0
- data/lib/takelage.rb +7 -14
- data/lib/takelage/default.yml +5 -4
- data/lib/takelage/docker/check/cli.rb +18 -5
- data/lib/takelage/docker/check/{running.rb → daemon.rb} +3 -3
- data/lib/takelage/docker/check/socat.rb +23 -0
- data/lib/takelage/docker/container/check/cli.rb +2 -1
- data/lib/takelage/docker/container/check/existing.rb +1 -1
- data/lib/takelage/docker/container/check/network.rb +1 -1
- data/lib/takelage/docker/container/check/orphaned.rb +1 -1
- data/lib/takelage/docker/container/clean.rb +1 -1
- data/lib/takelage/docker/container/cli.rb +5 -5
- data/lib/takelage/docker/container/command.rb +1 -1
- data/lib/takelage/docker/container/daemon.rb +1 -1
- data/lib/takelage/docker/container/lib.rb +1 -1
- data/lib/takelage/docker/container/login.rb +1 -14
- data/lib/takelage/docker/container/prune.rb +1 -1
- data/lib/takelage/docker/image/cli.rb +1 -6
- data/lib/takelage/docker/image/tag/check.rb +42 -0
- data/lib/takelage/docker/image/tag/cli.rb +59 -6
- data/lib/takelage/docker/image/tag/latest.rb +20 -0
- data/lib/takelage/docker/image/tag/list.rb +19 -0
- data/lib/takelage/docker/image/update.rb +4 -10
- data/lib/takelage/docker/socket/cli.rb +2 -1
- data/lib/takelage/docker/socket/host.rb +3 -4
- data/lib/takelage/docker/socket/start.rb +3 -1
- data/lib/takelage/docker/socket/stop.rb +4 -3
- data/lib/takelage/info/project/cli.rb +13 -0
- data/lib/takelage/lib/project.rb +8 -5
- data/lib/takelage/version +1 -1
- metadata +6 -13
- data/lib/takelage/docker/image/check/cli.rb +0 -39
- data/lib/takelage/docker/image/check/outdated.rb +0 -40
- data/lib/takelage/docker/image/tag/check/cli.rb +0 -48
- data/lib/takelage/docker/image/tag/check/local.rb +0 -42
- data/lib/takelage/docker/image/tag/check/remote.rb +0 -38
- data/lib/takelage/docker/image/tag/latest/cli.rb +0 -57
- data/lib/takelage/docker/image/tag/latest/local.rb +0 -20
- data/lib/takelage/docker/image/tag/latest/remote.rb +0 -25
- data/lib/takelage/docker/image/tag/list/cli.rb +0 -53
- data/lib/takelage/docker/image/tag/list/local.rb +0 -19
- data/lib/takelage/docker/image/tag/list/remote.rb +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24b3d161560016f990a94d7b20069137900e32f5a58956aa5707eb9aa0f60027
|
4
|
+
data.tar.gz: 755d43225e3eed43930e9f563701752999df2088fdf7f9210bfe1df7c57bd659
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 995e31c2e97743b63df181b0975c63c7cc6fffc04c3ed338cce64279c96401dead03e1188bd5308af0909e5472127cdbdecd27dd7e7323d711b5973c75da2d57
|
7
|
+
data.tar.gz: 53d043282900c5ea74825c911a9fa504001edd9290bc6251671a74f974ad1420f035c4055e72b01abd0f9d2869db81b3dd49a5f8a8251cd3e9d84c3c82763e39
|
data/README.md
CHANGED
@@ -84,6 +84,7 @@ tau [git check clean](features/cucumber/features/git/git.check.clean.feature) |
|
|
84
84
|
tau [git check main](features/cucumber/features/git/git.check.main.feature) | Check if we are on the git main branch
|
85
85
|
tau [git check workspace](features/cucumber/features/git/git.check.workspace.feature) | Check if a git workspace exists
|
86
86
|
tau [info project active](features/cucumber/features/info/info.project.active.feature) | Print active project info
|
87
|
+
tau [info project dir](features/cucumber/features/info/info.project.dir.feature) | Print project root directory
|
87
88
|
tau [info project main](features/cucumber/features/info/info.project.main.feature) | Print main project info
|
88
89
|
tau [info project private](features/cucumber/features/info/info.project.private.feature) | Print private project info
|
89
90
|
tau [self config active](features/cucumber/features/self/self.config.active.feature) | Print active takelage configuration
|
@@ -124,6 +125,9 @@ or *tau config*.
|
|
124
125
|
| *~/.takelage.yml* | normal | User-wide configuration file in your home directory. This is your normal custom configuration file. |
|
125
126
|
| *takelage.yml* | highest | Project-specific configuration file next to your main Rakefile. Some projects need special configuration. |
|
126
127
|
|
128
|
+
Please remember that a project directory is identified by the main
|
129
|
+
[Rakefile](Rakefile).
|
130
|
+
|
127
131
|
### Configuration Examples
|
128
132
|
|
129
133
|
- You should add the following configuration items in your *~/.takelage.yml*
|
data/lib/takelage.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'docker_registry2'
|
4
3
|
require 'etc'
|
5
4
|
require 'fileutils'
|
6
5
|
require 'fylla'
|
@@ -44,7 +43,8 @@ require_relative 'takelage/bit/require/import'
|
|
44
43
|
require_relative 'takelage/bit/require/cli'
|
45
44
|
require_relative 'takelage/bit/cli'
|
46
45
|
require_relative 'takelage/completion/cli'
|
47
|
-
require_relative 'takelage/docker/check/
|
46
|
+
require_relative 'takelage/docker/check/daemon'
|
47
|
+
require_relative 'takelage/docker/check/socat'
|
48
48
|
require_relative 'takelage/docker/check/cli'
|
49
49
|
require_relative 'takelage/docker/socket/lib'
|
50
50
|
require_relative 'takelage/docker/socket/host'
|
@@ -52,18 +52,10 @@ require_relative 'takelage/docker/socket/scheme'
|
|
52
52
|
require_relative 'takelage/docker/socket/start'
|
53
53
|
require_relative 'takelage/docker/socket/stop'
|
54
54
|
require_relative 'takelage/docker/socket/cli'
|
55
|
-
require_relative 'takelage/docker/image/tag/list
|
56
|
-
require_relative 'takelage/docker/image/tag/
|
57
|
-
require_relative 'takelage/docker/image/tag/
|
58
|
-
require_relative 'takelage/docker/image/tag/latest/local'
|
59
|
-
require_relative 'takelage/docker/image/tag/latest/remote'
|
60
|
-
require_relative 'takelage/docker/image/tag/latest/cli'
|
61
|
-
require_relative 'takelage/docker/image/tag/check/local'
|
62
|
-
require_relative 'takelage/docker/image/tag/check/remote'
|
63
|
-
require_relative 'takelage/docker/image/tag/check/cli'
|
55
|
+
require_relative 'takelage/docker/image/tag/list'
|
56
|
+
require_relative 'takelage/docker/image/tag/latest'
|
57
|
+
require_relative 'takelage/docker/image/tag/check'
|
64
58
|
require_relative 'takelage/docker/image/tag/cli'
|
65
|
-
require_relative 'takelage/docker/image/check/outdated'
|
66
|
-
require_relative 'takelage/docker/image/check/cli'
|
67
59
|
require_relative 'takelage/docker/image/update'
|
68
60
|
require_relative 'takelage/docker/image/cli'
|
69
61
|
require_relative 'takelage/docker/container/check/existing'
|
@@ -116,8 +108,9 @@ module Takelage
|
|
116
108
|
# Initialize global singleton project
|
117
109
|
initialize_project
|
118
110
|
|
119
|
-
#
|
111
|
+
# Set defaults
|
120
112
|
@docker_daemon_running = false
|
113
|
+
@socat_command_available = false
|
121
114
|
|
122
115
|
# fylla bash completion code
|
123
116
|
@bash_fylla = Fylla.bash_completion self
|
data/lib/takelage/default.yml
CHANGED
@@ -29,7 +29,8 @@ cmd_bit_scope_add_scope: 'bit remote add %{remote}/%{scope}'
|
|
29
29
|
cmd_bit_scope_list_find_scopes: 'find -L %{root} -name scope.json'
|
30
30
|
cmd_bit_scope_new_bit_init: 'mkdir -p %{root}/%{scope} && cd %{root}/%{scope} && bit init --bare'
|
31
31
|
cmd_bit_scope_remove_scope: 'rm --force --recursive %{root}/%{scope}'
|
32
|
-
|
32
|
+
cmd_docker_check_daemon_docker_info: 'docker info'
|
33
|
+
cmd_docker_check_socat_which_socat: 'which socat'
|
33
34
|
cmd_docker_container_check_existing_docker_ps: 'docker ps --filter name=^%{container}$ --quiet'
|
34
35
|
cmd_docker_container_check_network_docker_network: 'docker network ls --quiet --filter name=^%{network}$'
|
35
36
|
cmd_docker_container_check_orphaned_docker_exec: 'docker exec --interactive %{container} ps a'
|
@@ -41,9 +42,9 @@ cmd_docker_container_get_containers: 'docker ps --all --filter name=^%{docker_re
|
|
41
42
|
cmd_docker_container_remove_network: 'docker network rm %{network}'
|
42
43
|
cmd_docker_container_docker_exec: 'docker exec %{container} su %{username} -c "LANG=en_US.UTF-8 %{command}"'
|
43
44
|
cmd_docker_container_stop_container: 'docker stop %{container}'
|
44
|
-
|
45
|
-
|
46
|
-
cmd_docker_image_update_docker_pull_latest: 'docker pull %{docker_user}/%{docker_repo}
|
45
|
+
cmd_docker_image_tag_check_docker_images: 'docker images --quiet %{image}'
|
46
|
+
cmd_docker_image_tag_list_docker_images: 'docker images %{docker_user}\/%{docker_repo} --format "{{.Tag}}"'
|
47
|
+
cmd_docker_image_update_docker_pull_latest: 'docker pull %{docker_user}/%{docker_repo}:latest'
|
47
48
|
cmd_docker_image_update_docker_remove_dangling: 'docker image prune --force'
|
48
49
|
cmd_docker_socket_config_agent_socket_path: 'gpgconf --list-dirs agent-socket'
|
49
50
|
cmd_docker_socket_config_agent_ssh_socket_path: 'gpgconf --list-dirs agent-ssh-socket'
|
@@ -6,18 +6,31 @@ module Takelage
|
|
6
6
|
include LoggingModule
|
7
7
|
include SystemModule
|
8
8
|
include ConfigModule
|
9
|
-
include
|
9
|
+
include DockerCheckDaemon
|
10
|
+
include DockerCheckSocat
|
10
11
|
|
11
12
|
#
|
12
|
-
# docker check
|
13
|
+
# docker check daemon
|
13
14
|
#
|
14
|
-
desc '
|
15
|
+
desc 'daemon', 'Check if docker daemon is running'
|
15
16
|
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
16
17
|
Check if docker daemon is running
|
17
18
|
LONGDESC
|
18
19
|
# Check if docker daemon is running.
|
19
|
-
def
|
20
|
-
exit
|
20
|
+
def daemon
|
21
|
+
exit docker_check_daemon
|
22
|
+
end
|
23
|
+
|
24
|
+
#
|
25
|
+
# docker check socat
|
26
|
+
#
|
27
|
+
desc 'socat', 'Check if socat command is available'
|
28
|
+
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
29
|
+
Check if socat command is available
|
30
|
+
LONGDESC
|
31
|
+
# Check if socat command is available.
|
32
|
+
def socat
|
33
|
+
exit docker_check_socat
|
21
34
|
end
|
22
35
|
end
|
23
36
|
end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# takelage docker check running
|
4
|
-
module
|
4
|
+
module DockerCheckDaemon
|
5
5
|
# Backend method for docker check running.
|
6
6
|
# @return [Boolean] is the docker daemon running?
|
7
|
-
def
|
7
|
+
def docker_check_daemon
|
8
8
|
return true if @docker_daemon_running
|
9
9
|
|
10
10
|
log.debug 'Check if the docker daemon is running'
|
11
11
|
|
12
|
-
status = try config.active['
|
12
|
+
status = try config.active['cmd_docker_check_daemon_docker_info']
|
13
13
|
|
14
14
|
unless status.exitstatus.zero?
|
15
15
|
log.error 'The docker daemon is not running'
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage docker check running
|
4
|
+
module DockerCheckSocat
|
5
|
+
# Backend method for docker check socat.
|
6
|
+
# @return [Boolean] is the socat command available?
|
7
|
+
def docker_check_socat
|
8
|
+
return true if @socat_command_available
|
9
|
+
|
10
|
+
log.debug 'Check if the socat command is available'
|
11
|
+
|
12
|
+
status = try config.active['cmd_docker_check_socat_which_socat']
|
13
|
+
|
14
|
+
unless status.exitstatus.zero?
|
15
|
+
log.debug 'The socat command is not available'
|
16
|
+
return false
|
17
|
+
end
|
18
|
+
|
19
|
+
log.debug 'The socat command is available'
|
20
|
+
@socat_command_available = true
|
21
|
+
true
|
22
|
+
end
|
23
|
+
end
|
@@ -6,7 +6,8 @@ module Takelage
|
|
6
6
|
include LoggingModule
|
7
7
|
include SystemModule
|
8
8
|
include ConfigModule
|
9
|
-
include
|
9
|
+
include DockerCheckDaemon
|
10
|
+
include DockerCheckSocat
|
10
11
|
include DockerContainerCheckExisting
|
11
12
|
include DockerContainerCheckNetwork
|
12
13
|
include DockerContainerCheckOrphaned
|
@@ -7,7 +7,7 @@ module DockerContainerCheckExisting
|
|
7
7
|
def docker_container_check_existing(container)
|
8
8
|
log.debug "Checking if container \"#{container}\" is existing"
|
9
9
|
|
10
|
-
return false unless
|
10
|
+
return false unless docker_check_daemon
|
11
11
|
|
12
12
|
stdout_str = run _docker_container_cmd_check_existing container
|
13
13
|
|
@@ -7,7 +7,7 @@ module DockerContainerCheckNetwork
|
|
7
7
|
def docker_container_check_network(network)
|
8
8
|
log.debug "Checking if network \"#{network}\" is existing"
|
9
9
|
|
10
|
-
return false unless
|
10
|
+
return false unless docker_check_daemon
|
11
11
|
|
12
12
|
stdout_str = run _docker_container_cmd_check_network network
|
13
13
|
|
@@ -7,7 +7,7 @@ module DockerContainerCheckOrphaned
|
|
7
7
|
def docker_container_check_orphaned(container)
|
8
8
|
log.debug "Check if container \"#{container}\" is orphaned"
|
9
9
|
|
10
|
-
return false unless
|
10
|
+
return false unless docker_check_daemon
|
11
11
|
|
12
12
|
stdout_str = run _docker_container_cmd_check_orphaned container
|
13
13
|
|
@@ -6,7 +6,8 @@ module Takelage
|
|
6
6
|
include LoggingModule
|
7
7
|
include SystemModule
|
8
8
|
include ConfigModule
|
9
|
-
include
|
9
|
+
include DockerCheckDaemon
|
10
|
+
include DockerCheckSocat
|
10
11
|
include DockerContainerCheckExisting
|
11
12
|
include DockerContainerCheckNetwork
|
12
13
|
include DockerContainerCheckOrphaned
|
@@ -16,10 +17,9 @@ module Takelage
|
|
16
17
|
include DockerContainerLogin
|
17
18
|
include DockerContainerClean
|
18
19
|
include DockerContainerPrune
|
19
|
-
include
|
20
|
-
include
|
21
|
-
include
|
22
|
-
include DockerImageCheckOutdated
|
20
|
+
include DockerImageTagLatest
|
21
|
+
include DockerImageTagList
|
22
|
+
include DockerImageTagCheck
|
23
23
|
include DockerSocketLib
|
24
24
|
include DockerSocketHost
|
25
25
|
include DockerSocketScheme
|
@@ -6,7 +6,7 @@ module DockerContainerCommand
|
|
6
6
|
def docker_container_command(command)
|
7
7
|
log.debug 'Running command in container'
|
8
8
|
|
9
|
-
return false unless
|
9
|
+
return false unless docker_check_daemon
|
10
10
|
|
11
11
|
docker_socket_start
|
12
12
|
return false unless _docker_container_lib_create_net_and_ctr @hostname
|
@@ -115,7 +115,7 @@ module DockerContainerLib
|
|
115
115
|
|
116
116
|
# Check if docker image is available
|
117
117
|
def _docker_container_lib_image_available?(image)
|
118
|
-
return true if
|
118
|
+
return true if docker_image_tag_list.include? @docker_tag
|
119
119
|
|
120
120
|
log.error "No local image \"#{image}\" available"
|
121
121
|
log.info "Try: docker pull #{image}"
|
@@ -6,9 +6,8 @@ module DockerContainerLogin
|
|
6
6
|
def docker_container_login
|
7
7
|
log.debug 'Logging in to docker container'
|
8
8
|
|
9
|
-
return false unless
|
9
|
+
return false unless docker_check_daemon
|
10
10
|
|
11
|
-
_docker_container_login_check_outdated
|
12
11
|
docker_socket_start
|
13
12
|
return false unless _docker_container_lib_create_net_and_ctr @hostname
|
14
13
|
|
@@ -17,18 +16,6 @@ module DockerContainerLogin
|
|
17
16
|
|
18
17
|
private
|
19
18
|
|
20
|
-
# Check if newer docker container is available.
|
21
|
-
def _docker_container_login_check_outdated
|
22
|
-
return if @docker_tag == 'latest'
|
23
|
-
|
24
|
-
outdated = docker_image_check_outdated @docker_tag
|
25
|
-
return unless outdated
|
26
|
-
|
27
|
-
tag_latest = docker_image_tag_latest_remote
|
28
|
-
log.warn "#{@docker_user}/#{@docker_repo}:#{@docker_tag} is outdated"
|
29
|
-
log.warn "#{@docker_user}/#{@docker_repo}:#{tag_latest} is available"
|
30
|
-
end
|
31
|
-
|
32
19
|
# Prepare enter existing container command.
|
33
20
|
def _docker_container_login_enter_container(container)
|
34
21
|
log.debug "Entering container \"#{container}\""
|
@@ -6,7 +6,7 @@ module DockerContainerPrune
|
|
6
6
|
def docker_container_prune
|
7
7
|
log.debug 'Removing orphaned docker containers'
|
8
8
|
|
9
|
-
return false unless
|
9
|
+
return false unless docker_check_daemon
|
10
10
|
|
11
11
|
networks = _docker_container_prune_kill_orphaned_containers
|
12
12
|
_docker_container_lib_remove_networks networks
|
@@ -6,9 +6,7 @@ module Takelage
|
|
6
6
|
include LoggingModule
|
7
7
|
include SystemModule
|
8
8
|
include ConfigModule
|
9
|
-
include
|
10
|
-
include DockerImageTagListRemote
|
11
|
-
include DockerImageTagLatestRemote
|
9
|
+
include DockerCheckDaemon
|
12
10
|
include DockerImageUpdate
|
13
11
|
|
14
12
|
# Initialize takelage docker image
|
@@ -21,9 +19,6 @@ module Takelage
|
|
21
19
|
@docker_registry = config.active['docker_registry']
|
22
20
|
end
|
23
21
|
|
24
|
-
desc 'check [COMMAND]', 'Check docker image'
|
25
|
-
subcommand 'check', DockerImageCheck
|
26
|
-
|
27
22
|
desc 'tag [COMMAND]', 'Handle docker image tags'
|
28
23
|
subcommand 'tag', DockerImageTag
|
29
24
|
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage docker image tag check
|
4
|
+
module DockerImageTagCheck
|
5
|
+
# Backend method for docker image tag check.
|
6
|
+
# @return [Boolean] does docker image tag exist?
|
7
|
+
def docker_image_tag_check(tag)
|
8
|
+
log.debug "Check if docker image tag \"#{tag}\" exists"
|
9
|
+
|
10
|
+
return false unless docker_check_daemon
|
11
|
+
|
12
|
+
if tag.to_s.strip.empty?
|
13
|
+
log.warn 'No docker image tag specified'
|
14
|
+
return false
|
15
|
+
end
|
16
|
+
|
17
|
+
image = "#{@docker_user}/#{@docker_repo}:#{tag}"
|
18
|
+
|
19
|
+
return false unless _docker_image_check_image? image
|
20
|
+
|
21
|
+
log.debug "Found docker image \"#{image}\""
|
22
|
+
true
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
# Check if image exists.
|
28
|
+
def _docker_image_check_image?(image)
|
29
|
+
cmd_docker_images =
|
30
|
+
format(
|
31
|
+
config.active['cmd_docker_image_tag_check_docker_images'],
|
32
|
+
image: image
|
33
|
+
)
|
34
|
+
|
35
|
+
if (run cmd_docker_images).to_s.strip.empty?
|
36
|
+
log.debug "No docker image \"#{image}\" found"
|
37
|
+
return false
|
38
|
+
end
|
39
|
+
|
40
|
+
true
|
41
|
+
end
|
42
|
+
end
|
@@ -3,13 +3,66 @@
|
|
3
3
|
module Takelage
|
4
4
|
# takelage docker image tag
|
5
5
|
class DockerImageTag < SubCommandBase
|
6
|
-
|
7
|
-
|
6
|
+
include LoggingModule
|
7
|
+
include SystemModule
|
8
|
+
include ConfigModule
|
9
|
+
include DockerCheckDaemon
|
10
|
+
include DockerImageTagList
|
11
|
+
include DockerImageTagList
|
12
|
+
include DockerImageTagLatest
|
13
|
+
include DockerImageTagCheck
|
8
14
|
|
9
|
-
|
10
|
-
|
15
|
+
# Initialize takelage docker image tag check
|
16
|
+
def initialize(args = [], local_options = {}, configuration = {})
|
17
|
+
# initialize thor parent class
|
18
|
+
super args, local_options, configuration
|
11
19
|
|
12
|
-
|
13
|
-
|
20
|
+
@docker_user = config.active['docker_user']
|
21
|
+
@docker_repo = config.active['docker_repo']
|
22
|
+
@docker_registry = config.active['docker_registry']
|
23
|
+
end
|
24
|
+
|
25
|
+
#
|
26
|
+
# docker image tag check
|
27
|
+
#
|
28
|
+
desc 'check [TAG]', 'Check if docker image [TAG] exists'
|
29
|
+
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
30
|
+
Check if docker image tag exists
|
31
|
+
LONGDESC
|
32
|
+
# Check if docker image tag exists.
|
33
|
+
def check(tag)
|
34
|
+
exit docker_image_tag_check tag
|
35
|
+
end
|
36
|
+
|
37
|
+
#
|
38
|
+
# docker image tag latest
|
39
|
+
#
|
40
|
+
desc 'list', 'Print latest docker image tag'
|
41
|
+
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
42
|
+
Print latest docker image tag
|
43
|
+
Print the tag of the docker image with the highest tag.
|
44
|
+
LONGDESC
|
45
|
+
# Print latest docker image tag.
|
46
|
+
def latest
|
47
|
+
tag_latest = docker_image_tag_latest
|
48
|
+
exit false if tag_latest == false
|
49
|
+
say tag_latest
|
50
|
+
true
|
51
|
+
end
|
52
|
+
|
53
|
+
#
|
54
|
+
# docker image tag list
|
55
|
+
#
|
56
|
+
desc 'list', 'Print docker image tags'
|
57
|
+
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
58
|
+
Print docker image tags
|
59
|
+
LONGDESC
|
60
|
+
# Print docker image tags.
|
61
|
+
def list
|
62
|
+
tag_list = docker_image_tag_list
|
63
|
+
exit false if tag_list == false
|
64
|
+
say tag_list
|
65
|
+
true
|
66
|
+
end
|
14
67
|
end
|
15
68
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage docker image tag latest
|
4
|
+
module DockerImageTagLatest
|
5
|
+
# Backend method for docker image tag latest.
|
6
|
+
# @return [String] latest docker image tag
|
7
|
+
def docker_image_tag_latest
|
8
|
+
log.debug 'Getting latest docker image tag'
|
9
|
+
|
10
|
+
return false unless docker_check_daemon
|
11
|
+
|
12
|
+
tags = docker_image_tag_list
|
13
|
+
|
14
|
+
tag_latest = tags[-1]
|
15
|
+
|
16
|
+
log.debug "Latest docker tag: #{tag_latest}"
|
17
|
+
|
18
|
+
tag_latest
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage docker image tag list
|
4
|
+
module DockerImageTagList
|
5
|
+
# Backend method for docker image tag list.
|
6
|
+
# @return [Array] docker image tags
|
7
|
+
def docker_image_tag_list
|
8
|
+
cmd_docker_tags =
|
9
|
+
format(
|
10
|
+
config.active['cmd_docker_image_tag_list_docker_images'],
|
11
|
+
docker_user: @docker_user,
|
12
|
+
docker_repo: @docker_repo
|
13
|
+
)
|
14
|
+
|
15
|
+
tags = (run cmd_docker_tags).split("\n")
|
16
|
+
|
17
|
+
VersionSorter.sort(tags)
|
18
|
+
end
|
19
|
+
end
|
@@ -4,14 +4,9 @@
|
|
4
4
|
module DockerImageUpdate
|
5
5
|
# Backend method for docker image update.
|
6
6
|
def docker_image_update
|
7
|
-
return false unless
|
7
|
+
return false unless docker_check_daemon
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
tag = 'latest'
|
12
|
-
tag = docker_image_tag_latest_remote unless tags_remote.include?('latest')
|
13
|
-
|
14
|
-
cmd_docker_pull_latest = _docker_image_update_cmd_docker_pull_latest tag
|
9
|
+
cmd_docker_pull_latest = _docker_image_update_cmd_docker_pull_latest
|
15
10
|
|
16
11
|
cmd_docker_remove_dangling =
|
17
12
|
config.active['cmd_docker_image_update_docker_remove_dangling']
|
@@ -22,12 +17,11 @@ module DockerImageUpdate
|
|
22
17
|
private
|
23
18
|
|
24
19
|
# Prepare dpcker pull latest command.
|
25
|
-
def _docker_image_update_cmd_docker_pull_latest
|
20
|
+
def _docker_image_update_cmd_docker_pull_latest
|
26
21
|
format(
|
27
22
|
config.active['cmd_docker_image_update_docker_pull_latest'],
|
28
23
|
docker_user: @docker_user,
|
29
|
-
docker_repo: @docker_repo
|
30
|
-
tag_latest_remote: tag
|
24
|
+
docker_repo: @docker_repo
|
31
25
|
)
|
32
26
|
end
|
33
27
|
end
|
@@ -24,10 +24,9 @@ module DockerSocketHost
|
|
24
24
|
# if interface docker0 exists (== linux host)
|
25
25
|
# then return the ip address
|
26
26
|
addr_infos.each do |addr_info|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
end
|
27
|
+
next unless (addr_info.name == 'docker0') && addr_info.addr.ipv4?
|
28
|
+
|
29
|
+
socket_host = addr_info.addr.ip_address
|
31
30
|
end
|
32
31
|
|
33
32
|
socket_host
|
@@ -6,7 +6,9 @@ module DockerSocketStart
|
|
6
6
|
def docker_socket_start
|
7
7
|
log.debug 'Starting sockets for docker container'
|
8
8
|
|
9
|
-
return false unless
|
9
|
+
return false unless docker_check_daemon
|
10
|
+
|
11
|
+
return false unless docker_check_socat
|
10
12
|
|
11
13
|
cmds_start_socket = _docker_socket_lib_get_socket_start_commands 'start'
|
12
14
|
|
@@ -6,12 +6,13 @@ module DockerSocketStop
|
|
6
6
|
def docker_socket_stop
|
7
7
|
log.debug 'Stopping sockets for docker container'
|
8
8
|
|
9
|
-
return false unless
|
9
|
+
return false unless docker_check_daemon
|
10
|
+
|
11
|
+
return false unless docker_check_socat
|
10
12
|
|
11
13
|
# get process list
|
12
14
|
# assuming format: "pid command"
|
13
|
-
cmd_ps =
|
14
|
-
config.active['cmd_docker_socket_stop_docker_socket_ps']
|
15
|
+
cmd_ps = config.active['cmd_docker_socket_stop_docker_socket_ps']
|
15
16
|
|
16
17
|
stdout_str = run cmd_ps
|
17
18
|
|
@@ -52,5 +52,18 @@ module Takelage
|
|
52
52
|
say project_main_yaml
|
53
53
|
true
|
54
54
|
end
|
55
|
+
|
56
|
+
#
|
57
|
+
# info project dir
|
58
|
+
#
|
59
|
+
desc 'dir', 'Print project root directory'
|
60
|
+
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
61
|
+
Print project root directory
|
62
|
+
LONGDESC
|
63
|
+
# Print project root directory.
|
64
|
+
def dir
|
65
|
+
say project.dir
|
66
|
+
true
|
67
|
+
end
|
55
68
|
end
|
56
69
|
end
|
data/lib/takelage/lib/project.rb
CHANGED
@@ -9,12 +9,13 @@ module ProjectModule
|
|
9
9
|
include SystemModule
|
10
10
|
include ConfigModule
|
11
11
|
|
12
|
-
attr_accessor :active, :private, :main
|
12
|
+
attr_accessor :active, :private, :main, :dir
|
13
13
|
|
14
14
|
def initialize
|
15
15
|
@active = {}
|
16
16
|
@private = {}
|
17
17
|
@main = {}
|
18
|
+
@dir = {}
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
@@ -23,6 +24,8 @@ module ProjectModule
|
|
23
24
|
TakelageProject.instance.main = _project_read_main
|
24
25
|
TakelageProject.instance.private = _project_read_private
|
25
26
|
TakelageProject.instance.active = _project_merge_active
|
27
|
+
TakelageProject.instance.dir =
|
28
|
+
TakelageProject.instance.config.active['project_root_dir']
|
26
29
|
end
|
27
30
|
|
28
31
|
# @return [Object] global singleton project
|
@@ -34,8 +37,8 @@ module ProjectModule
|
|
34
37
|
|
35
38
|
# Read main YAML file.
|
36
39
|
def _project_read_main
|
37
|
-
|
38
|
-
main_file = "#{
|
40
|
+
dir = TakelageProject.instance.config.active['project_root_dir']
|
41
|
+
main_file = "#{dir}/" \
|
39
42
|
"#{TakelageProject.instance.config.active['info_project_main']}"
|
40
43
|
|
41
44
|
return {} unless File.exist? main_file
|
@@ -45,8 +48,8 @@ module ProjectModule
|
|
45
48
|
|
46
49
|
# Read private YAML file.
|
47
50
|
def _project_read_private
|
48
|
-
|
49
|
-
private_file = "#{
|
51
|
+
dir = TakelageProject.instance.config.active['project_root_dir']
|
52
|
+
private_file = "#{dir}/" \
|
50
53
|
"#{TakelageProject.instance.config.active['info_project_private']}"
|
51
54
|
|
52
55
|
return {} unless File.exist? private_file
|
data/lib/takelage/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.23.3
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: takelage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.23.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Geospin
|
@@ -226,7 +226,8 @@ files:
|
|
226
226
|
- lib/takelage/completion/cli.rb
|
227
227
|
- lib/takelage/default.yml
|
228
228
|
- lib/takelage/docker/check/cli.rb
|
229
|
-
- lib/takelage/docker/check/
|
229
|
+
- lib/takelage/docker/check/daemon.rb
|
230
|
+
- lib/takelage/docker/check/socat.rb
|
230
231
|
- lib/takelage/docker/cli.rb
|
231
232
|
- lib/takelage/docker/container/check/cli.rb
|
232
233
|
- lib/takelage/docker/container/check/existing.rb
|
@@ -239,19 +240,11 @@ files:
|
|
239
240
|
- lib/takelage/docker/container/lib.rb
|
240
241
|
- lib/takelage/docker/container/login.rb
|
241
242
|
- lib/takelage/docker/container/prune.rb
|
242
|
-
- lib/takelage/docker/image/check/cli.rb
|
243
|
-
- lib/takelage/docker/image/check/outdated.rb
|
244
243
|
- lib/takelage/docker/image/cli.rb
|
245
|
-
- lib/takelage/docker/image/tag/check
|
246
|
-
- lib/takelage/docker/image/tag/check/local.rb
|
247
|
-
- lib/takelage/docker/image/tag/check/remote.rb
|
244
|
+
- lib/takelage/docker/image/tag/check.rb
|
248
245
|
- lib/takelage/docker/image/tag/cli.rb
|
249
|
-
- lib/takelage/docker/image/tag/latest
|
250
|
-
- lib/takelage/docker/image/tag/
|
251
|
-
- lib/takelage/docker/image/tag/latest/remote.rb
|
252
|
-
- lib/takelage/docker/image/tag/list/cli.rb
|
253
|
-
- lib/takelage/docker/image/tag/list/local.rb
|
254
|
-
- lib/takelage/docker/image/tag/list/remote.rb
|
246
|
+
- lib/takelage/docker/image/tag/latest.rb
|
247
|
+
- lib/takelage/docker/image/tag/list.rb
|
255
248
|
- lib/takelage/docker/image/update.rb
|
256
249
|
- lib/takelage/docker/socket/cli.rb
|
257
250
|
- lib/takelage/docker/socket/host.rb
|
@@ -1,39 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Takelage
|
4
|
-
# takelage docker image check
|
5
|
-
class DockerImageCheck < SubCommandBase
|
6
|
-
include LoggingModule
|
7
|
-
include SystemModule
|
8
|
-
include ConfigModule
|
9
|
-
include DockerCheckRunning
|
10
|
-
include DockerImageTagListRemote
|
11
|
-
include DockerImageTagLatestRemote
|
12
|
-
include DockerImageCheckOutdated
|
13
|
-
|
14
|
-
# Initialize takelage docker image check
|
15
|
-
def initialize(args = [], local_options = {}, configuration = {})
|
16
|
-
# initialize thor parent class
|
17
|
-
super args, local_options, configuration
|
18
|
-
|
19
|
-
@docker_user = config.active['docker_user']
|
20
|
-
@docker_repo = config.active['docker_repo']
|
21
|
-
@docker_registry = config.active['docker_registry']
|
22
|
-
@docker_tag = config.active['docker_tag']
|
23
|
-
end
|
24
|
-
|
25
|
-
#
|
26
|
-
# docker image check outdated
|
27
|
-
#
|
28
|
-
desc 'outdated', 'Check if a docker image is outdated'
|
29
|
-
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
30
|
-
Check if a docker image is outdated
|
31
|
-
LONGDESC
|
32
|
-
# Check if a docker image is outdated.
|
33
|
-
def outdated
|
34
|
-
outdated = docker_image_check_outdated @docker_tag
|
35
|
-
say "Your takelage version \"#{@docker_tag}\" is outdated" if outdated
|
36
|
-
exit outdated
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# takelage docker image check outdated
|
4
|
-
module DockerImageCheckOutdated
|
5
|
-
# Backend method for docker image check outdated.
|
6
|
-
# @return [Boolean] is docker image tag older than latest remote image tag?
|
7
|
-
def docker_image_check_outdated(tag)
|
8
|
-
log.debug "Check if docker image version \"#{tag}\" is outdated"
|
9
|
-
|
10
|
-
return false unless docker_check_running
|
11
|
-
|
12
|
-
return false if _docker_outdated_tag_latest? tag
|
13
|
-
|
14
|
-
tag_latest_remote = docker_image_tag_latest_remote
|
15
|
-
tags = [tag, docker_image_tag_latest_remote]
|
16
|
-
# rubocop:disable Style/RedundantSort
|
17
|
-
outdated = (tag != VersionSorter.sort(tags).last)
|
18
|
-
# rubocop:enable Style/RedundantSort
|
19
|
-
|
20
|
-
_docker_outdated_log_info tag, tag_latest_remote if outdated
|
21
|
-
|
22
|
-
outdated
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
# Check if the tag is "latest".
|
28
|
-
def _docker_outdated_tag_latest?(tag)
|
29
|
-
return false unless tag == 'latest'
|
30
|
-
|
31
|
-
log.debug 'Docker image version "latest" is by definition never outdated'
|
32
|
-
true
|
33
|
-
end
|
34
|
-
|
35
|
-
# Log info if docker image is outdated.
|
36
|
-
def _docker_outdated_log_info(tag, tag_latest_remote)
|
37
|
-
log.debug "Docker image version is outdated: #{tag}"
|
38
|
-
log.debug "Docker image version is available: #{tag_latest_remote}"
|
39
|
-
end
|
40
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Takelage
|
4
|
-
# takelage docker image tag check
|
5
|
-
class DockerImageTagCheck < SubCommandBase
|
6
|
-
include LoggingModule
|
7
|
-
include SystemModule
|
8
|
-
include ConfigModule
|
9
|
-
include DockerCheckRunning
|
10
|
-
include DockerImageTagListRemote
|
11
|
-
include DockerImageTagCheckLocal
|
12
|
-
include DockerImageTagCheckRemote
|
13
|
-
|
14
|
-
# Initialize takelage docker image tag check
|
15
|
-
def initialize(args = [], local_options = {}, configuration = {})
|
16
|
-
# initialize thor parent class
|
17
|
-
super args, local_options, configuration
|
18
|
-
|
19
|
-
@docker_user = config.active['docker_user']
|
20
|
-
@docker_repo = config.active['docker_repo']
|
21
|
-
@docker_registry = config.active['docker_registry']
|
22
|
-
end
|
23
|
-
|
24
|
-
#
|
25
|
-
# docker image tag check local
|
26
|
-
#
|
27
|
-
desc 'local [TAG]', 'Check if local docker image [TAG] exists'
|
28
|
-
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
29
|
-
Check if local docker image tag exists
|
30
|
-
LONGDESC
|
31
|
-
# Check if local docker image tag exists.
|
32
|
-
def local(tag)
|
33
|
-
exit docker_image_tag_check_local tag
|
34
|
-
end
|
35
|
-
|
36
|
-
#
|
37
|
-
# docker image tag check remote
|
38
|
-
#
|
39
|
-
desc 'remote [TAG]', 'Check if remote docker image [TAG] exists'
|
40
|
-
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
41
|
-
Check if remote docker image tag exists
|
42
|
-
LONGDESC
|
43
|
-
# Check if remote docker image tag exists.
|
44
|
-
def remote(tag)
|
45
|
-
exit docker_image_tag_check_remote tag
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# takelage docker image tag check local
|
4
|
-
module DockerImageTagCheckLocal
|
5
|
-
# Backend method for docker image check tag local.
|
6
|
-
# @return [Boolean] does local docker image tag exist?
|
7
|
-
def docker_image_tag_check_local(tag)
|
8
|
-
log.debug "Check if local docker image tag \"#{tag}\" exists"
|
9
|
-
|
10
|
-
return false unless docker_check_running
|
11
|
-
|
12
|
-
if tag.to_s.strip.empty?
|
13
|
-
log.warn 'No local docker image tag specified'
|
14
|
-
return false
|
15
|
-
end
|
16
|
-
|
17
|
-
image = "#{@docker_user}/#{@docker_repo}:#{tag}"
|
18
|
-
|
19
|
-
return false unless _docker_image_check_local_image? image
|
20
|
-
|
21
|
-
log.debug "Found local docker image \"#{image}\""
|
22
|
-
true
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
# Check if local image exists.
|
28
|
-
def _docker_image_check_local_image?(image)
|
29
|
-
cmd_docker_images =
|
30
|
-
format(
|
31
|
-
config.active['cmd_docker_image_tag_check_local_docker_images'],
|
32
|
-
image: image
|
33
|
-
)
|
34
|
-
|
35
|
-
if (run cmd_docker_images).to_s.strip.empty?
|
36
|
-
log.debug "No local docker image \"#{image}\" found"
|
37
|
-
return false
|
38
|
-
end
|
39
|
-
|
40
|
-
true
|
41
|
-
end
|
42
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# takelage docker image tag check remote
|
4
|
-
module DockerImageTagCheckRemote
|
5
|
-
# Backend method for docker image check tag remote.
|
6
|
-
# @return [Boolean] does remote docker image tag exist?
|
7
|
-
def docker_image_tag_check_remote(tag)
|
8
|
-
log.debug "Check if remote image tag \"#{tag}\" exists"
|
9
|
-
|
10
|
-
return false unless docker_check_running
|
11
|
-
|
12
|
-
if tag.to_s.strip.empty?
|
13
|
-
log.warn 'No remote docker image tag specified'
|
14
|
-
return false
|
15
|
-
end
|
16
|
-
|
17
|
-
image = "#{@docker_user}/#{@docker_repo}:#{tag}"
|
18
|
-
|
19
|
-
return false unless _docker_iamge_check_remote_image? image, tag
|
20
|
-
|
21
|
-
log.debug "Found remote docker image \"#{image}\""
|
22
|
-
true
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
# Check if remote image exists.
|
28
|
-
def _docker_iamge_check_remote_image?(image, tag)
|
29
|
-
tags = docker_image_tag_list_remote
|
30
|
-
|
31
|
-
unless tags != false && tags.include?(tag)
|
32
|
-
log.debug "No remote docker image \"#{image}\" found"
|
33
|
-
return false
|
34
|
-
end
|
35
|
-
|
36
|
-
true
|
37
|
-
end
|
38
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Takelage
|
4
|
-
# takelage docker image tag latest
|
5
|
-
class DockerImageTagLatest < SubCommandBase
|
6
|
-
include LoggingModule
|
7
|
-
include SystemModule
|
8
|
-
include ConfigModule
|
9
|
-
include DockerCheckRunning
|
10
|
-
include DockerImageTagListLocal
|
11
|
-
include DockerImageTagListRemote
|
12
|
-
include DockerImageTagLatestLocal
|
13
|
-
include DockerImageTagLatestRemote
|
14
|
-
|
15
|
-
# Initialize takelage docker image tag latest
|
16
|
-
def initialize(args = [], local_options = {}, configuration = {})
|
17
|
-
# initialize thor parent class
|
18
|
-
super args, local_options, configuration
|
19
|
-
|
20
|
-
@docker_user = config.active['docker_user']
|
21
|
-
@docker_repo = config.active['docker_repo']
|
22
|
-
@docker_registry = config.active['docker_registry']
|
23
|
-
end
|
24
|
-
|
25
|
-
#
|
26
|
-
# docker image tag latest local
|
27
|
-
#
|
28
|
-
desc 'local', 'Print latest local docker image tag'
|
29
|
-
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
30
|
-
Print latest local docker image tag
|
31
|
-
Print the tag of the local docker image with the highest tag.
|
32
|
-
LONGDESC
|
33
|
-
# Print latest local docker image tag.
|
34
|
-
def local
|
35
|
-
tag_latest_local = docker_image_tag_latest_local
|
36
|
-
exit false if tag_latest_local == false
|
37
|
-
say tag_latest_local
|
38
|
-
true
|
39
|
-
end
|
40
|
-
|
41
|
-
#
|
42
|
-
# docker image tag latest remote
|
43
|
-
#
|
44
|
-
desc 'remote', 'Print latest remote docker image tag'
|
45
|
-
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
46
|
-
Print latest remote docker image tag
|
47
|
-
Print the tag of the remote docker image with the highest tag.
|
48
|
-
LONGDESC
|
49
|
-
# Print latest remote docker image tag.
|
50
|
-
def remote
|
51
|
-
tag_latest_remote = docker_image_tag_latest_remote
|
52
|
-
exit false if tag_latest_remote == false
|
53
|
-
say tag_latest_remote
|
54
|
-
true
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# takelage docker image tag latest local
|
4
|
-
module DockerImageTagLatestLocal
|
5
|
-
# Backend method for docker image tag latest local.
|
6
|
-
# @return [String] latest local docker image tag
|
7
|
-
def docker_image_tag_latest_local
|
8
|
-
log.debug 'Getting latest local docker image tag'
|
9
|
-
|
10
|
-
return false unless docker_check_running
|
11
|
-
|
12
|
-
tags = docker_image_tag_list_local
|
13
|
-
|
14
|
-
tag_latest_local = tags[-1]
|
15
|
-
|
16
|
-
log.debug "Latest docker local tag: #{tag_latest_local}"
|
17
|
-
|
18
|
-
tag_latest_local
|
19
|
-
end
|
20
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# takelage docker image tag latest remote
|
4
|
-
module DockerImageTagLatestRemote
|
5
|
-
# Backend method for docker image tag latest remote.
|
6
|
-
# @return [String] latest remote docker image tag
|
7
|
-
def docker_image_tag_latest_remote
|
8
|
-
log.debug 'Getting latest remote docker image tag'
|
9
|
-
|
10
|
-
return false unless docker_check_running
|
11
|
-
|
12
|
-
tags = docker_image_tag_list_remote
|
13
|
-
|
14
|
-
if tags == false || tags.nil?
|
15
|
-
log.warn 'No latest docker remote tag'
|
16
|
-
return ''
|
17
|
-
end
|
18
|
-
|
19
|
-
tag_latest_remote = tags[-1]
|
20
|
-
|
21
|
-
log.debug "Latest docker remote tag: #{tag_latest_remote}"
|
22
|
-
|
23
|
-
tag_latest_remote
|
24
|
-
end
|
25
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Takelage
|
4
|
-
# takelage docker image tag list
|
5
|
-
class DockerImageTagList < SubCommandBase
|
6
|
-
include LoggingModule
|
7
|
-
include SystemModule
|
8
|
-
include ConfigModule
|
9
|
-
include DockerCheckRunning
|
10
|
-
include DockerImageTagListLocal
|
11
|
-
include DockerImageTagListRemote
|
12
|
-
|
13
|
-
# Initialize takelage docker image tag list
|
14
|
-
def initialize(args = [], local_options = {}, configuration = {})
|
15
|
-
# initialize thor parent class
|
16
|
-
super args, local_options, configuration
|
17
|
-
|
18
|
-
@docker_user = config.active['docker_user']
|
19
|
-
@docker_repo = config.active['docker_repo']
|
20
|
-
@docker_registry = config.active['docker_registry']
|
21
|
-
end
|
22
|
-
|
23
|
-
#
|
24
|
-
# docker image tag list local
|
25
|
-
#
|
26
|
-
desc 'local', 'Print local docker image tags'
|
27
|
-
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
28
|
-
Print local docker image tags
|
29
|
-
LONGDESC
|
30
|
-
# Print local docker image tags.
|
31
|
-
def local
|
32
|
-
tag_list_local = docker_image_tag_list_local
|
33
|
-
exit false if tag_list_local == false
|
34
|
-
say tag_list_local
|
35
|
-
true
|
36
|
-
end
|
37
|
-
|
38
|
-
#
|
39
|
-
# docker image tag list remote
|
40
|
-
#
|
41
|
-
desc 'remote', 'Print remote docker image tags'
|
42
|
-
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
43
|
-
Print remote docker image tags
|
44
|
-
LONGDESC
|
45
|
-
# Print latest remote docker image tag.
|
46
|
-
def remote
|
47
|
-
tag_list_remote = docker_image_tag_list_remote
|
48
|
-
exit false if tag_list_remote == false
|
49
|
-
say tag_list_remote
|
50
|
-
true
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# takelage docker image tag list local
|
4
|
-
module DockerImageTagListLocal
|
5
|
-
# Backend method for docker image tag list local.
|
6
|
-
# @return [Array] local docker image tags
|
7
|
-
def docker_image_tag_list_local
|
8
|
-
cmd_docker_tags =
|
9
|
-
format(
|
10
|
-
config.active['cmd_docker_image_tag_list_local_docker_images'],
|
11
|
-
docker_user: @docker_user,
|
12
|
-
docker_repo: @docker_repo
|
13
|
-
)
|
14
|
-
|
15
|
-
tags = (run cmd_docker_tags).split("\n")
|
16
|
-
|
17
|
-
VersionSorter.sort(tags)
|
18
|
-
end
|
19
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# takelage docker image tag list remote
|
4
|
-
module DockerImageTagListRemote
|
5
|
-
# Backend method for docker image tag list remote.
|
6
|
-
# @return [Array] remote docker image tags
|
7
|
-
def docker_image_tag_list_remote
|
8
|
-
log.debug 'Getting docker remote tags ' \
|
9
|
-
"of \"#{@docker_user}/#{@docker_repo}\" " \
|
10
|
-
"from \"#{@docker_registry}\""
|
11
|
-
_docker_image_tag_list_remote_tags
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
# Get docker remote tags.
|
17
|
-
def _docker_image_tag_list_remote_tags
|
18
|
-
user = File.basename @docker_user
|
19
|
-
begin
|
20
|
-
registry = DockerRegistry2.connect(@docker_registry)
|
21
|
-
tags = registry.tags("#{user}/#{@docker_repo}")
|
22
|
-
VersionSorter.sort(tags['tags'])
|
23
|
-
rescue RestClient::Exceptions::OpenTimeout
|
24
|
-
log.error "Timeout while connecting to \"#{@docker_registry}\""
|
25
|
-
false
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|