takelage 0.27.1 → 0.28.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 689104aead67286437fded2a138c0a043f9eb9604a7a44375df45a5f9d66de68
4
- data.tar.gz: 91fe52a44bfc3025b284ae155879a1c5d948a34baba5fc2a903c376c8996062e
3
+ metadata.gz: c9cbafaa5bcc3f8d74cf010208562a6a117e2051878031c723591ab3b11ec382
4
+ data.tar.gz: '087322623aab1f24da511744d2e5f28377077593bc48e10c433ac7f8406c413b'
5
5
  SHA512:
6
- metadata.gz: 948586185c0cf2b448d3ad14d49c80742e73e5517d545cbd951908d062ceb2a1aec0e2404c86deec18e8b916c597dc246e2129b21e165986ed5cb55b367f1c89
7
- data.tar.gz: 82c8e74a3e9673707f0ca2ce1cb865e73bff2282208ac0d76b8ba21eed04e6cefc07b84080faeaafa10bd34e324beafb2e5537ebd7a6a6e809e40dd0342bad43
6
+ metadata.gz: 5998e3c792f0173950380450329100d039802219b48d7b1d88f07985a3df6f3510f30943a7becbd78a966837a93a0927ae30cc8e32b940e785952b10094e7708
7
+ data.tar.gz: 8ec3aa7a7fb9737915ee4cbbeb541483aa2cb97871423f415df66213675fc86d7ba24c45bc53d4b666360397e5265f48a896bb9506aa127ab9470e4f98fb8af5
data/README.md CHANGED
@@ -102,11 +102,15 @@ tau [info project active](features/cucumber/features/info/info.project.active.fe
102
102
  tau [info project dir](features/cucumber/features/info/info.project.dir.feature) | Print project root directory
103
103
  tau [info project main](features/cucumber/features/info/info.project.main.feature) | Print main project info
104
104
  tau [info project private](features/cucumber/features/info/info.project.private.feature) | Print private project info
105
- tau [info status git](features/cucumber/features/info/info.status.git.feature) | Check git status info
106
- tau [info status gopass](features/cucumber/features/info/info.status.gopass.feature) | Check gopass status info
107
- tau [info status gpg](features/cucumber/features/info/info.status.gpg.feature) | Check gpg status info
108
- tau [info status bar](features/cucumber/features/info/info.status.bar.feature) | Print status info bar
109
- tau [info status ssh](features/cucumber/features/info/info.status.ssh.feature) | Check ssh status info
105
+ tau [info status bar](features/cucumber/features/info/info.status.bar.feature) | Print status bar
106
+ tau [info status git](features/cucumber/features/info/info.status.git.feature) | Check git status
107
+ tau [info status gopass](features/cucumber/features/info/info.status.gopass.feature) | Check gopass status
108
+ tau [info status gpg](features/cucumber/features/info/info.status.gpg.feature) | Check gpg status
109
+ tau [info status ssh](features/cucumber/features/info/info.status.ssh.feature) | Check ssh status
110
+ tau [mutagen socket check](features/cucumber/features/mutagen/mutagen.socket.check.feature) [SOCKET] | Check if mutagen [SOCKET] exists
111
+ tau [mutagen socket create](features/cucumber/features/mutagen/mutagen.socket.create.feature) [IN] [OUT] | Create a mutagen socket from [IN] to [OUT] of the container
112
+ tau [mutagen socket list](features/cucumber/features/mutagen/mutagen.socket.list.feature) | List mutagen sockets
113
+ tau [mutagen socket terminate](features/cucumber/features/mutagen/mutagen.socket.terminate.feature) | Terminate a mutagen socket
110
114
  tau [self config active](features/cucumber/features/self/self.config.active.feature) | Print active takelage configuration
111
115
  tau [self config default](features/cucumber/features/self/self.config.default.feature) | Print takelage default configuration
112
116
  tau [self config home](features/cucumber/features/self/self.config.home.feature) | Print takelage home config file configuration
data/lib/takelage.rb CHANGED
@@ -59,6 +59,8 @@ require_relative 'takelage/docker/image/tag/check'
59
59
  require_relative 'takelage/docker/image/tag/cli'
60
60
  require_relative 'takelage/docker/image/update'
61
61
  require_relative 'takelage/docker/image/cli'
62
+ require_relative 'takelage/mutagen/socket/create'
63
+ require_relative 'takelage/mutagen/socket/terminate'
62
64
  require_relative 'takelage/docker/container/check/existing'
63
65
  require_relative 'takelage/docker/container/check/network'
64
66
  require_relative 'takelage/docker/container/check/orphaned'
@@ -80,6 +82,10 @@ require_relative 'takelage/info/status/bar'
80
82
  require_relative 'takelage/info/status/cli'
81
83
  require_relative 'takelage/info/project/cli'
82
84
  require_relative 'takelage/info/cli'
85
+ require_relative 'takelage/mutagen/socket/check'
86
+ require_relative 'takelage/mutagen/socket/list'
87
+ require_relative 'takelage/mutagen/socket/cli'
88
+ require_relative 'takelage/mutagen/cli'
83
89
  require_relative 'takelage/self/config/cli'
84
90
  require_relative 'takelage/self/list'
85
91
  require_relative 'takelage/self/cli'
@@ -143,6 +149,9 @@ module Takelage
143
149
  desc 'info [COMMAND] ', 'Get information'
144
150
  subcommand 'info', Info
145
151
 
152
+ desc 'mutagen [COMMAND] ', 'Manage mutagen'
153
+ subcommand 'mutagen', Mutagen
154
+
146
155
  desc 'self [COMMAND] ', 'Manage takelage tools'
147
156
  subcommand 'self', Self
148
157
 
@@ -66,6 +66,11 @@ cmd_info_status_gopass_root_store: 'gopass config | grep "path" | cut -d " " -f
66
66
  cmd_info_status_gpg_agent: 'gpg-connect-agent /bye'
67
67
  cmd_info_status_gpg_keys: 'gpg --list-keys'
68
68
  cmd_info_status_ssh_keys: 'ssh-add -l'
69
+ cmd_mutagen_forward_socket_create: 'mutagen forward create --name=%{socketname} --label=%{hostlabel} --label=%{takellabel} docker://%{username}@%{container}:unix:%{containersock} unix:%{hostsock}'
70
+ cmd_mutagen_forward_socket_check: 'mutagen forward list %{socketname}'
71
+ cmd_mutagen_forward_socket_terminate: 'mutagen forward terminate %{socketname}'
72
+ cmd_mutagen_forward_socket_remove: 'rm -f ~/.mutagen/daemon/*'
73
+ cmd_mutagen_forward_socket_list: 'mutagen forward list --label-selector="%{takellabel}"'
69
74
  docker_debug: 'ansible/roles/takel-takelage/files/takelscripts'
70
75
  docker_entrypoint_extra: '.config/gcloud'
71
76
  docker_entrypoint_options: ''
@@ -12,6 +12,7 @@ module DockerContainerClean
12
12
 
13
13
  networks = _docker_container_clean_kill_existing_containers
14
14
  _docker_container_lib_remove_networks networks
15
+ mutagen_socket_terminate @takellabel
15
16
  end
16
17
 
17
18
  private
@@ -24,9 +24,12 @@ module Takelage
24
24
  include DockerSocketHost
25
25
  include DockerSocketScheme
26
26
  include DockerSocketStart
27
+ include MutagenSocketCreate
28
+ include MutagenSocketTerminate
27
29
 
28
30
  # Initialize docker container
29
31
  # rubocop:disable Metrics/AbcSize
32
+ # rubocop:disable Metrics/MethodLength
30
33
  def initialize(args = [], local_options = {}, configuration = {})
31
34
  # initialize thor parent class
32
35
  super args, local_options, configuration
@@ -38,9 +41,12 @@ module Takelage
38
41
  @username = ENV['USER'] || 'noname'
39
42
  @workdir = Dir.getwd
40
43
  @hostname = _docker_container_lib_hostname
44
+ @hostlabel = "hostname=#{@hostname}"
45
+ @takellabel = 'type=takelage-socket'
41
46
  @socket_host = docker_socket_host
42
47
  @sockets = docker_socket_scheme
43
48
  end
49
+ # rubocop:enable Metrics/MethodLength
44
50
  # rubocop:enable Metrics/AbcSize
45
51
 
46
52
  desc 'check [COMMAND]', 'Check docker container'
@@ -11,6 +11,8 @@ module DockerContainerCommand
11
11
  docker_socket_start
12
12
  return false unless _docker_container_lib_create_net_and_ctr @hostname
13
13
 
14
+ mutagen_socket_create '~/.mutagen/daemon/daemon.sock', '~/.mutagen/daemon/daemon.sock'
15
+
14
16
  _docker_container_command_run_command @hostname, command
15
17
  end
16
18
 
@@ -8,6 +8,10 @@ module DockerContainerDaemon
8
8
 
9
9
  return false unless docker_check_daemon
10
10
 
11
- _docker_container_lib_create_net_and_ctr @hostname
11
+ result = _docker_container_lib_create_net_and_ctr @hostname
12
+
13
+ mutagen_socket_create '~/.mutagen/daemon/daemon.sock', '~/.mutagen/daemon/daemon.sock'
14
+
15
+ result
12
16
  end
13
17
  end
@@ -16,7 +16,10 @@ module DockerContainerLib
16
16
 
17
17
  # Create docker container and network.
18
18
  def _docker_container_lib_create_net_and_ctr(name)
19
- return false if _docker_container_lib_check_matrjoschka
19
+ if _docker_container_lib_check_matrjoschka
20
+ log.error 'You cannot log in to takelage from within takelage'
21
+ return false
22
+ end
20
23
 
21
24
  unless docker_container_check_network name
22
25
  _docker_container_lib_create_network name
@@ -108,6 +111,7 @@ module DockerContainerLib
108
111
 
109
112
  try cmd_docker_create
110
113
  end
114
+
111
115
  # rubocop:enable Metrics/AbcSize
112
116
  # rubocop:enable Metrics/MethodLength
113
117
 
@@ -117,7 +121,7 @@ module DockerContainerLib
117
121
 
118
122
  return false unless ENV.keys.include? 'TAKELAGE_PROJECT_BASE_DIR'
119
123
 
120
- log.error 'You cannot log in to takelage from within takelage'
124
+ log.debug 'We are already inside a takelage container'
121
125
 
122
126
  # wait or the github workflow will fail
123
127
  sleep 1
@@ -9,8 +9,11 @@ module DockerContainerLogin
9
9
  return false unless docker_check_daemon
10
10
 
11
11
  docker_socket_start
12
+
12
13
  return false unless _docker_container_lib_create_net_and_ctr @hostname
13
14
 
15
+ mutagen_socket_create '~/.mutagen/daemon/daemon.sock', '~/.mutagen/daemon/daemon.sock'
16
+
14
17
  run_and_exit _docker_container_login_enter_container @hostname
15
18
  end
16
19
 
@@ -23,6 +23,7 @@ module DockerContainerPrune
23
23
 
24
24
  name = _docker_container_lib_get_container_name_by_id container
25
25
  _docker_container_lib_stop_container container
26
+ mutagen_socket_terminate "hostname=#{container}"
26
27
  networks << name unless networks.include? name
27
28
  end
28
29
  networks
@@ -51,8 +51,9 @@ module SystemModule
51
51
  # @return [String] stdout of command
52
52
  def run(command)
53
53
  log.debug "Running command \"#{command}\""
54
- stdout_str, = Open3.capture3 command
54
+ stdout_str, stderr_str = Open3.capture3 command
55
55
  log.debug "Command \"#{command}\" has stdout:\n\"\"\"\n#{stdout_str}\"\"\""
56
+ log.debug "Command \"#{command}\" has stderr:\n\"\"\"\n#{stderr_str}\"\"\""
56
57
  stdout_str
57
58
  end
58
59
 
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Takelage
4
+ # takelage git
5
+ class Mutagen < SubCommandBase
6
+ desc 'socket [COMMAND]', 'Manage mutagen socket'
7
+ subcommand 'socket', MutagenSocket
8
+ end
9
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takelage mutagen socket check
4
+ module MutagenSocketCheck
5
+ # Backend method for mutagen socket check.
6
+ # @return [Boolean] Does a mutagen socket exist?
7
+ def mutagen_socket_check(socket)
8
+ log.debug "Check if the mutagen socket \"#{socket}\" exists"
9
+
10
+ socket_exists = _mutagen_socket_check_socket(socket)
11
+
12
+ unless socket_exists.exitstatus.zero?
13
+ log.debug "A mutagen socket \"#{socket}\" does not exist"
14
+ return false
15
+ end
16
+
17
+ log.debug "The mutagen socket \"#{socket}\" does exist"
18
+ true
19
+ end
20
+
21
+ private
22
+
23
+ # Get git branch.
24
+ def _mutagen_socket_check_socket(socketname)
25
+ cmd_check_socket = format(
26
+ config.active['cmd_mutagen_forward_socket_check'],
27
+ socketname: socketname
28
+ )
29
+ try cmd_check_socket
30
+ end
31
+ end
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Takelage
4
+ # takelage mutagen socket
5
+ class MutagenSocket < SubCommandBase
6
+ include LoggingModule
7
+ include SystemModule
8
+ include ConfigModule
9
+ include DockerCheckDaemon
10
+ include DockerCheckSocat
11
+ include DockerContainerCheckExisting
12
+ include DockerContainerCheckNetwork
13
+ include DockerContainerCommand
14
+ include DockerContainerLib
15
+ include DockerSocketLib
16
+ include DockerSocketScheme
17
+ include DockerSocketStart
18
+ include MutagenSocketCheck
19
+ include MutagenSocketCreate
20
+ include MutagenSocketList
21
+ include MutagenSocketTerminate
22
+
23
+ # Initialize mtagen socket
24
+ def initialize(args = [], local_options = {}, configuration = {})
25
+ # initialize thor parent class
26
+ super args, local_options, configuration
27
+
28
+ @docker_repo = config.active['docker_repo']
29
+ @username = ENV['USER'] || 'noname'
30
+ @workdir = Dir.getwd
31
+ inside = _docker_container_lib_check_matrjoschka
32
+ @hostname = inside ? ENV['HOSTNAME'] : _docker_container_lib_hostname
33
+ @hostlabel = "hostname=#{@hostname}"
34
+ @takellabel = 'type=takelage-socket'
35
+ @sockets = docker_socket_scheme
36
+ end
37
+
38
+ #
39
+ # mutagen socket check
40
+ #
41
+ desc 'check [SOCKET]', 'Check if mutagen [SOCKET] exists'
42
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
43
+ Check if mutagen [SOCKET] exists
44
+ LONGDESC
45
+ # Check if mutagen [SOCKET] exists.
46
+ def check(socket)
47
+ exit mutagen_socket_check socket
48
+ end
49
+
50
+ #
51
+ # mutagen socket create
52
+ #
53
+ desc 'create [IN] [OUT]', 'Create a mutagen socket from [IN] to [OUT] of the container'
54
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
55
+ Create a mutagen socket from [IN] to [OUT] of the container
56
+ LONGDESC
57
+ # Create a mutagen socket from [IN] to [OUT] of the container.
58
+ def create(containersock, hostsock)
59
+ exit mutagen_socket_create containersock, hostsock
60
+ end
61
+
62
+ #
63
+ # mutagen socket list
64
+ #
65
+ desc 'list', 'List mutagen sockets'
66
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
67
+ List mutagen sockets
68
+ LONGDESC
69
+ # List mutagen sockets.
70
+ def list
71
+ socket_list = mutagen_socket_list
72
+ exit false if socket_list == false
73
+ say socket_list
74
+ true
75
+ end
76
+
77
+ #
78
+ # mutagen socket terminate
79
+ #
80
+ desc 'terminate', 'Terminate a mutagen socket'
81
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
82
+ Terminate a mutagen socket
83
+ LONGDESC
84
+ # Terminate a mutagen socket.
85
+ def terminate(socket)
86
+ exit mutagen_socket_terminate socket
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takelage mutagen socket create
4
+ module MutagenSocketCreate
5
+ # Backend method for mutagen socket create.
6
+ def mutagen_socket_create(containersock, hostsock)
7
+ socketname = @hostname[-11..-1]
8
+ log.debug "Create the mutagen socket \"#{socketname}\" in the container" \
9
+ "at \"#{containersock}\" pointing to the host at \"#{hostsock}\""
10
+
11
+ socket_created = _mutagen_socket_create_socket(socketname, containersock, hostsock)
12
+
13
+ unless socket_created.include? 'Created session'
14
+ log.debug "Unable to create mutagen socket \"#{socketname}\""
15
+ return false
16
+ end
17
+
18
+ log.debug "Created the mutagen socket \"#{socketname}\""
19
+ true
20
+ end
21
+
22
+ private
23
+
24
+ # Get git branch.
25
+ # rubocop:disable Metrics/MethodLength
26
+ def _mutagen_socket_create_socket(socketname, containersock, hostsock)
27
+ cmd_create_socket = format(
28
+ config.active['cmd_mutagen_forward_socket_create'],
29
+ socketname: socketname,
30
+ containersock: containersock,
31
+ hostsock: hostsock,
32
+ username: @username,
33
+ container: @hostname,
34
+ hostlabel: @hostlabel,
35
+ takellabel: @takellabel
36
+ )
37
+ run cmd_create_socket
38
+ end
39
+ # rubocop:enable Metrics/MethodLength
40
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takelage mutagen socket list
4
+ module MutagenSocketList
5
+ # Backend method for mutagen socket list.
6
+ # @return [String] List of takelage sockets
7
+ def mutagen_socket_list
8
+ log.debug 'List the mutagen takelage sockets'
9
+
10
+ sockets = _mutagen_socket_list
11
+
12
+ if sockets.to_s.empty?
13
+ log.debug 'No mutagen takelage sockets found'
14
+ return false
15
+ end
16
+
17
+ log.debug "Found mutagen takelage sockets: \n\"\"\"\n#{sockets}\"\"\""
18
+ sockets.to_s
19
+ end
20
+
21
+ private
22
+
23
+ # Get git branch.
24
+ def _mutagen_socket_list
25
+ cmd_list_socket = format(
26
+ config.active['cmd_mutagen_forward_socket_list'],
27
+ takellabel: @takellabel
28
+ )
29
+ run cmd_list_socket
30
+ end
31
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takelage mutagen socket terminate
4
+ module MutagenSocketTerminate
5
+ # Backend method for mutagen socket terminate.
6
+ def mutagen_socket_terminate(socket)
7
+ log.debug "Terminate the mutagen socket \"#{socket}\""
8
+
9
+ socket_terminated = _mutagen_socket_terminate_socket socket
10
+
11
+ cmd_remove = config.active['cmd_mutagen_forward_socket_remove']
12
+ docker_container_command cmd_remove if cmd_remove && socket_terminated.exitstatus.zero?
13
+
14
+ unless socket_terminated.exitstatus.zero?
15
+ log.debug "Unable to terminated mutagen socket \"#{socket}\""
16
+ return false
17
+ end
18
+
19
+ log.debug "Terminated the mutagen socket \"#{socket}\""
20
+ true
21
+ end
22
+
23
+ private
24
+
25
+ # Get git branch.
26
+ def _mutagen_socket_terminate_socket(socketname)
27
+ cmd_terminate_socket = format(
28
+ config.active['cmd_mutagen_forward_socket_terminate'],
29
+ socketname: socketname
30
+ )
31
+ try cmd_terminate_socket
32
+ end
33
+ end
data/lib/takelage/version CHANGED
@@ -1 +1 @@
1
- 0.27.1
1
+ 0.28.5
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.27.1
4
+ version: 0.28.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geospin
@@ -271,6 +271,12 @@ files:
271
271
  - lib/takelage/lib/project.rb
272
272
  - lib/takelage/lib/subcmd.rb
273
273
  - lib/takelage/lib/system.rb
274
+ - lib/takelage/mutagen/cli.rb
275
+ - lib/takelage/mutagen/socket/check.rb
276
+ - lib/takelage/mutagen/socket/cli.rb
277
+ - lib/takelage/mutagen/socket/create.rb
278
+ - lib/takelage/mutagen/socket/list.rb
279
+ - lib/takelage/mutagen/socket/terminate.rb
274
280
  - lib/takelage/self/cli.rb
275
281
  - lib/takelage/self/config/cli.rb
276
282
  - lib/takelage/self/list.rb