takeltau 0.34.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +674 -0
- data/README.md +235 -0
- data/bin/tau +6 -0
- data/lib/Thorfile +3 -0
- data/lib/takeltau.rb +257 -0
- data/lib/takeltau/bit/check/cli.rb +23 -0
- data/lib/takeltau/bit/check/workspace.rb +37 -0
- data/lib/takeltau/bit/cli.rb +18 -0
- data/lib/takeltau/bit/clipboard/cli.rb +73 -0
- data/lib/takeltau/bit/clipboard/copy.rb +142 -0
- data/lib/takeltau/bit/clipboard/lib.rb +143 -0
- data/lib/takeltau/bit/clipboard/paste.rb +60 -0
- data/lib/takeltau/bit/clipboard/pull.rb +37 -0
- data/lib/takeltau/bit/clipboard/push.rb +37 -0
- data/lib/takeltau/bit/require/cli.rb +57 -0
- data/lib/takeltau/bit/require/export.rb +34 -0
- data/lib/takeltau/bit/require/import.rb +133 -0
- data/lib/takeltau/bit/require/lib.rb +19 -0
- data/lib/takeltau/bit/scope/add.rb +55 -0
- data/lib/takeltau/bit/scope/cli.rb +74 -0
- data/lib/takeltau/bit/scope/list.rb +41 -0
- data/lib/takeltau/bit/scope/new.rb +44 -0
- data/lib/takeltau/bit/scope/ssh.rb +13 -0
- data/lib/takeltau/completion/cli.rb +24 -0
- data/lib/takeltau/default.yml +95 -0
- data/lib/takeltau/docker/check/cli.rb +23 -0
- data/lib/takeltau/docker/check/daemon.rb +27 -0
- data/lib/takeltau/docker/cli.rb +15 -0
- data/lib/takeltau/docker/container/check/cli.rb +57 -0
- data/lib/takeltau/docker/container/check/existing.rb +32 -0
- data/lib/takeltau/docker/container/check/network.rb +32 -0
- data/lib/takeltau/docker/container/check/orphaned.rb +32 -0
- data/lib/takeltau/docker/container/clean.rb +40 -0
- data/lib/takeltau/docker/container/cli.rb +118 -0
- data/lib/takeltau/docker/container/command.rb +38 -0
- data/lib/takeltau/docker/container/daemon.rb +17 -0
- data/lib/takeltau/docker/container/lib.rb +181 -0
- data/lib/takeltau/docker/container/login.rb +58 -0
- data/lib/takeltau/docker/container/prune.rb +31 -0
- data/lib/takeltau/docker/image/cli.rb +39 -0
- data/lib/takeltau/docker/image/tag/check.rb +42 -0
- data/lib/takeltau/docker/image/tag/cli.rb +68 -0
- data/lib/takeltau/docker/image/tag/latest.rb +24 -0
- data/lib/takeltau/docker/image/tag/list.rb +19 -0
- data/lib/takeltau/docker/image/update.rb +27 -0
- data/lib/takeltau/git/check/bit.rb +26 -0
- data/lib/takeltau/git/check/clean.rb +46 -0
- data/lib/takeltau/git/check/cli.rb +49 -0
- data/lib/takeltau/git/check/workspace.rb +34 -0
- data/lib/takeltau/git/cli.rb +9 -0
- data/lib/takeltau/info/cli.rb +12 -0
- data/lib/takeltau/info/project/cli.rb +69 -0
- data/lib/takeltau/info/status/bar.rb +112 -0
- data/lib/takeltau/info/status/cli.rb +107 -0
- data/lib/takeltau/info/status/git.rb +47 -0
- data/lib/takeltau/info/status/gopass.rb +37 -0
- data/lib/takeltau/info/status/gpg.rb +39 -0
- data/lib/takeltau/info/status/lib.rb +46 -0
- data/lib/takeltau/info/status/ssh.rb +46 -0
- data/lib/takeltau/init/cli.rb +12 -0
- data/lib/takeltau/init/lib.rb +86 -0
- data/lib/takeltau/init/packer/cli.rb +82 -0
- data/lib/takeltau/init/packer/docker.rb +64 -0
- data/lib/takeltau/init/packer/templates/ansiblelint.tt +3 -0
- data/lib/takeltau/init/packer/templates/bitrequireyml.tt +13 -0
- data/lib/takeltau/init/packer/templates/groupvarsprojectyml.tt +2 -0
- data/lib/takeltau/init/packer/templates/playbooksiteyml.tt +6 -0
- data/lib/takeltau/init/packer/templates/projectyml.tt +19 -0
- data/lib/takeltau/init/takelage/cli.rb +70 -0
- data/lib/takeltau/init/takelage/rake.rb +61 -0
- data/lib/takeltau/init/takelage/templates/bitrequireyml.tt +5 -0
- data/lib/takeltau/init/takelage/templates/projectyml.tt +3 -0
- data/lib/takeltau/init/templates/Rakefile.tt +3 -0
- data/lib/takeltau/init/templates/gitignore.tt +16 -0
- data/lib/takeltau/lib/config.rb +130 -0
- data/lib/takeltau/lib/logging.rb +49 -0
- data/lib/takeltau/lib/project.rb +72 -0
- data/lib/takeltau/lib/subcmd.rb +18 -0
- data/lib/takeltau/lib/system.rb +194 -0
- data/lib/takeltau/mutagen/check/cli.rb +40 -0
- data/lib/takeltau/mutagen/check/daemon.rb +76 -0
- data/lib/takeltau/mutagen/cli.rb +12 -0
- data/lib/takeltau/mutagen/socket/check.rb +33 -0
- data/lib/takeltau/mutagen/socket/cli.rb +103 -0
- data/lib/takeltau/mutagen/socket/create.rb +47 -0
- data/lib/takeltau/mutagen/socket/list.rb +33 -0
- data/lib/takeltau/mutagen/socket/terminate.rb +32 -0
- data/lib/takeltau/mutagen/socket/tidy.rb +21 -0
- data/lib/takeltau/self/cli.rb +43 -0
- data/lib/takeltau/self/config/cli.rb +82 -0
- data/lib/takeltau/self/list.rb +35 -0
- data/lib/takeltau/version +1 -0
- 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,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,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
|