takelage 0.13.2 → 0.13.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/bin/tau +1 -0
- data/lib/Thorfile +2 -0
- data/lib/takelage/bit/check/cli.rb +2 -2
- data/lib/takelage/bit/check/module.rb +21 -12
- data/lib/takelage/bit/cli.rb +1 -3
- data/lib/takelage/bit/clipboard/cli.rb +2 -4
- data/lib/takelage/bit/clipboard/module.rb +264 -194
- data/lib/takelage/bit/scope/cli.rb +2 -2
- data/lib/takelage/bit/scope/module.rb +64 -59
- data/lib/takelage/completion/cli.rb +2 -2
- data/lib/takelage/docker/check/cli.rb +2 -2
- data/lib/takelage/docker/check/module.rb +6 -8
- data/lib/takelage/docker/cli.rb +2 -3
- data/lib/takelage/docker/container/check/cli.rb +2 -2
- data/lib/takelage/docker/container/check/module.rb +28 -19
- data/lib/takelage/docker/container/cli.rb +13 -10
- data/lib/takelage/docker/container/module.rb +143 -110
- data/lib/takelage/docker/image/check/cli.rb +2 -3
- data/lib/takelage/docker/image/check/module.rb +26 -12
- data/lib/takelage/docker/image/cli.rb +3 -4
- data/lib/takelage/docker/image/module.rb +19 -14
- data/lib/takelage/docker/image/tag/check/cli.rb +2 -3
- data/lib/takelage/docker/image/tag/check/module.rb +33 -17
- data/lib/takelage/docker/image/tag/cli.rb +2 -3
- data/lib/takelage/docker/image/tag/latest/cli.rb +2 -3
- data/lib/takelage/docker/image/tag/latest/module.rb +6 -5
- data/lib/takelage/docker/image/tag/list/cli.rb +2 -3
- data/lib/takelage/docker/image/tag/list/module.rb +19 -16
- data/lib/takelage/docker/socket/cli.rb +2 -3
- data/lib/takelage/docker/socket/module.rb +137 -107
- data/lib/takelage/git/check/cli.rb +2 -2
- data/lib/takelage/git/check/module.rb +53 -35
- data/lib/takelage/git/cli.rb +2 -3
- data/lib/takelage/info/cli.rb +2 -3
- data/lib/takelage/info/project/cli.rb +2 -2
- data/lib/takelage/lib/config.rb +62 -45
- data/lib/takelage/lib/logging.rb +33 -16
- data/lib/takelage/lib/project.rb +43 -28
- data/lib/takelage/lib/subcmd.rb +2 -0
- data/lib/takelage/lib/system.rb +43 -27
- data/lib/takelage/self/cli.rb +2 -0
- data/lib/takelage/self/config/cli.rb +2 -0
- data/lib/takelage/self/module.rb +2 -0
- data/lib/takelage/version +1 -1
- data/lib/takelage.rb +6 -7
- metadata +1 -1
@@ -1,83 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# takelage bit scope module
|
2
4
|
module BitScopeModule
|
3
|
-
|
4
5
|
# Backend method for bit scope add.
|
5
6
|
def bit_scope_add(scope)
|
6
7
|
log.debug "Adding bit remote scope \"#{scope}\" to local workspace"
|
7
8
|
|
8
|
-
return false unless configured? %w
|
9
|
+
return false unless configured? %w[bit_ssh bit_remote]
|
9
10
|
|
10
|
-
unless
|
11
|
-
log.error 'No bit workspace'
|
12
|
-
return false
|
13
|
-
end
|
14
|
-
|
15
|
-
if git_check_workspace
|
16
|
-
unless git_check_master
|
17
|
-
log.error 'Not on git master branch'
|
18
|
-
return false
|
19
|
-
end
|
20
|
-
end
|
11
|
+
return false unless _bit_scope_add_workspace_ready?
|
21
12
|
|
22
13
|
# check if bit remote scope exists
|
23
|
-
|
24
|
-
log.debug scope_list
|
25
|
-
unless scope_list.include? scope
|
14
|
+
unless bit_scope_list.include? scope
|
26
15
|
log.error "The bit remote bit scope \"#{scope}\" doesn't exist"
|
27
16
|
return false
|
28
17
|
end
|
29
18
|
|
30
|
-
|
31
|
-
bit_remote =
|
32
|
-
config.active['bit_remote']
|
33
|
-
|
34
|
-
# prepare scope add command
|
35
|
-
cmd_bit_scope_add = "bit remote add #{bit_remote}/#{scope}"
|
36
|
-
run cmd_bit_scope_add
|
19
|
+
run "bit remote add #{config.active['bit_remote']}/#{scope}"
|
37
20
|
|
38
21
|
log.info "Added bit remote scope \"#{scope}\" to local bit workspace"
|
39
22
|
end
|
40
23
|
|
41
24
|
# Backend method for bit scope inbit.
|
42
25
|
def bit_scope_inbit
|
43
|
-
log.debug
|
44
|
-
|
45
|
-
return false unless configured? %w(bit_ssh)
|
26
|
+
log.debug 'Logging in to bit remote server'
|
46
27
|
|
47
|
-
|
48
|
-
config.active['bit_ssh']
|
28
|
+
return false unless configured? %w[bit_ssh]
|
49
29
|
|
50
|
-
run_and_exit
|
30
|
+
run_and_exit config.active['bit_ssh']
|
51
31
|
end
|
52
32
|
|
53
33
|
# Backend method for bit scope list.
|
54
34
|
# @return [String] list of bit scopes
|
55
35
|
def bit_scope_list
|
56
|
-
log.debug
|
36
|
+
log.debug 'Listing bit remote scopes'
|
57
37
|
|
58
|
-
return false unless configured? %w
|
38
|
+
return false unless configured? %w[bit_ssh bit_remote]
|
59
39
|
|
60
40
|
# get ssh command from active config
|
61
41
|
cmd_bit_ssh =
|
62
|
-
|
42
|
+
config.active['bit_ssh']
|
63
43
|
|
64
|
-
|
65
|
-
root =
|
66
|
-
config.active['bit_root']
|
44
|
+
root = config.active['bit_root']
|
67
45
|
|
68
|
-
cmd_bit_scope_list =
|
69
|
-
config.active['cmd_bit_scope_list_find_scopes'] % {
|
70
|
-
root: root
|
71
|
-
}
|
46
|
+
cmd_bit_scope_list = _bit_scope_list_cmd root
|
72
47
|
|
73
48
|
# run ssh command with scope list command
|
74
49
|
scope_list = run "#{cmd_bit_ssh} '#{cmd_bit_scope_list}'"
|
75
50
|
|
76
51
|
# remove bit remote root directory from results
|
77
|
-
scope_list.gsub!(
|
52
|
+
scope_list.gsub!(%r{#{root}/*}, '')
|
78
53
|
|
79
54
|
# remove /scope.json from results
|
80
|
-
scope_list.gsub!(
|
55
|
+
scope_list.gsub!(%r{/scope.json}, '')
|
81
56
|
|
82
57
|
scope_list
|
83
58
|
end
|
@@ -87,31 +62,61 @@ module BitScopeModule
|
|
87
62
|
def bit_scope_new(scope)
|
88
63
|
log.debug "Creating new bit remote scope \"#{scope}\""
|
89
64
|
|
90
|
-
return false unless configured? %w
|
65
|
+
return false unless configured? %w[bit_ssh bit_remote]
|
91
66
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
67
|
+
return false if _bit_scope_exists? scope
|
68
|
+
|
69
|
+
cmd_bit_ssh = config.active['bit_ssh']
|
70
|
+
|
71
|
+
cmd_bit_scope_new = _bit_scope_new_cmd scope
|
72
|
+
|
73
|
+
run "#{cmd_bit_ssh} '#{cmd_bit_scope_new}'"
|
74
|
+
|
75
|
+
log.info "Created new bit remote scope \"#{scope}\""
|
76
|
+
end
|
77
|
+
|
78
|
+
private
|
79
|
+
|
80
|
+
# Check if workspace ready for bit scope add.
|
81
|
+
def _bit_scope_add_workspace_ready?
|
82
|
+
unless bit_check_workspace
|
83
|
+
log.error 'No bit workspace'
|
96
84
|
return false
|
97
85
|
end
|
98
86
|
|
99
|
-
|
100
|
-
cmd_bit_ssh =
|
101
|
-
config.active['bit_ssh']
|
87
|
+
return true unless git_check_workspace
|
102
88
|
|
103
|
-
|
104
|
-
root =
|
105
|
-
config.active['bit_root']
|
89
|
+
return true if git_check_master
|
106
90
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
}
|
91
|
+
log.error 'Not on git master branch'
|
92
|
+
false
|
93
|
+
end
|
111
94
|
|
112
|
-
|
113
|
-
|
95
|
+
# Prepare bit scope list command.
|
96
|
+
def _bit_scope_list_cmd(root)
|
97
|
+
format(
|
98
|
+
config.active['cmd_bit_scope_list_find_scopes'],
|
99
|
+
root: root
|
100
|
+
)
|
101
|
+
end
|
114
102
|
|
115
|
-
|
103
|
+
# Check if bit scope already exists.
|
104
|
+
def _bit_scope_exists?(scope)
|
105
|
+
scope_list = bit_scope_list
|
106
|
+
return false unless scope_list.include? scope
|
107
|
+
|
108
|
+
log.error "The remote bit scope \"#{scope}\" already exists"
|
109
|
+
false
|
110
|
+
end
|
111
|
+
|
112
|
+
# Prepare bit scope new command.
|
113
|
+
def _bit_scope_new_cmd(scope)
|
114
|
+
root = config.active['bit_root']
|
115
|
+
|
116
|
+
format(
|
117
|
+
config.active['cmd_bit_scope_new_bit_init'],
|
118
|
+
scope: scope,
|
119
|
+
root: root
|
120
|
+
)
|
116
121
|
end
|
117
122
|
end
|
@@ -1,24 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# takelage docker check module
|
2
4
|
module DockerCheckModule
|
3
|
-
|
4
5
|
# Backend method for docker check running.
|
5
6
|
# @return [Boolean] is the docker daemon running?
|
6
7
|
def docker_check_running
|
7
8
|
return true if @docker_daemon_running
|
8
9
|
|
9
|
-
log.debug
|
10
|
-
|
11
|
-
cmd_docker_info =
|
12
|
-
config.active['cmd_docker_check_running_docker_info']
|
10
|
+
log.debug 'Check if the docker daemon is running'
|
13
11
|
|
14
|
-
status = try
|
12
|
+
status = try config.active['cmd_docker_check_running_docker_info']
|
15
13
|
|
16
14
|
unless status.exitstatus.zero?
|
17
|
-
log.error
|
15
|
+
log.error 'The docker daemon is not running'
|
18
16
|
return false
|
19
17
|
end
|
20
18
|
|
21
|
-
log.debug
|
19
|
+
log.debug 'The docker daemon is running'
|
22
20
|
@docker_daemon_running = true
|
23
21
|
true
|
24
22
|
end
|
data/lib/takelage/docker/cli.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
module Takelage
|
3
4
|
# takelage docker
|
4
5
|
class Docker < SubCommandBase
|
5
|
-
|
6
6
|
desc 'check [COMMAND]', 'Check docker'
|
7
7
|
subcommand 'check', DockerCheck
|
8
8
|
|
@@ -14,6 +14,5 @@ module Takelage
|
|
14
14
|
|
15
15
|
desc 'socket [COMMAND]', 'Handle sockets for docker containers'
|
16
16
|
subcommand 'socket', DockerSocket
|
17
|
-
|
18
17
|
end
|
19
18
|
end
|
@@ -1,6 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# takelage docker container check module
|
2
4
|
module DockerContainerCheckModule
|
3
|
-
|
4
5
|
# Backend method for docker container check existing.
|
5
6
|
# @return [Boolean] is container existing?
|
6
7
|
def docker_container_check_existing(container)
|
@@ -8,12 +9,7 @@ module DockerContainerCheckModule
|
|
8
9
|
|
9
10
|
return false unless docker_check_running
|
10
11
|
|
11
|
-
|
12
|
-
config.active['cmd_docker_container_check_existing_docker_ps'] % {
|
13
|
-
container: container
|
14
|
-
}
|
15
|
-
|
16
|
-
stdout_str = run cmd_docker_existing
|
12
|
+
stdout_str = run _docker_container_cmd_check_existing container
|
17
13
|
|
18
14
|
if stdout_str.to_s.strip.empty?
|
19
15
|
log.debug "Container \"#{container}\" is not existing"
|
@@ -31,12 +27,7 @@ module DockerContainerCheckModule
|
|
31
27
|
|
32
28
|
return false unless docker_check_running
|
33
29
|
|
34
|
-
|
35
|
-
config.active['cmd_docker_container_check_network_docker_network'] % {
|
36
|
-
network: network
|
37
|
-
}
|
38
|
-
|
39
|
-
stdout_str = run cmd_docker_network
|
30
|
+
stdout_str = run _docker_container_cmd_check_network network
|
40
31
|
|
41
32
|
if stdout_str.to_s.strip.empty?
|
42
33
|
log.debug "Network \"#{network}\" is not existing"
|
@@ -54,12 +45,7 @@ module DockerContainerCheckModule
|
|
54
45
|
|
55
46
|
return false unless docker_check_running
|
56
47
|
|
57
|
-
|
58
|
-
config.active['cmd_docker_container_check_orphaned_docker_exec'] % {
|
59
|
-
container: container
|
60
|
-
}
|
61
|
-
|
62
|
-
stdout_str = run cmd_docker_orphaned
|
48
|
+
stdout_str = run _docker_container_cmd_check_orphaned container
|
63
49
|
|
64
50
|
if stdout_str.include? '/loginpoint.py'
|
65
51
|
log.debug "Container \"#{container}\" isn't orphaned"
|
@@ -69,4 +55,27 @@ module DockerContainerCheckModule
|
|
69
55
|
log.debug "Container \"#{container}\" is orphaned"
|
70
56
|
true
|
71
57
|
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def _docker_container_cmd_check_existing(container)
|
62
|
+
format(
|
63
|
+
config.active['cmd_docker_container_check_existing_docker_ps'],
|
64
|
+
container: container
|
65
|
+
)
|
66
|
+
end
|
67
|
+
|
68
|
+
def _docker_container_cmd_check_network(network)
|
69
|
+
format(
|
70
|
+
config.active['cmd_docker_container_check_network_docker_network'],
|
71
|
+
network: network
|
72
|
+
)
|
73
|
+
end
|
74
|
+
|
75
|
+
def _docker_container_cmd_check_orphaned(container)
|
76
|
+
format(
|
77
|
+
config.active['cmd_docker_container_check_orphaned_docker_exec'],
|
78
|
+
container: container
|
79
|
+
)
|
80
|
+
end
|
72
81
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
module Takelage
|
3
4
|
# takelage docker container
|
4
5
|
class DockerContainer < SubCommandBase
|
5
|
-
|
6
6
|
include LoggingModule
|
7
7
|
include SystemModule
|
8
8
|
include ConfigModule
|
@@ -16,8 +16,9 @@ module Takelage
|
|
16
16
|
include DockerSocketModule
|
17
17
|
|
18
18
|
# Initialize docker container
|
19
|
-
|
20
|
-
|
19
|
+
# rubocop:disable Metrics/MethodLength
|
20
|
+
# rubocop:disable Metrics/AbcSize
|
21
|
+
def initialize(args = [], local_options = {}, configuration = {})
|
21
22
|
# initialize thor parent class
|
22
23
|
super args, local_options, configuration
|
23
24
|
|
@@ -38,11 +39,11 @@ module Takelage
|
|
38
39
|
@gpg_agent_port = config.active['docker_socket_gpg_agent_port']
|
39
40
|
@gpg_ssh_agent_port = config.active['docker_socket_gpg_ssh_agent_port']
|
40
41
|
|
41
|
-
@username = ENV['USER']
|
42
|
+
@username = ENV['USER'] || 'username'
|
42
43
|
@gid = Etc.getpwnam(@username).gid
|
43
44
|
@uid = Etc.getpwnam(@username).uid
|
44
45
|
|
45
|
-
@homedir = ENV['HOME']
|
46
|
+
@homedir = ENV['HOME'] || '/tmp'
|
46
47
|
@workdir = Dir.getwd
|
47
48
|
@hostname = "#{@docker_repo}_#{File.basename(@workdir)}"
|
48
49
|
|
@@ -51,6 +52,8 @@ module Takelage
|
|
51
52
|
@socket_host = docker_socket_host
|
52
53
|
@sockets = docker_socket_scheme
|
53
54
|
end
|
55
|
+
# rubocop:enable Metrics/AbcSize
|
56
|
+
# rubocop:enable Metrics/MethodLength
|
54
57
|
|
55
58
|
desc 'check [COMMAND]', 'Check docker container'
|
56
59
|
subcommand 'check', DockerContainerCheck
|
@@ -71,10 +74,10 @@ module Takelage
|
|
71
74
|
# docker container login
|
72
75
|
#
|
73
76
|
option :development,
|
74
|
-
:
|
75
|
-
:
|
76
|
-
:
|
77
|
-
:
|
77
|
+
aliases: 'd',
|
78
|
+
type: :boolean,
|
79
|
+
default: false,
|
80
|
+
desc: 'Log in to docker container in debug mode'
|
78
81
|
desc 'login', 'Log in to latest local docker container'
|
79
82
|
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
80
83
|
Log in to latest local docker container
|