takelage 0.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 (44) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +674 -0
  3. data/README.md +159 -0
  4. data/bin/tau +5 -0
  5. data/lib/Thorfile +1 -0
  6. data/lib/takelage/bit/cli.rb +18 -0
  7. data/lib/takelage/bit/clipboard/cli.rb +68 -0
  8. data/lib/takelage/bit/clipboard/module.rb +174 -0
  9. data/lib/takelage/bit/scope/cli.rb +58 -0
  10. data/lib/takelage/bit/scope/module.rb +81 -0
  11. data/lib/takelage/completion/cli.rb +21 -0
  12. data/lib/takelage/default.yml +30 -0
  13. data/lib/takelage/docker/cli.rb +16 -0
  14. data/lib/takelage/docker/container/check/cli.rb +40 -0
  15. data/lib/takelage/docker/container/check/module.rb +44 -0
  16. data/lib/takelage/docker/container/cli.rb +127 -0
  17. data/lib/takelage/docker/container/module.rb +168 -0
  18. data/lib/takelage/docker/image/cli.rb +41 -0
  19. data/lib/takelage/docker/image/module.rb +33 -0
  20. data/lib/takelage/docker/image/tag/check/cli.rb +47 -0
  21. data/lib/takelage/docker/image/tag/check/module.rb +56 -0
  22. data/lib/takelage/docker/image/tag/cli.rb +16 -0
  23. data/lib/takelage/docker/image/tag/latest/cli.rb +49 -0
  24. data/lib/takelage/docker/image/tag/latest/module.rb +31 -0
  25. data/lib/takelage/docker/image/tag/list/cli.rb +46 -0
  26. data/lib/takelage/docker/image/tag/list/module.rb +44 -0
  27. data/lib/takelage/docker/socket/cli.rb +61 -0
  28. data/lib/takelage/docker/socket/module.rb +137 -0
  29. data/lib/takelage/git/check/cli.rb +46 -0
  30. data/lib/takelage/git/check/module.rb +64 -0
  31. data/lib/takelage/git/cli.rb +10 -0
  32. data/lib/takelage/info/cli.rb +10 -0
  33. data/lib/takelage/info/project/cli.rb +47 -0
  34. data/lib/takelage/lib/config.rb +80 -0
  35. data/lib/takelage/lib/logging.rb +30 -0
  36. data/lib/takelage/lib/project.rb +57 -0
  37. data/lib/takelage/lib/subcmd.rb +13 -0
  38. data/lib/takelage/lib/system.rb +107 -0
  39. data/lib/takelage/self/cli.rb +40 -0
  40. data/lib/takelage/self/config/cli.rb +70 -0
  41. data/lib/takelage/self/module.rb +26 -0
  42. data/lib/takelage/version +1 -0
  43. data/lib/takelage.rb +198 -0
  44. metadata +185 -0
@@ -0,0 +1,44 @@
1
+ # takelage docker container check module
2
+ module DockerContainerCheckModule
3
+
4
+ # Backend method for docker container check existing.
5
+ # @return [Boolean] is container existing?
6
+ def docker_container_check_existing(container)
7
+ log.debug "Checking if container \"#{container}\" is existing"
8
+
9
+ cmd_docker_existing = 'docker ps ' +
10
+ "--filter name=^#{container}$ " +
11
+ '--quiet'
12
+
13
+ stdout_str, stderr_str, status = run_and_check cmd_docker_existing
14
+
15
+ if stdout_str.to_s.strip.empty?
16
+ log.debug "Container \"#{container}\" is not existing"
17
+ return false
18
+ end
19
+
20
+ log.debug "Container \"#{container}\" is existing"
21
+ true
22
+ end
23
+
24
+ # Backend method for docker container check orphaned.
25
+ # @return [Boolean] is container orphaned?
26
+ def docker_container_check_orphaned(container)
27
+ log.debug "Check if container \"#{container}\" is orphaned"
28
+
29
+ cmd_docker_orphaned = 'docker exec ' +
30
+ '--interactive ' +
31
+ "#{container} " +
32
+ 'ps a'
33
+
34
+ stdout_str, stderr_str, status = run_and_check cmd_docker_orphaned
35
+
36
+ if stdout_str.include? '/loginpoint.py'
37
+ log.debug "Container \"#{container}\" isn't orphaned"
38
+ return false
39
+ end
40
+
41
+ log.debug "Container \"#{container}\" is orphaned"
42
+ true
43
+ end
44
+ end
@@ -0,0 +1,127 @@
1
+ module Takelage
2
+
3
+ # takelage docker container
4
+ class DockerContainer < SubCommandBase
5
+
6
+ include LoggingModule
7
+ include SystemModule
8
+ include ConfigModule
9
+ include DockerContainerCheckModule
10
+ include DockerContainerModule
11
+ include DockerImageTagLatestModule
12
+ include DockerImageTagListModule
13
+ include DockerImageTagCheckModule
14
+ include DockerSocketModule
15
+
16
+ # Initialize takelage docker container
17
+ def initialize(args=[], local_options={}, configuration={})
18
+
19
+ # initialize thor parent class
20
+ super args, local_options, configuration
21
+
22
+ @docker_repo = config.active['docker_repo']
23
+ @docker_image = config.active['docker_image']
24
+ @docker_tag = config.active['docker_tag']
25
+
26
+ @dockersock = '/var/run/docker.sock'
27
+
28
+ @username = ENV['USER'] ? ENV['USER'] : 'username'
29
+ @gid = Etc.getpwnam(@username).gid
30
+ @uid = Etc.getpwnam(@username).uid
31
+
32
+ @homedir = ENV['HOME'] ? ENV['HOME'] : ''
33
+ @workdir = Dir.getwd
34
+ @hostname = "#{@docker_image}_#{File.basename(@workdir)}"
35
+
36
+ @hostsystem = 'macos'
37
+ @timezone = 'Europe/Berlin'
38
+
39
+ @sockets = {
40
+ :'agent-socket' => {
41
+ :path => nil,
42
+ :host => '127.0.0.1',
43
+ :port => config.active['docker_socket_agent_port']},
44
+ :'agent-ssh-socket' => {
45
+ :path => nil,
46
+ :host => '127.0.0.1',
47
+ :port => config.active['docker_socket_agent_ssh_port']},
48
+ :'agent-extra-socket' => {
49
+ :path => nil,
50
+ :host => '127.0.0.1',
51
+ :port => config.active['docker_socket_agent_extra_port']},
52
+ :'agent-browser-socket' => {
53
+ :path => nil,
54
+ :host => '127.0.0.1',
55
+ :port => config.active['docker_socket_agent_browser_port']}}
56
+ _get_socket_paths
57
+ end
58
+
59
+ desc 'check [COMMAND]', 'Check docker container'
60
+ subcommand 'check', DockerContainerCheck
61
+
62
+ #
63
+ # docker container daemon
64
+ #
65
+ desc 'daemon', 'Run docker container in daemon mode'
66
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
67
+ Run docker container in daemon mode
68
+ LONGDESC
69
+ # Run docker container in daemon mode.
70
+ def daemon
71
+ docker_container_daemon
72
+ end
73
+
74
+ #
75
+ # docker container login
76
+ #
77
+ option :development,
78
+ :aliases => 'd',
79
+ :type => :boolean,
80
+ :default => false,
81
+ :desc => 'Log in to docker container in debug mode'
82
+ desc 'login', 'Log in to latest local docker container'
83
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
84
+ Log in to latest local docker container
85
+ LONGDESC
86
+ # Log in to latest local docker container.
87
+ def login
88
+ docker_container_login
89
+ end
90
+
91
+ #
92
+ # docker container nuke
93
+ #
94
+ desc 'nuke', 'Remove all docker containers'
95
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
96
+ Remove all docker containers
97
+ LONGDESC
98
+ # Remove all docker containers.
99
+ def nuke
100
+ docker_container_nuke
101
+ end
102
+
103
+ #
104
+ # docker container purge
105
+ #
106
+ desc 'purge', 'Remove orphaned docker containers'
107
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
108
+ Remove orphaned docker containers
109
+ LONGDESC
110
+ # Remove orphaned docker containers.
111
+ def purge
112
+ docker_container_purge
113
+ end
114
+
115
+ #
116
+ # docker container run
117
+ #
118
+ desc 'command [CMD]', 'Run [CMD] in a docker container'
119
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
120
+ Run command in docker container
121
+ LONGDESC
122
+ # Run command in docker container.
123
+ def command(command)
124
+ docker_container_command(command)
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,168 @@
1
+ # takelage docker container module
2
+ module DockerContainerModule
3
+
4
+ # Backend method for docker container run.
5
+ def docker_container_command(command)
6
+ log.debug "Running command in container"
7
+
8
+ exit false unless configured? %w(docker_repo docker_image docker_tag)
9
+
10
+ docker_socket_start
11
+
12
+ _create_container @hostname unless docker_container_check_existing @hostname
13
+ _run_command_in_container @hostname, command
14
+ end
15
+
16
+ # Backend method for docker container daemon.
17
+ def docker_container_daemon
18
+ log.debug 'Starting docker container as daemon'
19
+
20
+ exit false unless configured? %w(docker_repo docker_image docker_tag)
21
+
22
+ _create_container @hostname unless docker_container_check_existing @hostname
23
+ end
24
+
25
+ # Backend method for docker container login.
26
+ def docker_container_login
27
+ log.debug 'Logging in to docker container'
28
+
29
+ exit false unless configured? %w(docker_repo docker_image docker_tag)
30
+
31
+ docker_socket_start
32
+
33
+ _create_container @hostname unless docker_container_check_existing @hostname
34
+ _enter_container @hostname
35
+ end
36
+
37
+ # Backend method for docker container nuke.
38
+ def docker_container_nuke
39
+ log.debug 'Removing all docker containers'
40
+
41
+ exit false unless configured? %w(docker_image)
42
+
43
+ _get_containers.each do |container|
44
+ _stop_container container
45
+ end
46
+ end
47
+
48
+ # Backend method for docker container purge.
49
+ def docker_container_purge
50
+ log.debug 'Removing orphaned docker containers'
51
+
52
+ exit false unless configured? %w(docker_image)
53
+
54
+ _get_containers.each do |container|
55
+ _stop_container container if docker_container_check_orphaned container
56
+ end
57
+ end
58
+
59
+ # Create docker container.
60
+ def _create_container(container)
61
+ log.debug "Creating container \"#{container}\""
62
+
63
+ if @docker_tag == 'latest'
64
+ tag = docker_image_tag_latest_local
65
+ else
66
+ tag = @docker_tag
67
+ end
68
+
69
+ image = "#{@docker_repo}/#{@docker_image}:#{tag}"
70
+
71
+ log.debug "Using docker image \"#{image}\""
72
+
73
+ unless docker_image_tag_check_local tag
74
+ log.error "Image \"#{image}\" does not exist"
75
+ exit false
76
+ end
77
+
78
+ entrypoint = '/entrypoint.py '
79
+ volume_dev = ''
80
+ if options[:development]
81
+ entrypoint = '/debug/entrypoint.py --debug '
82
+ volume_dev = "--volume #{@workdir}/ansible/roles/geospin-ansible-devel/files:/debug "
83
+ end
84
+
85
+ cmd_docker_create = 'docker run ' +
86
+ '--detach ' +
87
+ "--env GEOSPIN_PROJECT_BASE_DIR=#{@workdir} " +
88
+ '--env GOOGLE_APPLICATION_CREDENTIALS=/srv/google/default.json ' +
89
+ "--env TZ=#{@timezone} " +
90
+ "--hostname #{container} " +
91
+ "--name #{container} " +
92
+ '--privileged ' +
93
+ '--rm ' +
94
+ '--tty ' +
95
+ "--volume #{@dockersock}:/var/run/docker.sock " +
96
+ "--volume #{@homedir}/.config/gcloud:/srv/gcloud " +
97
+ "--volume #{@homedir}/.google:/srv/google " +
98
+ "--volume #{@homedir}:/homedir " +
99
+ "--volume #{@workdir}:/project " +
100
+ volume_dev +
101
+ '--workdir /project ' +
102
+ "#{image} " +
103
+ entrypoint +
104
+ "--gid #{@gid} " +
105
+ "--hostsystem #{@hostsystem} " +
106
+ "--uid #{@uid} " +
107
+ "--username #{@username}"
108
+
109
+ run cmd_docker_create
110
+ end
111
+
112
+ # Enter existing docker container.
113
+ def _enter_container(container)
114
+ log.debug "Entering container \"#{container}\""
115
+
116
+ loginpoint = '/loginpoint.py '
117
+ if options[:development]
118
+ loginpoint = '/loginpoint.py --debug '
119
+ end
120
+
121
+ cmd_docker_enter = 'docker exec ' +
122
+ '--interactive ' +
123
+ '--tty ' +
124
+ "#{container} " +
125
+ loginpoint +
126
+ "--username #{@username}"
127
+
128
+ run_and_exit cmd_docker_enter
129
+ end
130
+
131
+ # Get all docker containers.
132
+ # @return [Array] list of docker containers
133
+ def _get_containers
134
+ log.debug "Getting all #{@docker_image} containers"
135
+
136
+ cmd_docker_get = 'docker ps ' +
137
+ '--all ' +
138
+ "--filter name=^#{@docker_image}_ " +
139
+ '--quiet'
140
+
141
+ stdout_str, stderr_str, status = run_and_check cmd_docker_get
142
+
143
+ # convert stdout lines to array and return array
144
+ stdout_str.split(/\n+/)
145
+ end
146
+
147
+ # Remove container.
148
+ def _stop_container(container)
149
+ log.debug "Stopping container \"#{container}\""
150
+
151
+ cmd_docker_stop = 'docker stop ' +
152
+ "#{container}"
153
+
154
+ run cmd_docker_stop
155
+ end
156
+
157
+ # Enter existing docker container.
158
+ def _run_command_in_container(container, command)
159
+ log.debug "Running command \"#{command}\" in container \"#{container}\""
160
+
161
+ cmd_docker_run_command = 'docker exec ' +
162
+ "#{container} " +
163
+ "su #{@username} " +
164
+ "-c 'LANG=en_US.UTF-8 #{command}'"
165
+
166
+ run_and_exit cmd_docker_run_command
167
+ end
168
+ end
@@ -0,0 +1,41 @@
1
+ module Takelage
2
+
3
+ # takelage docker image
4
+ class DockerImage < SubCommandBase
5
+
6
+ include LoggingModule
7
+ include SystemModule
8
+ include ConfigModule
9
+ include DockerImageTagListModule
10
+ include DockerImageTagLatestModule
11
+ include DockerImageModule
12
+
13
+ # Initialize takelage docker image
14
+ def initialize(args=[], local_options={}, configuration={})
15
+
16
+ # initialize thor parent class
17
+ super args, local_options, configuration
18
+
19
+ @docker_repo = config.active['docker_repo']
20
+ @docker_image = config.active['docker_image']
21
+ @docker_tagsurl = config.active['docker_tagsurl']
22
+ end
23
+
24
+ desc 'tag [COMMAND]', 'Handle docker image tags'
25
+ subcommand 'tag', DockerImageTag
26
+
27
+ #
28
+ # docker image update
29
+ #
30
+ desc 'update', 'Get latest remote docker container'
31
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
32
+ Get latest remote docker container
33
+ This command will download the latest remote version of the takelage docker container.
34
+ When you start the environment the latest locally available container will be used.
35
+ LONGDESC
36
+ # Get latest remote docker container.
37
+ def update
38
+ docker_image_update
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,33 @@
1
+ # takelage docker image module
2
+ module DockerImageModule
3
+
4
+ # Backend method for docker image update.
5
+ def docker_image_update
6
+ exit false unless configured? %w(docker_repo docker_image docker_tagsurl)
7
+
8
+ tag_latest_local = docker_image_tag_latest_local
9
+
10
+ if tag_latest_local.to_s.strip.empty?
11
+ log.error "Unable to get latest local tag"
12
+ exit false
13
+ end
14
+
15
+ tag_latest_remote = docker_image_tag_latest_remote
16
+
17
+ if tag_latest_remote.to_s.strip.empty?
18
+ log.error "Unable to get latest remote tag"
19
+ exit false
20
+ end
21
+
22
+ if Gem::Version.new(tag_latest_local) >= Gem::Version.new(tag_latest_remote)
23
+ log.info 'Already up to date.'
24
+ exit
25
+ end
26
+
27
+ cmd_docker_pull_latest = "docker pull #{@docker_repo}/#{@docker_image}:#{tag_latest_remote}"
28
+
29
+ log.info "Updating to docker image \"#{@docker_repo}/#{@docker_image}:#{tag_latest_remote}\""
30
+
31
+ run_and_exit cmd_docker_pull_latest
32
+ end
33
+ end
@@ -0,0 +1,47 @@
1
+ module Takelage
2
+
3
+ # takelage docker image tag check
4
+ class DockerImageTagCheck < SubCommandBase
5
+
6
+ include LoggingModule
7
+ include SystemModule
8
+ include ConfigModule
9
+ include DockerImageTagListModule
10
+ include DockerImageTagCheckModule
11
+
12
+ # Initialize takelage docker image tag check
13
+ def initialize(args = [], local_options = {}, configuration = {})
14
+
15
+ # initialize thor parent class
16
+ super args, local_options, configuration
17
+
18
+ @docker_repo = config.active['docker_repo']
19
+ @docker_image = config.active['docker_image']
20
+ @docker_tagsurl = config.active['docker_tagsurl']
21
+ end
22
+
23
+ #
24
+ # docker image tag check local
25
+ #
26
+ desc 'local [TAG]', 'Check if local docker image [TAG] exists'
27
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
28
+ Check if local docker image tag exists
29
+ LONGDESC
30
+ # Check if local docker image tag exists.
31
+ def local(tag)
32
+ exit docker_image_tag_check_local tag
33
+ end
34
+
35
+ #
36
+ # docker image tag check remote
37
+ #
38
+ desc 'remote [TAG]', 'Check if remote docker image [TAG] exists'
39
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
40
+ Check if remote docker image tag exists
41
+ LONGDESC
42
+ # Check if remote docker image tag exists.
43
+ def remote(tag)
44
+ exit docker_image_tag_check_remote tag
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,56 @@
1
+ # takelage docker image tag check module
2
+ module DockerImageTagCheckModule
3
+
4
+ # Backend method for docker image check tag local.
5
+ # @return [Boolean] does local docker image tag exist?
6
+ def docker_image_tag_check_local(tag)
7
+ log.debug "Check if local docker image tag \"#{tag}\" exists"
8
+
9
+ exit false unless configured? %w(docker_repo docker_image)
10
+
11
+ if tag.to_s.strip.empty?
12
+ log.warn "No local docker image tag specified"
13
+ return false
14
+ end
15
+
16
+ image = "#{@docker_repo}/#{@docker_image}:#{tag}"
17
+
18
+ cmd_docker_images = 'docker images --quiet ' +
19
+ image
20
+
21
+ stdout_str, stderr_str, status = run_and_check cmd_docker_images
22
+
23
+ if stdout_str.to_s.strip.empty?
24
+ log.debug "No local docker image \"#{image}\" found"
25
+ return false
26
+ end
27
+
28
+ log.debug "Found local docker image \"#{image}\""
29
+ true
30
+ end
31
+
32
+ # Backend method for docker image check tag remote.
33
+ # @return [Boolean] does remote docker image tag exist?
34
+ def docker_image_tag_check_remote(tag)
35
+ log.debug "Check if remote image tag \"#{tag}\" exists"
36
+
37
+ exit false unless configured? %w(docker_repo docker_image docker_tagsurl)
38
+
39
+ if tag .to_s.strip.empty?
40
+ log.warn "No remote docker image tag specified"
41
+ return false
42
+ end
43
+
44
+ image = "#{@docker_repo}/#{@docker_image}:#{tag}"
45
+
46
+ tags = docker_image_tag_list_remote
47
+
48
+ unless tags.include? tag
49
+ log.debug "No remote docker image \"#{image}\" found"
50
+ return false
51
+ end
52
+
53
+ log.debug "Found remote docker image \"#{image}\""
54
+ true
55
+ end
56
+ end
@@ -0,0 +1,16 @@
1
+ module Takelage
2
+
3
+ # takelage docker image tag
4
+ class DockerImageTag < SubCommandBase
5
+
6
+ desc 'check [COMMAND]', 'Check docker image tag'
7
+ subcommand 'check', DockerImageTagCheck
8
+
9
+ desc 'latest [COMMAND]', 'Print latest local or remote docker image tag'
10
+ subcommand 'latest', DockerImageTagLatest
11
+
12
+ desc 'list [COMMAND]', 'Print local or remote docker image tags'
13
+ subcommand 'list', DockerImageTagList
14
+
15
+ end
16
+ end
@@ -0,0 +1,49 @@
1
+ module Takelage
2
+
3
+ # takelage docker image tag latest
4
+ class DockerImageTagLatest < SubCommandBase
5
+
6
+ include LoggingModule
7
+ include SystemModule
8
+ include ConfigModule
9
+ include DockerImageTagListModule
10
+ include DockerImageTagLatestModule
11
+
12
+ # Initialize takelage docker image tag latest
13
+ def initialize(args = [], local_options = {}, configuration = {})
14
+
15
+ # initialize thor parent class
16
+ super args, local_options, configuration
17
+
18
+ @docker_repo = config.active['docker_repo']
19
+ @docker_image = config.active['docker_image']
20
+ @docker_tagsurl = config.active['docker_tagsurl']
21
+ end
22
+
23
+ #
24
+ # docker image tag latest local
25
+ #
26
+ desc 'local', 'Print latest local docker image tag'
27
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
28
+ Print latest local docker image tag
29
+ Print the tag of the local docker image with the highest tag.
30
+ LONGDESC
31
+ # Print latest local docker image tag.
32
+ def local
33
+ say docker_image_tag_latest_local
34
+ end
35
+
36
+ #
37
+ # docker image tag latest remote
38
+ #
39
+ desc 'remote', 'Print latest remote docker image tag'
40
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
41
+ Print latest remote docker image tag
42
+ Print the tag of the remote docker image with the highest tag.
43
+ LONGDESC
44
+ # Print latest remote docker image tag.
45
+ def remote
46
+ say docker_image_tag_latest_remote
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,31 @@
1
+ # takelage docker image tag latest module
2
+ module DockerImageTagLatestModule
3
+
4
+ # Backend method for docker image tag latest local.
5
+ # @return [String] latest local docker image tag
6
+ def docker_image_tag_latest_local
7
+ log.debug "Getting latest local docker image tag"
8
+
9
+ tags = docker_image_tag_list_local
10
+
11
+ tag_latest_local = tags[-1]
12
+
13
+ log.debug "Latest docker local tag: #{tag_latest_local}"
14
+
15
+ tag_latest_local
16
+ end
17
+
18
+ # Backend method for docker image tag latest remote.
19
+ # @return [String] latest remote docker image tag
20
+ def docker_image_tag_latest_remote
21
+ log.debug "Getting latest remote docker image tag"
22
+
23
+ tags = docker_image_tag_list_remote
24
+
25
+ tag_latest_remote = tags[-1]
26
+
27
+ log.debug "Latest docker remote tag: #{tag_latest_remote}"
28
+
29
+ tag_latest_remote
30
+ end
31
+ end
@@ -0,0 +1,46 @@
1
+ module Takelage
2
+
3
+ # takelage docker image tag list
4
+ class DockerImageTagList < SubCommandBase
5
+
6
+ include LoggingModule
7
+ include SystemModule
8
+ include ConfigModule
9
+ include DockerImageTagListModule
10
+
11
+ # Initialize takelage docker image tag list
12
+ def initialize(args = [], local_options = {}, configuration = {})
13
+
14
+ # initialize thor parent class
15
+ super args, local_options, configuration
16
+
17
+ @docker_repo = config.active['docker_repo']
18
+ @docker_image = config.active['docker_image']
19
+ @docker_tagsurl = config.active['docker_tagsurl']
20
+ end
21
+
22
+ #
23
+ # docker image tag list local
24
+ #
25
+ desc 'local', 'Print local docker image tags'
26
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
27
+ Print local docker image tags
28
+ LONGDESC
29
+ # Print local docker image tags.
30
+ def local
31
+ say docker_image_tag_list_local
32
+ end
33
+
34
+ #
35
+ # docker image tag list remote
36
+ #
37
+ desc 'remote', 'Print remote docker image tags'
38
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
39
+ Print remote docker image tags
40
+ LONGDESC
41
+ # Print latest remote docker image tag.
42
+ def remote
43
+ say docker_image_tag_list_remote
44
+ end
45
+ end
46
+ end