takelage 0.21.0 → 0.23.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.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/lib/takelage.rb +4 -13
- data/lib/takelage/bit/clipboard/cli.rb +1 -1
- data/lib/takelage/bit/clipboard/copy.rb +1 -1
- data/lib/takelage/bit/clipboard/lib.rb +20 -8
- data/lib/takelage/bit/clipboard/paste.rb +1 -1
- data/lib/takelage/bit/clipboard/pull.rb +1 -3
- data/lib/takelage/bit/clipboard/push.rb +1 -3
- data/lib/takelage/bit/require/cli.rb +1 -1
- data/lib/takelage/bit/require/import.rb +1 -1
- data/lib/takelage/bit/scope/add.rb +2 -2
- data/lib/takelage/bit/scope/cli.rb +1 -1
- data/lib/takelage/default.yml +8 -6
- data/lib/takelage/docker/container/cli.rb +3 -4
- data/lib/takelage/docker/container/lib.rb +1 -1
- data/lib/takelage/docker/container/login.rb +0 -13
- data/lib/takelage/docker/image/cli.rb +0 -5
- 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 +3 -9
- data/lib/takelage/docker/socket/host.rb +14 -5
- data/lib/takelage/git/check/cli.rb +7 -7
- data/lib/takelage/git/check/main.rb +26 -0
- data/lib/takelage/info/project/cli.rb +13 -0
- data/lib/takelage/lib/logging.rb +1 -1
- data/lib/takelage/lib/project.rb +8 -5
- data/lib/takelage/lib/subcmd.rb +2 -0
- data/lib/takelage/version +1 -1
- metadata +5 -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
- data/lib/takelage/git/check/master.rb +0 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be86ab05e3007ca479cf08765723c1dd3f28c229a78de2be07618a7e30278577
|
4
|
+
data.tar.gz: 03037ef870580fa492323163cfb1754a1059329d6cb5ed1d384bfe7a690be21e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3dbb9cd02e027bffafc7e0d5e9060746bf1164e7a394810f0b010298db8039923bad224a01c4b625294a1618dd326d477478a3c24e3067a79edbb9474eba6c5
|
7
|
+
data.tar.gz: a6c473fabe3c219a3a10f1c7102b7f37bb605ec5ec30791aaef2470eee31f5004f19695f913658168ed7f7c2a6c30ce8ed17f4b8f7b560c900c20c6b7770e621
|
data/README.md
CHANGED
@@ -81,9 +81,10 @@ tau [docker socket scheme](features/cucumber/features/docker/docker.socket.schem
|
|
81
81
|
tau [docker socket start](features/cucumber/features/docker/docker.socket.start.feature) | Start sockets for docker container
|
82
82
|
tau [docker socket stop](features/cucumber/features/docker/docker.socket.stop.feature) | Stop sockets for docker container
|
83
83
|
tau [git check clean](features/cucumber/features/git/git.check.clean.feature) | Check if the git workspace is clean
|
84
|
-
tau [git check
|
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
|
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'
|
@@ -21,7 +20,7 @@ require_relative 'takelage/lib/config'
|
|
21
20
|
require_relative 'takelage/lib/project'
|
22
21
|
|
23
22
|
require_relative 'takelage/git/check/clean'
|
24
|
-
require_relative 'takelage/git/check/
|
23
|
+
require_relative 'takelage/git/check/main'
|
25
24
|
require_relative 'takelage/git/check/workspace'
|
26
25
|
require_relative 'takelage/git/check/cli'
|
27
26
|
require_relative 'takelage/git/cli'
|
@@ -52,18 +51,10 @@ require_relative 'takelage/docker/socket/scheme'
|
|
52
51
|
require_relative 'takelage/docker/socket/start'
|
53
52
|
require_relative 'takelage/docker/socket/stop'
|
54
53
|
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'
|
54
|
+
require_relative 'takelage/docker/image/tag/list'
|
55
|
+
require_relative 'takelage/docker/image/tag/latest'
|
56
|
+
require_relative 'takelage/docker/image/tag/check'
|
64
57
|
require_relative 'takelage/docker/image/tag/cli'
|
65
|
-
require_relative 'takelage/docker/image/check/outdated'
|
66
|
-
require_relative 'takelage/docker/image/check/cli'
|
67
58
|
require_relative 'takelage/docker/image/update'
|
68
59
|
require_relative 'takelage/docker/image/cli'
|
69
60
|
require_relative 'takelage/docker/container/check/existing'
|
@@ -71,7 +71,7 @@ module BitClipboardCopy
|
|
71
71
|
bit_dev = config.active['bit_dev_user']
|
72
72
|
|
73
73
|
# check if scope is a candidate for a bit.dev remote scope
|
74
|
-
if scope.start_with? bit_dev
|
74
|
+
if scope.start_with? "#{bit_dev}."
|
75
75
|
return false unless _bit_clipboard_bit_dev_scope_exists scope
|
76
76
|
else
|
77
77
|
return false unless _bit_clipboard_custom_scope_exists scope
|
@@ -4,6 +4,14 @@
|
|
4
4
|
module BitClipboardLib
|
5
5
|
private
|
6
6
|
|
7
|
+
# Run bit status.
|
8
|
+
def _bit_clipboard_lib_bit_status
|
9
|
+
log.debug 'Running bit status'
|
10
|
+
|
11
|
+
cmd_bit_status = config.active['cmd_bit_clipboard_lib_bit_status']
|
12
|
+
run_and_exit cmd_bit_status
|
13
|
+
end
|
14
|
+
|
7
15
|
# Prepare workspace for bit clipboard.
|
8
16
|
def _bit_clipboard_lib_prepare_workspace
|
9
17
|
unless bit_check_workspace
|
@@ -18,8 +26,8 @@ module BitClipboardLib
|
|
18
26
|
|
19
27
|
# Prepare git workspace for bit clipboard.
|
20
28
|
def _bit_clipboard_lib_prepare_git_workspace
|
21
|
-
unless
|
22
|
-
log.error 'Not on git
|
29
|
+
unless git_check_main
|
30
|
+
log.error 'Not on git main branch'
|
23
31
|
return false
|
24
32
|
end
|
25
33
|
|
@@ -83,12 +91,14 @@ module BitClipboardLib
|
|
83
91
|
run cmd_bit_clipboard_git_commit
|
84
92
|
end
|
85
93
|
|
86
|
-
# git push origin
|
94
|
+
# git push origin main.
|
87
95
|
def _bit_clipboard_lib_git_push
|
88
|
-
log.debug 'Pushing
|
96
|
+
log.debug 'Pushing main branch to origin'
|
89
97
|
|
90
|
-
cmd_bit_clipboard_git_push =
|
91
|
-
config.active['cmd_bit_clipboard_git_push']
|
98
|
+
cmd_bit_clipboard_git_push = format(
|
99
|
+
config.active['cmd_bit_clipboard_git_push'],
|
100
|
+
main: config.active['git_main_branch']
|
101
|
+
)
|
92
102
|
|
93
103
|
run cmd_bit_clipboard_git_push
|
94
104
|
end
|
@@ -96,8 +106,10 @@ module BitClipboardLib
|
|
96
106
|
# git pull.
|
97
107
|
def _bit_clipboard_lib_git_pull
|
98
108
|
log.debug 'Updating git workspace'
|
99
|
-
cmd_bit_clipboard_git_pull =
|
100
|
-
config.active['cmd_bit_clipboard_git_pull']
|
109
|
+
cmd_bit_clipboard_git_pull = format(
|
110
|
+
config.active['cmd_bit_clipboard_git_pull'],
|
111
|
+
main: config.active['git_main_branch']
|
112
|
+
)
|
101
113
|
|
102
114
|
return true if try cmd_bit_clipboard_git_pull
|
103
115
|
|
@@ -42,7 +42,7 @@ module BitClipboardPaste
|
|
42
42
|
|
43
43
|
bit_list_scope = _bit_clipboard_paste_cid_exists_list_scope scope
|
44
44
|
|
45
|
-
return true if bit_list_scope.include?
|
45
|
+
return true if bit_list_scope.include? "\"id\": \"#{cid}\","
|
46
46
|
|
47
47
|
log.error "No remote component \"#{cid}\""
|
48
48
|
false
|
@@ -71,7 +71,7 @@ module BitRequireImport
|
|
71
71
|
|
72
72
|
# Check if there are bit components
|
73
73
|
def _bit_require_import_check_component_valid(component, scope)
|
74
|
-
return true if
|
74
|
+
return true if component.instance_of?(Hash) && component.key?('name')
|
75
75
|
|
76
76
|
log.error "No component in #{scope}"
|
77
77
|
false
|
data/lib/takelage/default.yml
CHANGED
@@ -6,6 +6,7 @@ bit_root: '/bit'
|
|
6
6
|
bit_ssh: ''
|
7
7
|
cmd_bit_check_workspace_bit_list: 'bit list'
|
8
8
|
cmd_bit_check_workspace_pwd: 'pwd'
|
9
|
+
cmd_bit_clipboard_lib_bit_status: 'bit status'
|
9
10
|
cmd_bit_clipboard_copy_bit_list_scope: 'bit list --skip-update --json %{scope}'
|
10
11
|
cmd_bit_clipboard_copy_bit_list_remotes: 'bit remote --skip-update'
|
11
12
|
cmd_bit_clipboard_copy_bit_add_dir: 'bit add --skip-update --id %{id} --main %{dir}/README.bit %{dir}'
|
@@ -13,8 +14,8 @@ cmd_bit_clipboard_copy_bit_tag_id: 'bit tag --skip-update --skip-tests %{id}'
|
|
13
14
|
cmd_bit_clipboard_copy_bit_export_to_scope: 'bit export --skip-update %{scope}'
|
14
15
|
cmd_bit_clipboard_git_add: 'git add %{file}'
|
15
16
|
cmd_bit_clipboard_git_commit: 'git commit --message="%{message}"'
|
16
|
-
cmd_bit_clipboard_git_pull: 'git pull origin
|
17
|
-
cmd_bit_clipboard_git_push: 'git push origin
|
17
|
+
cmd_bit_clipboard_git_pull: 'git pull origin %{main}'
|
18
|
+
cmd_bit_clipboard_git_push: 'git push origin %{main}'
|
18
19
|
cmd_bit_clipboard_paste_bit_list_scope: 'bit list --skip-update --json %{scope}'
|
19
20
|
cmd_bit_clipboard_paste_bit_import_cid: 'bit import --ignore-package-json --ignore-dist --skip-update --path %{dir} %{cid}'
|
20
21
|
cmd_bit_clipboard_pull_bit_import_all: 'bit import --ignore-package-json --ignore-dist --skip-update'
|
@@ -40,9 +41,9 @@ cmd_docker_container_get_containers: 'docker ps --all --filter name=^%{docker_re
|
|
40
41
|
cmd_docker_container_remove_network: 'docker network rm %{network}'
|
41
42
|
cmd_docker_container_docker_exec: 'docker exec %{container} su %{username} -c "LANG=en_US.UTF-8 %{command}"'
|
42
43
|
cmd_docker_container_stop_container: 'docker stop %{container}'
|
43
|
-
|
44
|
-
|
45
|
-
cmd_docker_image_update_docker_pull_latest: 'docker pull %{docker_user}/%{docker_repo}
|
44
|
+
cmd_docker_image_tag_check_docker_images: 'docker images --quiet %{image}'
|
45
|
+
cmd_docker_image_tag_list_docker_images: 'docker images %{docker_user}\/%{docker_repo} --format "{{.Tag}}"'
|
46
|
+
cmd_docker_image_update_docker_pull_latest: 'docker pull %{docker_user}/%{docker_repo}:latest'
|
46
47
|
cmd_docker_image_update_docker_remove_dangling: 'docker image prune --force'
|
47
48
|
cmd_docker_socket_config_agent_socket_path: 'gpgconf --list-dirs agent-socket'
|
48
49
|
cmd_docker_socket_config_agent_ssh_socket_path: 'gpgconf --list-dirs agent-ssh-socket'
|
@@ -53,7 +54,7 @@ cmd_docker_socket_stop_docker_socket_kill: 'sudo kill -SIGTERM %{pid}'
|
|
53
54
|
cmd_git_check_clean_git_unstaged: 'git diff --exit-code'
|
54
55
|
cmd_git_check_clean_git_uncommitted: 'git diff --cached --exit-code'
|
55
56
|
cmd_git_check_clean_git_status: 'git status --porcelain'
|
56
|
-
|
57
|
+
cmd_git_check_main_git_branch: 'git symbolic-ref HEAD'
|
57
58
|
cmd_git_check_workspace_git_repo: 'git -C . rev-parse'
|
58
59
|
cmd_git_check_workspace_pwd: 'pwd'
|
59
60
|
docker_debug: 'ansible/roles/takel-takelage/files/takelscripts'
|
@@ -67,5 +68,6 @@ docker_socket_gpg_agent_port: 17874
|
|
67
68
|
docker_socket_gpg_ssh_agent_port: 17875
|
68
69
|
docker_tag: 'latest'
|
69
70
|
docker_user: 'takelage'
|
71
|
+
git_main_branch: 'main'
|
70
72
|
info_project_main: 'project.yml'
|
71
73
|
info_project_private: 'private/project.yml'
|
@@ -16,10 +16,9 @@ module Takelage
|
|
16
16
|
include DockerContainerLogin
|
17
17
|
include DockerContainerClean
|
18
18
|
include DockerContainerPrune
|
19
|
-
include
|
20
|
-
include
|
21
|
-
include
|
22
|
-
include DockerImageCheckOutdated
|
19
|
+
include DockerImageTagLatest
|
20
|
+
include DockerImageTagList
|
21
|
+
include DockerImageTagCheck
|
23
22
|
include DockerSocketLib
|
24
23
|
include DockerSocketHost
|
25
24
|
include DockerSocketScheme
|
@@ -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}"
|
@@ -8,7 +8,6 @@ module DockerContainerLogin
|
|
8
8
|
|
9
9
|
return false unless docker_check_running
|
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}\""
|
@@ -7,8 +7,6 @@ module Takelage
|
|
7
7
|
include SystemModule
|
8
8
|
include ConfigModule
|
9
9
|
include DockerCheckRunning
|
10
|
-
include DockerImageTagListRemote
|
11
|
-
include DockerImageTagLatestRemote
|
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_running
|
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 DockerCheckRunning
|
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_running
|
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
|
@@ -6,12 +6,7 @@ module DockerImageUpdate
|
|
6
6
|
def docker_image_update
|
7
7
|
return false unless docker_check_running
|
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
|
@@ -6,6 +6,17 @@ module DockerSocketHost
|
|
6
6
|
def docker_socket_host
|
7
7
|
log.debug 'Getting docker socket host ip address'
|
8
8
|
|
9
|
+
socket_host = _docker_socket_host_get_socket_host
|
10
|
+
|
11
|
+
log.debug "Docker socket host ip address is \"#{socket_host}\""
|
12
|
+
|
13
|
+
socket_host
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
# Get the socket host, i.e. the ip of the docker host.
|
19
|
+
def _docker_socket_host_get_socket_host
|
9
20
|
socket_host = '127.0.0.1'
|
10
21
|
|
11
22
|
addr_infos = Socket.getifaddrs
|
@@ -13,12 +24,10 @@ module DockerSocketHost
|
|
13
24
|
# if interface docker0 exists (== linux host)
|
14
25
|
# then return the ip address
|
15
26
|
addr_infos.each do |addr_info|
|
16
|
-
|
17
|
-
socket_host = addr_info.addr.ip_address if addr_info.addr.ipv4?
|
18
|
-
end
|
19
|
-
end
|
27
|
+
next unless (addr_info.name == 'docker0') && addr_info.addr.ipv4?
|
20
28
|
|
21
|
-
|
29
|
+
socket_host = addr_info.addr.ip_address
|
30
|
+
end
|
22
31
|
|
23
32
|
socket_host
|
24
33
|
end
|
@@ -7,7 +7,7 @@ module Takelage
|
|
7
7
|
include SystemModule
|
8
8
|
include ConfigModule
|
9
9
|
include GitCheckClean
|
10
|
-
include
|
10
|
+
include GitCheckMain
|
11
11
|
include GitCheckWorkspace
|
12
12
|
|
13
13
|
#
|
@@ -23,15 +23,15 @@ module Takelage
|
|
23
23
|
end
|
24
24
|
|
25
25
|
#
|
26
|
-
# git check
|
26
|
+
# git check main
|
27
27
|
#
|
28
|
-
desc '
|
28
|
+
desc 'main', 'Check if we are on the git main branch'
|
29
29
|
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
30
|
-
Check if we are on the git
|
30
|
+
Check if we are on the git main branch
|
31
31
|
LONGDESC
|
32
|
-
# Check if we are on the git
|
33
|
-
def
|
34
|
-
exit
|
32
|
+
# Check if we are on the git main branch.
|
33
|
+
def main
|
34
|
+
exit git_check_main
|
35
35
|
end
|
36
36
|
|
37
37
|
#
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage git check main
|
4
|
+
module GitCheckMain
|
5
|
+
# Backend method for git check main.
|
6
|
+
# @return [Boolean] are we on the git main branch?
|
7
|
+
def git_check_main
|
8
|
+
log.debug 'Check if we are on the git main branch'
|
9
|
+
|
10
|
+
return false unless git_check_workspace
|
11
|
+
|
12
|
+
branch = _git_check_main_get_branch
|
13
|
+
log.debug "We are on git branch \"#{branch}\""
|
14
|
+
|
15
|
+
branch == config.active['git_main_branch']
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
# Get git branch.
|
21
|
+
def _git_check_main_get_branch
|
22
|
+
cmd_get_branch =
|
23
|
+
config.active['cmd_git_check_main_git_branch']
|
24
|
+
(run cmd_get_branch).strip.split('/')[-1]
|
25
|
+
end
|
26
|
+
end
|
@@ -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/logging.rb
CHANGED
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/lib/subcmd.rb
CHANGED
@@ -3,9 +3,11 @@
|
|
3
3
|
# Thor with subcommands that work correctly with help
|
4
4
|
class SubCommandBase < Thor
|
5
5
|
# Set the subcommand banner.
|
6
|
+
# rubocop:disable Style/OptionalBooleanParameter
|
6
7
|
def self.banner(command, _namespace = nil, _subcommand = false)
|
7
8
|
"#{basename} #{subcommand_prefix} #{command.usage}"
|
8
9
|
end
|
10
|
+
# rubocop:enable Style/OptionalBooleanParameter
|
9
11
|
|
10
12
|
# Set the subcommand prefix.
|
11
13
|
def self.subcommand_prefix
|
data/lib/takelage/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.23.0
|
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.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Geospin
|
@@ -239,19 +239,11 @@ files:
|
|
239
239
|
- lib/takelage/docker/container/lib.rb
|
240
240
|
- lib/takelage/docker/container/login.rb
|
241
241
|
- lib/takelage/docker/container/prune.rb
|
242
|
-
- lib/takelage/docker/image/check/cli.rb
|
243
|
-
- lib/takelage/docker/image/check/outdated.rb
|
244
242
|
- 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
|
243
|
+
- lib/takelage/docker/image/tag/check.rb
|
248
244
|
- 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
|
245
|
+
- lib/takelage/docker/image/tag/latest.rb
|
246
|
+
- lib/takelage/docker/image/tag/list.rb
|
255
247
|
- lib/takelage/docker/image/update.rb
|
256
248
|
- lib/takelage/docker/socket/cli.rb
|
257
249
|
- lib/takelage/docker/socket/host.rb
|
@@ -261,7 +253,7 @@ files:
|
|
261
253
|
- lib/takelage/docker/socket/stop.rb
|
262
254
|
- lib/takelage/git/check/clean.rb
|
263
255
|
- lib/takelage/git/check/cli.rb
|
264
|
-
- lib/takelage/git/check/
|
256
|
+
- lib/takelage/git/check/main.rb
|
265
257
|
- lib/takelage/git/check/workspace.rb
|
266
258
|
- lib/takelage/git/cli.rb
|
267
259
|
- lib/takelage/info/cli.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
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# takelage git check master
|
4
|
-
module GitCheckMaster
|
5
|
-
# Backend method for git check master.
|
6
|
-
# @return [Boolean] are we on the git master branch?
|
7
|
-
def git_check_master
|
8
|
-
log.debug 'Check if we are on the git master branch'
|
9
|
-
|
10
|
-
return false unless git_check_workspace
|
11
|
-
|
12
|
-
branch = _git_check_master_get_branch
|
13
|
-
log.debug "We are on git branch \"#{branch}\""
|
14
|
-
|
15
|
-
branch == 'master'
|
16
|
-
end
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
# Get git branch.
|
21
|
-
def _git_check_master_get_branch
|
22
|
-
cmd_get_branch =
|
23
|
-
config.active['cmd_git_check_master_git_branch']
|
24
|
-
(run cmd_get_branch).strip.split('/')[-1]
|
25
|
-
end
|
26
|
-
end
|