takeltau 0.34.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +674 -0
  3. data/README.md +235 -0
  4. data/bin/tau +6 -0
  5. data/lib/Thorfile +3 -0
  6. data/lib/takeltau.rb +257 -0
  7. data/lib/takeltau/bit/check/cli.rb +23 -0
  8. data/lib/takeltau/bit/check/workspace.rb +37 -0
  9. data/lib/takeltau/bit/cli.rb +18 -0
  10. data/lib/takeltau/bit/clipboard/cli.rb +73 -0
  11. data/lib/takeltau/bit/clipboard/copy.rb +142 -0
  12. data/lib/takeltau/bit/clipboard/lib.rb +143 -0
  13. data/lib/takeltau/bit/clipboard/paste.rb +60 -0
  14. data/lib/takeltau/bit/clipboard/pull.rb +37 -0
  15. data/lib/takeltau/bit/clipboard/push.rb +37 -0
  16. data/lib/takeltau/bit/require/cli.rb +57 -0
  17. data/lib/takeltau/bit/require/export.rb +34 -0
  18. data/lib/takeltau/bit/require/import.rb +133 -0
  19. data/lib/takeltau/bit/require/lib.rb +19 -0
  20. data/lib/takeltau/bit/scope/add.rb +55 -0
  21. data/lib/takeltau/bit/scope/cli.rb +74 -0
  22. data/lib/takeltau/bit/scope/list.rb +41 -0
  23. data/lib/takeltau/bit/scope/new.rb +44 -0
  24. data/lib/takeltau/bit/scope/ssh.rb +13 -0
  25. data/lib/takeltau/completion/cli.rb +24 -0
  26. data/lib/takeltau/default.yml +95 -0
  27. data/lib/takeltau/docker/check/cli.rb +23 -0
  28. data/lib/takeltau/docker/check/daemon.rb +27 -0
  29. data/lib/takeltau/docker/cli.rb +15 -0
  30. data/lib/takeltau/docker/container/check/cli.rb +57 -0
  31. data/lib/takeltau/docker/container/check/existing.rb +32 -0
  32. data/lib/takeltau/docker/container/check/network.rb +32 -0
  33. data/lib/takeltau/docker/container/check/orphaned.rb +32 -0
  34. data/lib/takeltau/docker/container/clean.rb +40 -0
  35. data/lib/takeltau/docker/container/cli.rb +118 -0
  36. data/lib/takeltau/docker/container/command.rb +38 -0
  37. data/lib/takeltau/docker/container/daemon.rb +17 -0
  38. data/lib/takeltau/docker/container/lib.rb +181 -0
  39. data/lib/takeltau/docker/container/login.rb +58 -0
  40. data/lib/takeltau/docker/container/prune.rb +31 -0
  41. data/lib/takeltau/docker/image/cli.rb +39 -0
  42. data/lib/takeltau/docker/image/tag/check.rb +42 -0
  43. data/lib/takeltau/docker/image/tag/cli.rb +68 -0
  44. data/lib/takeltau/docker/image/tag/latest.rb +24 -0
  45. data/lib/takeltau/docker/image/tag/list.rb +19 -0
  46. data/lib/takeltau/docker/image/update.rb +27 -0
  47. data/lib/takeltau/git/check/bit.rb +26 -0
  48. data/lib/takeltau/git/check/clean.rb +46 -0
  49. data/lib/takeltau/git/check/cli.rb +49 -0
  50. data/lib/takeltau/git/check/workspace.rb +34 -0
  51. data/lib/takeltau/git/cli.rb +9 -0
  52. data/lib/takeltau/info/cli.rb +12 -0
  53. data/lib/takeltau/info/project/cli.rb +69 -0
  54. data/lib/takeltau/info/status/bar.rb +112 -0
  55. data/lib/takeltau/info/status/cli.rb +107 -0
  56. data/lib/takeltau/info/status/git.rb +47 -0
  57. data/lib/takeltau/info/status/gopass.rb +37 -0
  58. data/lib/takeltau/info/status/gpg.rb +39 -0
  59. data/lib/takeltau/info/status/lib.rb +46 -0
  60. data/lib/takeltau/info/status/ssh.rb +46 -0
  61. data/lib/takeltau/init/cli.rb +12 -0
  62. data/lib/takeltau/init/lib.rb +86 -0
  63. data/lib/takeltau/init/packer/cli.rb +82 -0
  64. data/lib/takeltau/init/packer/docker.rb +64 -0
  65. data/lib/takeltau/init/packer/templates/ansiblelint.tt +3 -0
  66. data/lib/takeltau/init/packer/templates/bitrequireyml.tt +13 -0
  67. data/lib/takeltau/init/packer/templates/groupvarsprojectyml.tt +2 -0
  68. data/lib/takeltau/init/packer/templates/playbooksiteyml.tt +6 -0
  69. data/lib/takeltau/init/packer/templates/projectyml.tt +19 -0
  70. data/lib/takeltau/init/takelage/cli.rb +70 -0
  71. data/lib/takeltau/init/takelage/rake.rb +61 -0
  72. data/lib/takeltau/init/takelage/templates/bitrequireyml.tt +5 -0
  73. data/lib/takeltau/init/takelage/templates/projectyml.tt +3 -0
  74. data/lib/takeltau/init/templates/Rakefile.tt +3 -0
  75. data/lib/takeltau/init/templates/gitignore.tt +16 -0
  76. data/lib/takeltau/lib/config.rb +130 -0
  77. data/lib/takeltau/lib/logging.rb +49 -0
  78. data/lib/takeltau/lib/project.rb +72 -0
  79. data/lib/takeltau/lib/subcmd.rb +18 -0
  80. data/lib/takeltau/lib/system.rb +194 -0
  81. data/lib/takeltau/mutagen/check/cli.rb +40 -0
  82. data/lib/takeltau/mutagen/check/daemon.rb +76 -0
  83. data/lib/takeltau/mutagen/cli.rb +12 -0
  84. data/lib/takeltau/mutagen/socket/check.rb +33 -0
  85. data/lib/takeltau/mutagen/socket/cli.rb +103 -0
  86. data/lib/takeltau/mutagen/socket/create.rb +47 -0
  87. data/lib/takeltau/mutagen/socket/list.rb +33 -0
  88. data/lib/takeltau/mutagen/socket/terminate.rb +32 -0
  89. data/lib/takeltau/mutagen/socket/tidy.rb +21 -0
  90. data/lib/takeltau/self/cli.rb +43 -0
  91. data/lib/takeltau/self/config/cli.rb +82 -0
  92. data/lib/takeltau/self/list.rb +35 -0
  93. data/lib/takeltau/version +1 -0
  94. metadata +319 -0
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Takeltau
4
+ # takeltau mutagen check
5
+ class MutagenCheck < SubCommandBase
6
+ include LoggingModule
7
+ include SystemModule
8
+ include ConfigModule
9
+ include DockerCheckDaemon
10
+ include DockerContainerCheckExisting
11
+ include DockerContainerCheckNetwork
12
+ include DockerContainerCommand
13
+ include DockerContainerLib
14
+ include MutagenCheckDaemon
15
+
16
+ # Initialize mutagen check
17
+ def initialize(args = [], local_options = {}, configuration = {})
18
+ # initialize thor parent class
19
+ super args, local_options, configuration
20
+
21
+ @workdir = Dir.getwd
22
+
23
+ inside = _docker_container_lib_check_matrjoschka
24
+ @hostname = inside ? ENV['HOSTNAME'] : _docker_container_lib_hostname
25
+ @hostlabel = "hostname=#{@hostname}"
26
+ end
27
+
28
+ #
29
+ # mutagen check daemon
30
+ #
31
+ desc 'daemon', 'Check if mutagen host conenction is available'
32
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
33
+ Check if mutagen host conenction is available
34
+ LONGDESC
35
+ # Check if mutagen host conenction is available.
36
+ def daemon
37
+ exit mutagen_check_daemon
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takeltau info status mutagen
4
+ module MutagenCheckDaemon
5
+ # Backend method for mutagen check daemon.
6
+ # @return [Boolean] is mutagen available?
7
+ # rubocop:disable Metrics/MethodLength
8
+ # rubocop:disable Metrics/AbcSize
9
+ def mutagen_check_daemon
10
+ return true if @mutagen_daemon_available
11
+
12
+ return false unless command_available_else_warn? config.active['cmd_mutagen']
13
+
14
+ log.debug 'Check mutagen status'
15
+
16
+ # are we outside of a takelage container?
17
+ unless _docker_container_lib_check_matrjoschka
18
+ unless _mutagen_check_daemon_version
19
+ log.error 'The mutagen daemon is not available'
20
+ return false
21
+ end
22
+
23
+ log.debug 'The mutagen daemon is available'
24
+ @mutagen_daemon_available = true
25
+ return true
26
+ end
27
+
28
+ unless _file_exists? config.active['mutagen_socket_path_mutagen']
29
+ log.error 'The mutagen socket is not available'
30
+ return false
31
+ end
32
+
33
+ unless _mutagen_check_daemon_host_connection
34
+ log.error 'A mutagen host connection is not available'
35
+ return false
36
+ end
37
+
38
+ log.debug 'The mutagen daemon is available'
39
+ @mutagen_daemon_available = true
40
+ true
41
+ end
42
+ # rubocop:enable Metrics/AbcSize
43
+ # rubocop:enable Metrics/MethodLength
44
+
45
+ private
46
+
47
+ # Check mutagen host connection
48
+ # rubocop:disable Metrics/MethodLength
49
+ def _mutagen_check_daemon_host_connection
50
+ check_host_connection = format(
51
+ config.active['cmd_mutagen_check_daemon_host_connection'],
52
+ hostlabel: @hostlabel
53
+ )
54
+ stdout, _, exitstatus = run_and_capture check_host_connection
55
+
56
+ unless exitstatus.zero?
57
+ log.debug 'There is no mutagen forward connection to the host'
58
+ return false
59
+ end
60
+
61
+ unless stdout.include? 'Status: Forwarding connections'
62
+ log.debug 'The mutagen forward connection to the host ' \
63
+ 'is not forwarding connections'
64
+ return false
65
+ end
66
+
67
+ true
68
+ end
69
+ # rubocop:enable Metrics/MethodLength
70
+
71
+ # Check mutagen version
72
+ def _mutagen_check_daemon_version
73
+ version = try config.active['cmd_mutagen_check_daemon_version']
74
+ version.exitstatus.zero?
75
+ end
76
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Takeltau
4
+ # takeltau git
5
+ class Mutagen < SubCommandBase
6
+ desc 'check [COMMAND]', 'Check mutagen'
7
+ subcommand 'check', MutagenCheck
8
+
9
+ desc 'socket [COMMAND]', 'Manage mutagen socket'
10
+ subcommand 'socket', MutagenSocket
11
+ end
12
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takeltau 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
+ return false unless mutagen_check_daemon
11
+
12
+ socket_exists = _mutagen_socket_check_socket(socket)
13
+
14
+ unless socket_exists.exitstatus.zero?
15
+ log.debug "A mutagen socket \"#{socket}\" does not exist"
16
+ return false
17
+ end
18
+
19
+ log.debug "The mutagen socket \"#{socket}\" does exist"
20
+ true
21
+ end
22
+
23
+ private
24
+
25
+ # Get git branch.
26
+ def _mutagen_socket_check_socket(socketname)
27
+ cmd_check_socket = format(
28
+ config.active['cmd_mutagen_forward_socket_check'],
29
+ socketname: socketname
30
+ )
31
+ try cmd_check_socket
32
+ end
33
+ end
@@ -0,0 +1,103 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Takeltau
4
+ # takeltau mutagen socket
5
+ class MutagenSocket < SubCommandBase
6
+ include LoggingModule
7
+ include SystemModule
8
+ include ConfigModule
9
+ include DockerCheckDaemon
10
+ include DockerContainerCheckExisting
11
+ include DockerContainerCheckNetwork
12
+ include DockerContainerCommand
13
+ include DockerContainerLib
14
+ include DockerImageTagLatest
15
+ include DockerImageTagList
16
+ include DockerImageTagCheck
17
+ include MutagenCheckDaemon
18
+ include MutagenSocketCheck
19
+ include MutagenSocketCreate
20
+ include MutagenSocketList
21
+ include MutagenSocketTidy
22
+ include MutagenSocketTerminate
23
+
24
+ # Initialize mutagen socket
25
+ def initialize(args = [], local_options = {}, configuration = {})
26
+ # initialize thor parent class
27
+ super args, local_options, configuration
28
+
29
+ @docker_repo = config.active['docker_repo']
30
+ @username = ENV['USER'] || 'noname'
31
+ @workdir = Dir.getwd
32
+
33
+ inside = _docker_container_lib_check_matrjoschka
34
+ @hostname = inside ? ENV['HOSTNAME'] : _docker_container_lib_hostname
35
+
36
+ @hostlabel = "hostname=#{@hostname}"
37
+ @takellabel = config.active['mutagen_socket_takelage_label']
38
+ end
39
+
40
+ #
41
+ # mutagen socket check
42
+ #
43
+ desc 'check [SOCKET]', 'Check if mutagen [SOCKET] exists'
44
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
45
+ Check if mutagen [SOCKET] exists
46
+ LONGDESC
47
+ # Check if mutagen [SOCKET] exists.
48
+ def check(socket)
49
+ exit mutagen_socket_check socket
50
+ end
51
+
52
+ #
53
+ # mutagen socket create
54
+ #
55
+ desc 'create [NAME] [IN] [OUT]', 'Create a mutagen socket [NAME] from [IN] to [OUT] of the container'
56
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
57
+ Create a mutagen socket [NAME] from [IN] to [OUT] of the container
58
+ LONGDESC
59
+ # Create a mutagen socket [NAME] from [IN] to [OUT] of the container.
60
+ def create(name, containersock, hostsock)
61
+ exit mutagen_socket_create name, containersock, hostsock
62
+ end
63
+
64
+ #
65
+ # mutagen socket list
66
+ #
67
+ desc 'list', 'List mutagen sockets'
68
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
69
+ List mutagen sockets
70
+ LONGDESC
71
+ # List mutagen sockets.
72
+ def list
73
+ socket_list = mutagen_socket_list
74
+ exit false if socket_list == false
75
+ say socket_list
76
+ true
77
+ end
78
+
79
+ #
80
+ # mutagen socket terminate
81
+ #
82
+ desc 'terminate [SOCKET]', 'Terminate a mutagen [SOCKET]'
83
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
84
+ Terminate a mutagen [SOCKET]
85
+ LONGDESC
86
+ # Terminate a mutagen [SOCKET].
87
+ def terminate(socket)
88
+ exit mutagen_socket_terminate socket
89
+ end
90
+
91
+ #
92
+ # mutagen socket tidy
93
+ #
94
+ desc 'tidy', 'Remove mutagen daemon files'
95
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
96
+ Remove mutagen daemon files
97
+ LONGDESC
98
+ # Remove mutagen daemon files.
99
+ def tidy
100
+ exit mutagen_socket_tidy
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takeltau mutagen socket create
4
+ module MutagenSocketCreate
5
+ # Backend method for mutagen socket create.
6
+ # rubocop:disable Metrics/MethodLength
7
+ def mutagen_socket_create(name, containersock, hostsock)
8
+ # See DockerContainerLib::_docker_container_lib_hostname
9
+ socketname = "#{@hostname[-11..-1]}-#{name}"
10
+ log.debug "Create the mutagen socket \"#{socketname}\" in the container " \
11
+ "at \"#{containersock}\" pointing to the host at \"#{hostsock}\""
12
+
13
+ return false unless mutagen_check_daemon
14
+
15
+ return false if mutagen_socket_check socketname
16
+
17
+ socket_created = _mutagen_socket_create_socket(socketname, containersock, hostsock)
18
+
19
+ unless socket_created.include? 'Created session'
20
+ log.debug "Unable to create mutagen socket \"#{socketname}\""
21
+ return false
22
+ end
23
+
24
+ log.debug "Created the mutagen socket \"#{socketname}\""
25
+ true
26
+ end
27
+ # rubocop:enable Metrics/MethodLength
28
+
29
+ private
30
+
31
+ # Get git branch.
32
+ # rubocop:disable Metrics/MethodLength
33
+ def _mutagen_socket_create_socket(socketname, containersock, hostsock)
34
+ cmd_create_socket = format(
35
+ config.active['cmd_mutagen_forward_socket_create'],
36
+ socketname: socketname,
37
+ containersock: containersock,
38
+ hostsock: hostsock,
39
+ username: @username,
40
+ container: @hostname,
41
+ hostlabel: @hostlabel,
42
+ takellabel: @takellabel
43
+ )
44
+ run cmd_create_socket
45
+ end
46
+ # rubocop:enable Metrics/MethodLength
47
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takeltau 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
+ return false unless mutagen_check_daemon
11
+
12
+ sockets = _mutagen_socket_list
13
+
14
+ if sockets.to_s.empty?
15
+ log.debug 'No mutagen takelage sockets found'
16
+ return false
17
+ end
18
+
19
+ log.debug "Found mutagen takelage sockets: \n\"\"\"\n#{sockets}\"\"\""
20
+ sockets.to_s
21
+ end
22
+
23
+ private
24
+
25
+ # Get git branch.
26
+ def _mutagen_socket_list
27
+ cmd_list_socket = format(
28
+ config.active['cmd_mutagen_forward_socket_list'],
29
+ takellabel: @takellabel
30
+ )
31
+ run cmd_list_socket
32
+ end
33
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takeltau 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
+ return false unless mutagen_check_daemon
10
+
11
+ socket_terminated = _mutagen_socket_terminate_socket socket
12
+
13
+ unless socket_terminated.exitstatus.zero?
14
+ log.debug "Unable to terminated mutagen socket \"#{socket}\""
15
+ return false
16
+ end
17
+
18
+ log.debug "Terminated the mutagen socket \"#{socket}\""
19
+ true
20
+ end
21
+
22
+ private
23
+
24
+ # Get git branch.
25
+ def _mutagen_socket_terminate_socket(socketname)
26
+ cmd_terminate_socket = format(
27
+ config.active['cmd_mutagen_forward_socket_terminate'],
28
+ socketname: socketname
29
+ )
30
+ try cmd_terminate_socket
31
+ end
32
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takeltau mutagen socket tidy
4
+ module MutagenSocketTidy
5
+ # Backend method for mutagen socket tidy.
6
+ def mutagen_socket_tidy
7
+ log.debug "Remove the mutagen daemon files in container \"#{@hostname}\""
8
+
9
+ container_existing = docker_container_check_existing @hostname
10
+ cmd_remove = config.active['cmd_mutagen_forward_socket_remove']
11
+ return false unless container_existing && cmd_remove.empty?
12
+
13
+ unless docker_container_command cmd_remove
14
+ log.error "Unable to remove the mutagen daemon files in container \"#{@hostname}\""
15
+ return false
16
+ end
17
+
18
+ log.debug "Removed the mutagen daemon files in container \"#{@hostname}\""
19
+ true
20
+ end
21
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Takeltau
4
+ # semantic version number
5
+ VERSION = (File.read "#{File.dirname(__FILE__)}/../version").chomp
6
+
7
+ # takeltau self
8
+ class Self < SubCommandBase
9
+ include LoggingModule
10
+ include SelfList
11
+
12
+ desc 'config [COMMAND]', 'Manage takeltau configuration'
13
+ subcommand 'config', SelfConfig
14
+
15
+ #
16
+ # self list
17
+ #
18
+ desc 'list', 'List all commands'
19
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
20
+ List all commands
21
+ LONGDESC
22
+ # List all commands.
23
+ def list
24
+ list = self_list
25
+ exit false if list == false
26
+ say list
27
+ true
28
+ end
29
+
30
+ #
31
+ # self version
32
+ #
33
+ desc 'version', 'Print takeltau semantic version number'
34
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
35
+ Print takeltau semantic version number
36
+ LONGDESC
37
+ # Print takeltau semantic version number.
38
+ def version
39
+ say VERSION
40
+ true
41
+ end
42
+ end
43
+ end