takelage 0.31.0 → 0.32.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/lib/takelage.rb +7 -0
- data/lib/takelage/default.yml +8 -1
- data/lib/takelage/init/cli.rb +9 -0
- data/lib/takelage/init/packer/cli.rb +81 -0
- data/lib/takelage/init/packer/docker.rb +46 -0
- data/lib/takelage/init/packer/lib.rb +92 -0
- data/lib/takelage/init/packer/templates/Rakefile.tt +3 -0
- data/lib/takelage/init/packer/templates/ansiblelint.tt +3 -0
- data/lib/takelage/init/packer/templates/bitrequireyml.tt +13 -0
- data/lib/takelage/init/packer/templates/gitignore.tt +16 -0
- data/lib/takelage/init/packer/templates/groupvarsprojectyml.tt +2 -0
- data/lib/takelage/init/packer/templates/playbooksiteyml.tt +6 -0
- data/lib/takelage/init/packer/templates/projectyml.tt +19 -0
- data/lib/takelage/lib/config.rb +1 -1
- data/lib/takelage/version +1 -1
- metadata +12 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6da2e24ce8c09334e2d3bc396e5ee529eab1564216719fc2f362edcb78b6a480
|
4
|
+
data.tar.gz: 5b1ca2322fa5277110e7ed54f9f9e2c2dc8618c1cdcefaadeabbbe744398f2e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 986fc63051162a239d4e4ef310f1c0113fe48858d7dfda51b37fcdbb8bfadf7c43f80aa7a4c6804a1ced4cd689422a973b11636a2c676d35639eba13da74d511
|
7
|
+
data.tar.gz: 191305505829cd4da5ee1f8d2bc7e06cb54461a6970ec5af86910d2d0c05f6d66d56b11e107bad12fbfa95a50cc9a1049caf4fb6200b763c19e19be8d3bc7a61
|
data/README.md
CHANGED
@@ -101,6 +101,7 @@ tau [info status gopass](features/cucumber/features/info/info.status.gopass.feat
|
|
101
101
|
tau [info status gpg](features/cucumber/features/info/info.status.gpg.feature) | Check gpg status
|
102
102
|
tau [info status mutagen](features/cucumber/features/info/info.status.mutagen.feature) | Check mutagen status
|
103
103
|
tau [info status ssh](features/cucumber/features/info/info.status.ssh.feature) | Check ssh status
|
104
|
+
tau [init packer docker](features/cucumber/features/info/init.packer.docker.feature) | Initialize packer project for docker images
|
104
105
|
tau [mutagen check daemon](features/cucumber/features/mutagen/mutagen.check.daemon.feature)) | Check if mutagen host conenction is available
|
105
106
|
tau [mutagen socket check](features/cucumber/features/mutagen/mutagen.socket.check.feature) [SOCKET] | Check if mutagen [SOCKET] exists
|
106
107
|
tau [mutagen socket create](features/cucumber/features/mutagen/mutagen.socket.create.feature) [NAME] [IN] [OUT] | Create a mutagen socket [NAME] from [IN] to [OUT] of the container
|
data/lib/takelage.rb
CHANGED
@@ -44,6 +44,10 @@ require_relative 'takelage/bit/require/import'
|
|
44
44
|
require_relative 'takelage/bit/require/cli'
|
45
45
|
require_relative 'takelage/bit/cli'
|
46
46
|
require_relative 'takelage/completion/cli'
|
47
|
+
require_relative 'takelage/init/packer/lib'
|
48
|
+
require_relative 'takelage/init/packer/docker'
|
49
|
+
require_relative 'takelage/init/packer/cli'
|
50
|
+
require_relative 'takelage/init/cli'
|
47
51
|
require_relative 'takelage/mutagen/check/daemon'
|
48
52
|
require_relative 'takelage/mutagen/socket/check'
|
49
53
|
require_relative 'takelage/mutagen/socket/create'
|
@@ -147,6 +151,9 @@ module Takelage
|
|
147
151
|
desc 'info [COMMAND] ', 'Get information'
|
148
152
|
subcommand 'info', Info
|
149
153
|
|
154
|
+
desc 'init [COMMAND] ', 'Init projects'
|
155
|
+
subcommand 'init', Init
|
156
|
+
|
150
157
|
desc 'mutagen [COMMAND] ', 'Manage mutagen'
|
151
158
|
subcommand 'mutagen', Mutagen
|
152
159
|
|
data/lib/takelage/default.yml
CHANGED
@@ -4,7 +4,8 @@ bit_remote: ''
|
|
4
4
|
bit_require_file: 'bitrequire.yml'
|
5
5
|
bit_root: '/bit'
|
6
6
|
bit_ssh: ''
|
7
|
-
|
7
|
+
cmd_bit: 'bit'
|
8
|
+
cmd_bit_check_workspace_bit_list: 'bit status'
|
8
9
|
cmd_bit_check_workspace_pwd: 'pwd'
|
9
10
|
cmd_bit_clipboard_lib_bit_status: 'bit status'
|
10
11
|
cmd_bit_clipboard_copy_bit_list_scope: 'bit list --skip-update --json %{scope}'
|
@@ -46,6 +47,7 @@ cmd_docker_image_tag_check_docker_images: 'docker images --quiet %{image}'
|
|
46
47
|
cmd_docker_image_tag_list_docker_images: 'docker images %{docker_user}\/%{docker_repo} --format "{{.Tag}}"'
|
47
48
|
cmd_docker_image_update_docker_pull_latest: 'docker pull %{docker_user}/%{docker_repo}:latest'
|
48
49
|
cmd_docker_image_update_docker_remove_dangling: 'docker image prune --force'
|
50
|
+
cmd_git: 'git'
|
49
51
|
cmd_git_check_clean_git_unstaged: 'git diff --exit-code'
|
50
52
|
cmd_git_check_clean_git_uncommitted: 'git diff --cached --exit-code'
|
51
53
|
cmd_git_check_clean_git_status: 'git status --porcelain'
|
@@ -61,6 +63,10 @@ cmd_info_status_gpg_agent: 'gpg-connect-agent /bye'
|
|
61
63
|
cmd_info_status_gpg_keys: 'gpg --list-keys'
|
62
64
|
cmd_info_status_ssh_keys: 'ssh-add -l'
|
63
65
|
cmd_info_status_ssh_socket: 'gpgconf --list-dirs agent-ssh-socket'
|
66
|
+
cmd_init_packer_lib_bit_init: 'bit init'
|
67
|
+
cmd_init_packer_lib_git_init: 'git init && git checkout -b main'
|
68
|
+
cmd_init_packer_lib_git_add_all: 'git add --all'
|
69
|
+
cmd_init_packer_lib_git_commit_initial: 'git commit -m "Initial commit"'
|
64
70
|
cmd_mutagen: 'mutagen'
|
65
71
|
cmd_mutagen_check_daemon_host_connection: 'mutagen forward list --label-selector="%{hostlabel}"'
|
66
72
|
cmd_mutagen_check_daemon_version: 'mutagen version'
|
@@ -81,6 +87,7 @@ docker_user: 'takelage'
|
|
81
87
|
git_bit_branch: 'main'
|
82
88
|
info_project_main: 'project.yml'
|
83
89
|
info_project_private: 'private/project.yml'
|
90
|
+
init_packer_docker_bit_require_import: 'true'
|
84
91
|
login_wait_for_sockets: '0'
|
85
92
|
mutagen_socket_path_mutagen: '~/.mutagen/daemon/daemon.sock'
|
86
93
|
mutagen_socket_path_gpg: '~/.gnupg/S.gpg-agent'
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Takelage
|
4
|
+
# takelage info project
|
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 InitPackerLib
|
21
|
+
include InitPackerDocker
|
22
|
+
|
23
|
+
argument :name
|
24
|
+
|
25
|
+
# Initialize bit require
|
26
|
+
# rubocop:disable Metrics/MethodLength
|
27
|
+
def initialize(args = [], local_options = {}, configuration = {})
|
28
|
+
# initialize thor parent class
|
29
|
+
super args, local_options, configuration
|
30
|
+
|
31
|
+
@bit_require_file = config.active['bit_require_file']
|
32
|
+
|
33
|
+
@ansiblelint = {
|
34
|
+
name: 'ansible/.ansible-lint',
|
35
|
+
template: 'templates/ansiblelint.tt'
|
36
|
+
}
|
37
|
+
@bitrequireyml = {
|
38
|
+
name: 'bitrequire.yml',
|
39
|
+
template: 'templates/bitrequireyml.tt'
|
40
|
+
}
|
41
|
+
@gitignore = {
|
42
|
+
name: '.gitignore',
|
43
|
+
template: 'templates/gitignore.tt'
|
44
|
+
}
|
45
|
+
@groupvarsprojectyml = {
|
46
|
+
name: 'ansible/group_vars/project.yml',
|
47
|
+
template: 'templates/groupvarsprojectyml.tt'
|
48
|
+
}
|
49
|
+
@playbooksiteyml = {
|
50
|
+
name: 'ansible/playbook-site.yml',
|
51
|
+
template: 'templates/playbooksiteyml.tt'
|
52
|
+
}
|
53
|
+
@projectyml = {
|
54
|
+
name: 'project.yml',
|
55
|
+
template: 'templates/projectyml.tt'
|
56
|
+
}
|
57
|
+
@rakefile = {
|
58
|
+
name: 'Rakefile',
|
59
|
+
template: 'templates/Rakefile.tt'
|
60
|
+
}
|
61
|
+
end
|
62
|
+
# rubocop:enable Metrics/MethodLength
|
63
|
+
|
64
|
+
# Provide template path for Thor:Actions
|
65
|
+
def self.source_root
|
66
|
+
File.dirname(__FILE__)
|
67
|
+
end
|
68
|
+
|
69
|
+
#
|
70
|
+
# init packer docker
|
71
|
+
#
|
72
|
+
desc 'docker [NAME]', 'Initialize packer project [NAME] for docker images'
|
73
|
+
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
74
|
+
Initialize packer project [NAME] for docker images
|
75
|
+
LONGDESC
|
76
|
+
# Initialize packer project [NAME] for docker images.
|
77
|
+
def docker
|
78
|
+
exit init_packer_docker
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage init packer docker
|
4
|
+
module InitPackerDocker
|
5
|
+
def init_packer_docker
|
6
|
+
log.debug 'Initialize packer project for docker images'
|
7
|
+
|
8
|
+
files = _init_packer_docker_files_get
|
9
|
+
|
10
|
+
return false unless _init_packer_docker_lib_check_prerequisites files
|
11
|
+
|
12
|
+
exit_code = _init_packer_docker_lib_create_project files
|
13
|
+
|
14
|
+
# reinitialize config with newly created files
|
15
|
+
initialize_config
|
16
|
+
|
17
|
+
return false unless _init_packer_docker_bit_require_import
|
18
|
+
|
19
|
+
return false unless exit_code
|
20
|
+
|
21
|
+
true
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def _init_packer_docker_files_get
|
27
|
+
[
|
28
|
+
@ansiblelint,
|
29
|
+
@bitrequireyml,
|
30
|
+
@gitignore,
|
31
|
+
@groupvarsprojectyml,
|
32
|
+
@playbooksiteyml,
|
33
|
+
@projectyml,
|
34
|
+
@rakefile
|
35
|
+
]
|
36
|
+
end
|
37
|
+
|
38
|
+
def _init_packer_docker_bit_require_import
|
39
|
+
if config.active['init_packer_docker_bit_require_import'] == 'true'
|
40
|
+
log.info 'Importing bit components'
|
41
|
+
return false unless bit_require_import
|
42
|
+
end
|
43
|
+
|
44
|
+
true
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# takelage info status lib
|
4
|
+
module InitPackerLib
|
5
|
+
private
|
6
|
+
|
7
|
+
def _init_packer_docker_lib_check_prerequisites(files)
|
8
|
+
return false unless _init_packer_lib_git_check
|
9
|
+
|
10
|
+
return false unless _init_packer_lib_bit_check
|
11
|
+
|
12
|
+
return false unless _init_packer_lib_files_check files
|
13
|
+
|
14
|
+
true
|
15
|
+
end
|
16
|
+
|
17
|
+
def _init_packer_docker_lib_create_project(files)
|
18
|
+
exit_code = true
|
19
|
+
|
20
|
+
exit_code &&= _init_packer_lib_git_init
|
21
|
+
exit_code &&= _init_packer_lib_bit_init
|
22
|
+
exit_code &&= _init_packer_lib_files_create files
|
23
|
+
exit_code &&= _init_packer_lib_git_add_all
|
24
|
+
exit_code &&= _init_packer_lib_git_commit_initial
|
25
|
+
|
26
|
+
exit_code
|
27
|
+
end
|
28
|
+
|
29
|
+
def _init_packer_lib_bit_check
|
30
|
+
return false unless command_available_else_error? config.active['cmd_bit']
|
31
|
+
return true unless bit_check_workspace
|
32
|
+
|
33
|
+
log.error 'bit is already initialized!'
|
34
|
+
false
|
35
|
+
end
|
36
|
+
|
37
|
+
def _init_packer_lib_bit_init
|
38
|
+
log.info 'Initializing bit workspace'
|
39
|
+
return false unless try config.active['cmd_init_packer_lib_bit_init']
|
40
|
+
|
41
|
+
true
|
42
|
+
end
|
43
|
+
|
44
|
+
def _init_packer_lib_git_check
|
45
|
+
return false unless command_available_else_error? config.active['cmd_git']
|
46
|
+
return true unless git_check_workspace
|
47
|
+
|
48
|
+
log.error 'git is already initialized!'
|
49
|
+
false
|
50
|
+
end
|
51
|
+
|
52
|
+
def _init_packer_lib_git_init
|
53
|
+
log.info 'Initializing git workspace'
|
54
|
+
return false unless try config.active['cmd_init_packer_lib_git_init']
|
55
|
+
|
56
|
+
true
|
57
|
+
end
|
58
|
+
|
59
|
+
def _init_packer_lib_files_check(files)
|
60
|
+
exit_status = true
|
61
|
+
files.each do |file|
|
62
|
+
if _file_exists? file[:name]
|
63
|
+
log.error "File exists: #{file[:name]}"
|
64
|
+
exit_status = false
|
65
|
+
end
|
66
|
+
end
|
67
|
+
exit_status
|
68
|
+
end
|
69
|
+
|
70
|
+
def _init_packer_lib_files_create(files)
|
71
|
+
files.each do |file|
|
72
|
+
template file[:template], file[:name]
|
73
|
+
end
|
74
|
+
true
|
75
|
+
end
|
76
|
+
|
77
|
+
# git add --all.
|
78
|
+
def _init_packer_lib_git_add_all
|
79
|
+
log.info 'Preparing initial git commit'
|
80
|
+
return false unless try config.active['cmd_init_packer_lib_git_add_all']
|
81
|
+
|
82
|
+
true
|
83
|
+
end
|
84
|
+
|
85
|
+
# git commit -m "Initial commit".
|
86
|
+
def _init_packer_lib_git_commit_initial
|
87
|
+
log.info 'Saving initial git commit'
|
88
|
+
return false unless try config.active['cmd_init_packer_lib_git_commit_initial']
|
89
|
+
|
90
|
+
true
|
91
|
+
end
|
92
|
+
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: init
|
18
|
+
|
19
|
+
local_user: packer_local
|
data/lib/takelage/lib/config.rb
CHANGED
@@ -68,7 +68,7 @@ module ConfigModule
|
|
68
68
|
if config_key == 'project_root_dir'
|
69
69
|
log.error 'Please create a "Rakefile" in the project root directory'
|
70
70
|
else
|
71
|
-
log.error "
|
71
|
+
log.error "Missing config key. Please configure \"#{config_key}\""
|
72
72
|
end
|
73
73
|
@configured = false
|
74
74
|
false
|
data/lib/takelage/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.32.0
|
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.
|
4
|
+
version: 0.32.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Geospin
|
@@ -259,6 +259,17 @@ files:
|
|
259
259
|
- lib/takelage/info/status/gpg.rb
|
260
260
|
- lib/takelage/info/status/lib.rb
|
261
261
|
- lib/takelage/info/status/ssh.rb
|
262
|
+
- lib/takelage/init/cli.rb
|
263
|
+
- lib/takelage/init/packer/cli.rb
|
264
|
+
- lib/takelage/init/packer/docker.rb
|
265
|
+
- lib/takelage/init/packer/lib.rb
|
266
|
+
- lib/takelage/init/packer/templates/Rakefile.tt
|
267
|
+
- lib/takelage/init/packer/templates/ansiblelint.tt
|
268
|
+
- lib/takelage/init/packer/templates/bitrequireyml.tt
|
269
|
+
- lib/takelage/init/packer/templates/gitignore.tt
|
270
|
+
- lib/takelage/init/packer/templates/groupvarsprojectyml.tt
|
271
|
+
- lib/takelage/init/packer/templates/playbooksiteyml.tt
|
272
|
+
- lib/takelage/init/packer/templates/projectyml.tt
|
262
273
|
- lib/takelage/lib/config.rb
|
263
274
|
- lib/takelage/lib/logging.rb
|
264
275
|
- lib/takelage/lib/project.rb
|