takeltau 0.34.9

Sign up to get free protection for your applications and to get access to all the features.
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