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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8e474304722d66fb300d61b9802a63887e813d4d6fa15894fc3ed8d7a325e798
4
- data.tar.gz: 4eb757cb8eb7b441b7d3f2f700b4891201bcba0caf46ec8acaa256cde3ca8add
3
+ metadata.gz: 6da2e24ce8c09334e2d3bc396e5ee529eab1564216719fc2f362edcb78b6a480
4
+ data.tar.gz: 5b1ca2322fa5277110e7ed54f9f9e2c2dc8618c1cdcefaadeabbbe744398f2e7
5
5
  SHA512:
6
- metadata.gz: f110bf58872049c6900262fa5eb28a7f58516845fc887917b605fe1eac90098f88073ba39a37e53bbed9e6cd5cdd88f1500afa8b6a5e5dbf4c9e09bc4b2b158c
7
- data.tar.gz: 0fc82eb52b09b927079b470673b9adde8f4a28d5b8e4126f7ab7ed21dac548999bb993ffcf2d31e55bab2a97978a02f28619f9c11acab807461c9a9956854186
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
 
@@ -4,7 +4,8 @@ bit_remote: ''
4
4
  bit_require_file: 'bitrequire.yml'
5
5
  bit_root: '/bit'
6
6
  bit_ssh: ''
7
- cmd_bit_check_workspace_bit_list: 'bit list'
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,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Takelage
4
+ # takelage init
5
+ class Init < SubCommandBase
6
+ desc 'packer [COMMAND]', 'Init packer project'
7
+ subcommand 'packer', InitPacker
8
+ end
9
+ end
@@ -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,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ load 'rake/meta/Rakefile'
@@ -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,16 @@
1
+ .DS_Store
2
+ .idea
3
+ *.iml
4
+ *.iso
5
+ packer/images
6
+ packer/packer_cache
7
+ __pycache__/
8
+ *.pyc
9
+ .pytest_cache
10
+ pytestdebug.log
11
+ *.retry
12
+ takelage.log
13
+ takelage.yml
14
+ .vagrant
15
+ vault-password-file
16
+ *.vdi
@@ -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: init
18
+
19
+ local_user: packer_local
@@ -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 "Unset config key. Please configure \"#{config_key}\""
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.31.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.31.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