takelage 0.31.0 → 0.32.0
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.
- 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
|