takelage 0.18.1
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 +7 -0
- data/LICENSE +674 -0
- data/README.md +213 -0
- data/bin/tau +6 -0
- data/lib/Thorfile +3 -0
- data/lib/takelage.rb +230 -0
- data/lib/takelage/bit/check/cli.rb +23 -0
- data/lib/takelage/bit/check/workspace.rb +37 -0
- data/lib/takelage/bit/cli.rb +15 -0
- data/lib/takelage/bit/clipboard/cli.rb +73 -0
- data/lib/takelage/bit/clipboard/copy.rb +140 -0
- data/lib/takelage/bit/clipboard/lib.rb +132 -0
- data/lib/takelage/bit/clipboard/paste.rb +57 -0
- data/lib/takelage/bit/clipboard/pull.rb +37 -0
- data/lib/takelage/bit/clipboard/push.rb +37 -0
- data/lib/takelage/bit/scope/add.rb +55 -0
- data/lib/takelage/bit/scope/cli.rb +74 -0
- data/lib/takelage/bit/scope/inbit.rb +13 -0
- data/lib/takelage/bit/scope/list.rb +41 -0
- data/lib/takelage/bit/scope/new.rb +44 -0
- data/lib/takelage/completion/cli.rb +24 -0
- data/lib/takelage/default.yml +68 -0
- data/lib/takelage/docker/check/cli.rb +23 -0
- data/lib/takelage/docker/check/running.rb +23 -0
- data/lib/takelage/docker/cli.rb +18 -0
- data/lib/takelage/docker/container/check/cli.rb +57 -0
- data/lib/takelage/docker/container/check/existing.rb +31 -0
- data/lib/takelage/docker/container/check/network.rb +31 -0
- data/lib/takelage/docker/container/check/orphaned.rb +31 -0
- data/lib/takelage/docker/container/clean.rb +39 -0
- data/lib/takelage/docker/container/cli.rb +114 -0
- data/lib/takelage/docker/container/command.rb +33 -0
- data/lib/takelage/docker/container/daemon.rb +13 -0
- data/lib/takelage/docker/container/lib.rb +160 -0
- data/lib/takelage/docker/container/login.rb +46 -0
- data/lib/takelage/docker/container/prune.rb +30 -0
- data/lib/takelage/docker/image/check/cli.rb +39 -0
- data/lib/takelage/docker/image/check/outdated.rb +40 -0
- data/lib/takelage/docker/image/cli.rb +44 -0
- data/lib/takelage/docker/image/tag/check/cli.rb +48 -0
- data/lib/takelage/docker/image/tag/check/local.rb +42 -0
- data/lib/takelage/docker/image/tag/check/remote.rb +38 -0
- data/lib/takelage/docker/image/tag/cli.rb +15 -0
- data/lib/takelage/docker/image/tag/latest/cli.rb +57 -0
- data/lib/takelage/docker/image/tag/latest/local.rb +20 -0
- data/lib/takelage/docker/image/tag/latest/remote.rb +25 -0
- data/lib/takelage/docker/image/tag/list/cli.rb +53 -0
- data/lib/takelage/docker/image/tag/list/local.rb +19 -0
- data/lib/takelage/docker/image/tag/list/remote.rb +28 -0
- data/lib/takelage/docker/image/update.rb +33 -0
- data/lib/takelage/docker/socket/cli.rb +75 -0
- data/lib/takelage/docker/socket/host.rb +25 -0
- data/lib/takelage/docker/socket/lib.rb +88 -0
- data/lib/takelage/docker/socket/scheme.rb +63 -0
- data/lib/takelage/docker/socket/start.rb +34 -0
- data/lib/takelage/docker/socket/stop.rb +55 -0
- data/lib/takelage/git/check/clean.rb +46 -0
- data/lib/takelage/git/check/cli.rb +49 -0
- data/lib/takelage/git/check/master.rb +26 -0
- data/lib/takelage/git/check/workspace.rb +33 -0
- data/lib/takelage/git/cli.rb +9 -0
- data/lib/takelage/info/cli.rb +9 -0
- data/lib/takelage/info/project/cli.rb +56 -0
- data/lib/takelage/lib/config.rb +114 -0
- data/lib/takelage/lib/logging.rb +47 -0
- data/lib/takelage/lib/project.rb +69 -0
- data/lib/takelage/lib/subcmd.rb +16 -0
- data/lib/takelage/lib/system.rb +104 -0
- data/lib/takelage/self/cli.rb +43 -0
- data/lib/takelage/self/config/cli.rb +82 -0
- data/lib/takelage/self/list.rb +30 -0
- data/lib/takelage/version +1 -0
- metadata +298 -0
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage docker container login
|
4
|
+
module DockerContainerLogin
|
5
|
+
# Backend method for docker container login.
|
6
|
+
def docker_container_login
|
7
|
+
log.debug 'Logging in to docker container'
|
8
|
+
|
9
|
+
return false unless docker_check_running
|
10
|
+
|
11
|
+
_docker_container_login_check_outdated
|
12
|
+
docker_socket_start
|
13
|
+
return false unless _docker_container_lib_create_net_and_ctr @hostname
|
14
|
+
|
15
|
+
run_and_exit _docker_container_login_enter_container @hostname
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
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
|
+
# Prepare enter existing container command.
|
33
|
+
def _docker_container_login_enter_container(container)
|
34
|
+
log.debug "Entering container \"#{container}\""
|
35
|
+
|
36
|
+
loginpoint = '/loginpoint.py'
|
37
|
+
loginpoint = '/debug/loginpoint.py --debug ' if options[:debug]
|
38
|
+
|
39
|
+
format(
|
40
|
+
config.active['cmd_docker_container_enter_container'],
|
41
|
+
container: container,
|
42
|
+
loginpoint: loginpoint,
|
43
|
+
username: @username
|
44
|
+
)
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage docker container prune
|
4
|
+
module DockerContainerPrune
|
5
|
+
# Backend method for docker container prune.
|
6
|
+
def docker_container_prune
|
7
|
+
log.debug 'Removing orphaned docker containers'
|
8
|
+
|
9
|
+
return false unless docker_check_running
|
10
|
+
|
11
|
+
networks = _docker_container_prune_kill_orphaned_containers
|
12
|
+
_docker_container_lib_remove_networks networks
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
# Kill orphaned docker containers and return list of networks
|
18
|
+
def _docker_container_prune_kill_orphaned_containers
|
19
|
+
networks = []
|
20
|
+
|
21
|
+
_docker_container_lib_get_containers.each do |container|
|
22
|
+
next unless docker_container_check_orphaned container
|
23
|
+
|
24
|
+
name = _docker_container_lib_get_container_name_by_id container
|
25
|
+
_docker_container_lib_stop_container container
|
26
|
+
networks << name unless networks.include? name
|
27
|
+
end
|
28
|
+
networks
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,39 @@
|
|
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
|
@@ -0,0 +1,40 @@
|
|
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
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Takelage
|
4
|
+
# takelage docker image
|
5
|
+
class DockerImage < SubCommandBase
|
6
|
+
include LoggingModule
|
7
|
+
include SystemModule
|
8
|
+
include ConfigModule
|
9
|
+
include DockerCheckRunning
|
10
|
+
include DockerImageTagListRemote
|
11
|
+
include DockerImageTagLatestRemote
|
12
|
+
include DockerImageUpdate
|
13
|
+
|
14
|
+
# Initialize takelage docker image
|
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
|
+
desc 'check [COMMAND]', 'Check docker image'
|
25
|
+
subcommand 'check', DockerImageCheck
|
26
|
+
|
27
|
+
desc 'tag [COMMAND]', 'Handle docker image tags'
|
28
|
+
subcommand 'tag', DockerImageTag
|
29
|
+
|
30
|
+
#
|
31
|
+
# docker image update
|
32
|
+
#
|
33
|
+
desc 'update', 'Get latest remote docker container'
|
34
|
+
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
35
|
+
Get latest remote docker container
|
36
|
+
This command will download the latest remote version of the takelage docker container.
|
37
|
+
When you start the environment the latest locally available container will be used.
|
38
|
+
LONGDESC
|
39
|
+
# Get latest remote docker container.
|
40
|
+
def update
|
41
|
+
exit docker_image_update
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,48 @@
|
|
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
|
@@ -0,0 +1,42 @@
|
|
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
|
@@ -0,0 +1,38 @@
|
|
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
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Takelage
|
4
|
+
# takelage docker image tag
|
5
|
+
class DockerImageTag < SubCommandBase
|
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
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,57 @@
|
|
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
|
@@ -0,0 +1,20 @@
|
|
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
|
@@ -0,0 +1,25 @@
|
|
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
|