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,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takeltau info status ssh
4
+ module InfoStatusSSH
5
+ # Backend method for info status ssh.
6
+ # @return [Boolean] is ssh available?
7
+ # rubocop:disable Metrics/MethodLength
8
+ def info_status_ssh
9
+ log.debug 'Check ssh status'
10
+
11
+ ssh_auth_sock = ENV['SSH_AUTH_SOCK']
12
+ gpg_ssh_socket = _info_status_ssh_socket_path.chomp
13
+
14
+ unless ssh_auth_sock == gpg_ssh_socket
15
+ log.error 'ssh does not use gpg ssh socket'
16
+ return false
17
+ end
18
+
19
+ unless _file_exists? gpg_ssh_socket
20
+ log.error 'gpg ssh socket is not available'
21
+ return false
22
+ end
23
+
24
+ unless _info_status_ssh_keys
25
+ log.error 'ssh keys are not available'
26
+ return false
27
+ end
28
+
29
+ log.debug 'ssh is available'
30
+ true
31
+ end
32
+ # rubocop:enable Metrics/MethodLength
33
+
34
+ private
35
+
36
+ # Get ssh socket path
37
+ def _info_status_ssh_socket_path
38
+ run config.active['cmd_info_status_ssh_socket']
39
+ end
40
+
41
+ # Check ssh keys
42
+ def _info_status_ssh_keys
43
+ status_keys = try config.active['cmd_info_status_ssh_keys']
44
+ status_keys.exitstatus.zero?
45
+ end
46
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Takeltau
4
+ # takeltau init
5
+ class Init < SubCommandBase
6
+ desc 'packer [COMMAND]', 'Init packer project'
7
+ subcommand 'packer', InitPacker
8
+
9
+ desc 'takelage [COMMAND]', 'Init takelage project'
10
+ subcommand 'takelage', InitTakelage
11
+ end
12
+ end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takeltau init takelage lib
4
+ module InitLib
5
+ private
6
+
7
+ # Import bit components.
8
+ def _init_lib_bit_require_import
9
+ if config.active['init_bit_require_import'] == 'true'
10
+ log.info 'Importing bit components'
11
+ return false unless bit_require_import
12
+ end
13
+
14
+ true
15
+ end
16
+
17
+ # Check bit.
18
+ def _init_lib_bit_check
19
+ return false unless command_available_else_error? config.active['cmd_bit']
20
+ return true unless bit_check_workspace
21
+
22
+ log.error 'bit is already initialized!'
23
+ false
24
+ end
25
+
26
+ # Init bit.
27
+ def _init_lib_bit_init
28
+ log.info 'Initializing bit workspace'
29
+ return false unless try config.active['cmd_init_lib_bit_init']
30
+
31
+ true
32
+ end
33
+
34
+ # Check git.
35
+ def _init_lib_git_check
36
+ return false unless command_available_else_error? config.active['cmd_git']
37
+ return true unless git_check_workspace
38
+
39
+ log.error 'git is already initialized!'
40
+ false
41
+ end
42
+
43
+ # Init git.
44
+ def _init_lib_git_init
45
+ log.info 'Initializing git workspace'
46
+ return false unless try config.active['cmd_init_lib_git_init']
47
+
48
+ true
49
+ end
50
+
51
+ # Check files.
52
+ def _init_lib_files_check(files)
53
+ exit_status = true
54
+ files.each do |file|
55
+ if _file_exists? file[:name]
56
+ log.error "File exists: #{file[:name]}"
57
+ exit_status = false
58
+ end
59
+ end
60
+ exit_status
61
+ end
62
+
63
+ # Create files.
64
+ def _init_lib_files_create(files)
65
+ files.each do |file|
66
+ template file[:template], file[:name]
67
+ end
68
+ true
69
+ end
70
+
71
+ # Run git add --all.
72
+ def _init_lib_git_add_all
73
+ log.info 'Preparing initial git commit'
74
+ return false unless try config.active['cmd_init_lib_git_add_all']
75
+
76
+ true
77
+ end
78
+
79
+ # Run git commit -m "Initial commit".
80
+ def _init_lib_git_commit_initial
81
+ log.info 'Saving initial git commit'
82
+ return false unless try config.active['cmd_init_lib_git_commit_initial']
83
+
84
+ true
85
+ end
86
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Takeltau
4
+ # takeltau init packer
5
+ class InitPacker < SubCommandBase
6
+ include Thor::Actions
7
+ include LoggingModule
8
+ include SystemModule
9
+ include ConfigModule
10
+ include ProjectModule
11
+ include GitCheckClean
12
+ include GitCheckBit
13
+ include GitCheckWorkspace
14
+ include BitCheckWorkspace
15
+ include BitClipboardLib
16
+ include BitClipboardCopy
17
+ include BitClipboardPaste
18
+ include BitRequireLib
19
+ include BitRequireImport
20
+ include InitLib
21
+ include InitPackerDocker
22
+
23
+ argument :name
24
+
25
+ # Initialize bit require
26
+ # Define templates
27
+ # rubocop:disable Metrics/MethodLength
28
+ def initialize(args = [], local_options = {}, configuration = {})
29
+ # initialize thor parent class
30
+ super args, local_options, configuration
31
+
32
+ @bit_require_file = config.active['bit_require_file']
33
+
34
+ @ansiblelint = {
35
+ name: 'ansible/.ansible-lint',
36
+ template: 'templates/ansiblelint.tt'
37
+ }
38
+ @bitrequireyml = {
39
+ name: 'bitrequire.yml',
40
+ template: 'templates/bitrequireyml.tt'
41
+ }
42
+ @gitignore = {
43
+ name: '.gitignore',
44
+ template: '../templates/gitignore.tt'
45
+ }
46
+ @groupvarsprojectyml = {
47
+ name: 'ansible/group_vars/all/project.yml',
48
+ template: 'templates/groupvarsprojectyml.tt'
49
+ }
50
+ @playbooksiteyml = {
51
+ name: 'ansible/playbook-site.yml',
52
+ template: 'templates/playbooksiteyml.tt'
53
+ }
54
+ @projectyml = {
55
+ name: 'project.yml',
56
+ template: 'templates/projectyml.tt'
57
+ }
58
+ @rakefile = {
59
+ name: 'Rakefile',
60
+ template: '../templates/Rakefile.tt'
61
+ }
62
+ end
63
+ # rubocop:enable Metrics/MethodLength
64
+
65
+ # Provide template path for Thor:Actions
66
+ def self.source_root
67
+ File.dirname(__FILE__)
68
+ end
69
+
70
+ #
71
+ # init packer docker
72
+ #
73
+ desc 'docker [NAME]', 'Initialize packer project [NAME] for docker images'
74
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
75
+ Initialize packer project [NAME] for docker images
76
+ LONGDESC
77
+ # Initialize packer project [NAME] for docker images.
78
+ def docker
79
+ exit init_packer_docker
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takeltau init packer docker
4
+ module InitPackerDocker
5
+ # Backend method for init docker packer.
6
+ # @return [Boolean] successful init?
7
+ def init_packer_docker
8
+ log.debug 'Initialize packer project for docker images'
9
+
10
+ files = _init_packer_docker_files_get
11
+
12
+ return false unless _init_packer_docker_check_prerequisites files
13
+
14
+ exit_code = _init_packer_docker_create_project files
15
+
16
+ # reinitialize config with newly created files
17
+ initialize_config
18
+
19
+ return false unless _init_lib_bit_require_import
20
+
21
+ return false unless exit_code
22
+
23
+ true
24
+ end
25
+
26
+ private
27
+
28
+ # Add templates.
29
+ def _init_packer_docker_files_get
30
+ [
31
+ @ansiblelint,
32
+ @bitrequireyml,
33
+ @gitignore,
34
+ @groupvarsprojectyml,
35
+ @playbooksiteyml,
36
+ @projectyml,
37
+ @rakefile
38
+ ]
39
+ end
40
+
41
+ # Check prerequisites.
42
+ def _init_packer_docker_check_prerequisites(files)
43
+ return false unless _init_lib_git_check
44
+
45
+ return false unless _init_lib_bit_check
46
+
47
+ return false unless _init_lib_files_check files
48
+
49
+ true
50
+ end
51
+
52
+ # Create project.
53
+ def _init_packer_docker_create_project(files)
54
+ exit_code = true
55
+
56
+ exit_code &&= _init_lib_git_init
57
+ exit_code &&= _init_lib_bit_init
58
+ exit_code &&= _init_lib_files_create files
59
+ exit_code &&= _init_lib_git_add_all
60
+ exit_code &&= _init_lib_git_commit_initial
61
+
62
+ exit_code
63
+ end
64
+ end
@@ -0,0 +1,3 @@
1
+ ---
2
+ skip_list:
3
+ - role-name
@@ -0,0 +1,13 @@
1
+ ---
2
+ scopes:
3
+ takelage.ansible:
4
+ - name: ansible/molecule/default
5
+ - name: ansible/molecule/image
6
+ - name: ansible/roles/takel-cleanup
7
+ takelage.packer:
8
+ - name: packer/templates/takelage/docker
9
+ takelage.rake:
10
+ - name: rake/ansible
11
+ - name: rake/images
12
+ - name: rake/meta
13
+ - name: rake/rubylint
@@ -0,0 +1,2 @@
1
+ ---
2
+ project: "{{ lookup('pipe', 'tau project') | from_yaml }}"
@@ -0,0 +1,6 @@
1
+ ---
2
+ - name: (playbook-site) create project
3
+ hosts: all
4
+ gather_facts: false
5
+ roles:
6
+ - takel-cleanup
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: <%= name %>
3
+ version: 0.1.0
4
+
5
+ pipelines:
6
+ - prod
7
+
8
+ images:
9
+ project:
10
+ base_user: takelage
11
+ base_repo: takelslim
12
+ base_tag: latest
13
+ layers:
14
+ - site
15
+ omit_pipeline_name: prod
16
+ target_user: takelage
17
+ target_repo: <%= name %>
18
+
19
+ local_user: packer_local
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Takeltau
4
+ # takeltau init takelage
5
+ class InitTakelage < SubCommandBase
6
+ include Thor::Actions
7
+ include LoggingModule
8
+ include SystemModule
9
+ include ConfigModule
10
+ include ProjectModule
11
+ include GitCheckClean
12
+ include GitCheckBit
13
+ include GitCheckWorkspace
14
+ include BitCheckWorkspace
15
+ include BitClipboardLib
16
+ include BitClipboardCopy
17
+ include BitClipboardPaste
18
+ include BitRequireLib
19
+ include BitRequireImport
20
+ include InitLib
21
+ include InitTakelageRake
22
+
23
+ argument :name
24
+
25
+ # Initialize bit require
26
+ # Define templates
27
+ # rubocop:disable Metrics/MethodLength
28
+ def initialize(args = [], local_options = {}, configuration = {})
29
+ # initialize thor parent class
30
+ super args, local_options, configuration
31
+
32
+ @bit_require_file = config.active['bit_require_file']
33
+
34
+ @bitrequireyml = {
35
+ name: 'bitrequire.yml',
36
+ template: 'templates/bitrequireyml.tt'
37
+ }
38
+ @gitignore = {
39
+ name: '.gitignore',
40
+ template: '../templates/gitignore.tt'
41
+ }
42
+ @projectyml = {
43
+ name: 'project.yml',
44
+ template: 'templates/projectyml.tt'
45
+ }
46
+ @rakefile = {
47
+ name: 'Rakefile',
48
+ template: '../templates/Rakefile.tt'
49
+ }
50
+ end
51
+ # rubocop:enable Metrics/MethodLength
52
+
53
+ # Provide template path for Thor:Actions
54
+ def self.source_root
55
+ File.dirname(__FILE__)
56
+ end
57
+
58
+ #
59
+ # init takelage rake
60
+ #
61
+ desc 'rake [NAME]', 'Initialize takelage rake project [NAME]'
62
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
63
+ Initialize takelage rake project [NAME]
64
+ LONGDESC
65
+ # Initialize takelage rake project [NAME].
66
+ def rake
67
+ exit init_takelage_rake
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takeltau init takelage rake
4
+ module InitTakelageRake
5
+ # Backend method for init takelage rake.
6
+ # @return [Boolean] successful init?
7
+ def init_takelage_rake
8
+ log.debug 'Initialize takelage rake project'
9
+
10
+ files = _init_takelage_rake_files_get
11
+
12
+ return false unless _init_takelage_rake_check_prerequisites files
13
+
14
+ exit_code = _init_takelage_rake_create_project files
15
+
16
+ # reinitialize config with newly created files
17
+ initialize_config
18
+
19
+ return false unless _init_lib_bit_require_import
20
+
21
+ return false unless exit_code
22
+
23
+ true
24
+ end
25
+
26
+ private
27
+
28
+ # Add templates.
29
+ def _init_takelage_rake_files_get
30
+ [
31
+ @bitrequireyml,
32
+ @gitignore,
33
+ @projectyml,
34
+ @rakefile
35
+ ]
36
+ end
37
+
38
+ # Check prerequisites.
39
+ def _init_takelage_rake_check_prerequisites(files)
40
+ return false unless _init_lib_git_check
41
+
42
+ return false unless _init_lib_bit_check
43
+
44
+ return false unless _init_lib_files_check files
45
+
46
+ true
47
+ end
48
+
49
+ # Create project.
50
+ def _init_takelage_rake_create_project(files)
51
+ exit_code = true
52
+
53
+ exit_code &&= _init_lib_git_init
54
+ exit_code &&= _init_lib_bit_init
55
+ exit_code &&= _init_lib_files_create files
56
+ exit_code &&= _init_lib_git_add_all
57
+ exit_code &&= _init_lib_git_commit_initial
58
+
59
+ exit_code
60
+ end
61
+ end