rake_git_crypt 0.1.0.pre.17 → 0.1.0.pre.18

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: 3a748262afe405e1a15bf60aa63e213dbb2a908b7116ebb397243719dffaf138
4
- data.tar.gz: 3bd972019c51aec40d6309c616b9ffeb4763384ad06dc405d073a705ba1d9274
3
+ metadata.gz: '00806c7a05b44e1ad2e1334a438f00ec559232d3b66485deae89253ebc34896a'
4
+ data.tar.gz: e2cac269d4518283941a25594048053fddc161a1dde2c5e85ac977d796c1bd5b
5
5
  SHA512:
6
- metadata.gz: 214da466a7dc1e925eb425b43218fc4250328cfef808d645a55a128dc19a0c0632c4393d267cfea407b996dd45b0731cdcad7f4c6a3a8aef2809c140290089ce
7
- data.tar.gz: 90d8d68012f680583f37ba842f36176d7a83d3226ec8f088a5d5a85f68a0d47575fc4133b4cf66525a4abbb5fb07a137a24c2cfec253ffc53f3791f7014597ed
6
+ metadata.gz: 7865300a0cbbeaa6201cc891a67a310bd08816fe0efe65d4e90d19bb0f843ac417ba52ad1abe013ecbe432ae7c3e81afb496a38625b095b729f3b8900bb4c1ee
7
+ data.tar.gz: abbcdd0e73901e0cf60335f97f2d7042aaa573bb7b7472d3cc3042245e227d3e51431f41971c4d9306742ef87753dd512abe9cb7d2a2ba04cacf535b8f9b57f4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rake_git_crypt (0.1.0.pre.17)
4
+ rake_git_crypt (0.1.0.pre.18)
5
5
  colored2 (~> 3.1)
6
6
  rake_factory (= 0.32.0.pre.2)
7
7
  ruby_git_crypt (= 0.1.0.pre.2)
@@ -5,17 +5,21 @@ require 'ruby_git_crypt'
5
5
  require 'ruby_gpg2'
6
6
 
7
7
  require_relative '../home'
8
+ require_relative '../template'
9
+ require_relative '../mixins/support'
8
10
 
9
11
  module RakeGitCrypt
10
12
  module Tasks
11
13
  class AddUser < RakeFactory::Task
14
+ include Mixins::Support
15
+
12
16
  default_name :add_user
13
17
  default_description 'Add user to git-crypt.'
14
18
 
15
19
  parameter :key_name
16
20
 
17
- parameter :commit, default: false
18
- parameter :trusted, default: false
21
+ parameter :allow_git_crypt_commit, default: false
22
+ parameter :allow_untrusted_keys, default: false
19
23
 
20
24
  parameter :gpg_user_id
21
25
  parameter :gpg_user_key_path
@@ -23,16 +27,19 @@ module RakeGitCrypt
23
27
  parameter :gpg_home_directory
24
28
  parameter :gpg_work_directory, default: '/tmp'
25
29
 
26
- action do
30
+ parameter :commit_message_template,
31
+ default: 'Adding git-crypt GPG user with <%= @type %>: ' \
32
+ "'<%= @value %>'."
33
+
34
+ parameter :commit_task_name
35
+
36
+ action do |task, args|
27
37
  validate
28
38
 
29
39
  if gpg_user_id
30
40
  log_adding_by_id
31
41
  add_gpg_user(gpg_home_directory, gpg_user_id)
32
- log_done
33
- end
34
-
35
- if gpg_user_key_path
42
+ elsif gpg_user_key_path
36
43
  log_adding_by_key_path
37
44
  with_gpg_home_directory do |home_directory|
38
45
  result = import_key(home_directory)
@@ -40,8 +47,10 @@ module RakeGitCrypt
40
47
  add_gpg_user(home_directory, key_fingerprint,
41
48
  auto_trust: gpg_home_directory.nil?)
42
49
  end
43
- log_done
44
50
  end
51
+
52
+ maybe_commit(task, args)
53
+ log_done
45
54
  end
46
55
 
47
56
  private
@@ -80,13 +89,29 @@ module RakeGitCrypt
80
89
  {
81
90
  gpg_user_id: gpg_user_id,
82
91
  key_name: key_name,
83
- no_commit: !commit,
84
- trusted: auto_trust || trusted
92
+ no_commit: !allow_git_crypt_commit,
93
+ trusted: auto_trust || allow_untrusted_keys
85
94
  },
86
95
  { environment: git_crypt_environment(gpg_home_directory) }
87
96
  )
88
97
  end
89
98
 
99
+ def maybe_commit(task, args)
100
+ return unless commit_task_name
101
+
102
+ invoke_task_with_name(
103
+ task, commit_task_name,
104
+ [commit_message(task), *args]
105
+ )
106
+ end
107
+
108
+ def commit_message(task)
109
+ Template.new(commit_message_template)
110
+ .render(type: gpg_user_id ? 'ID' : 'key path',
111
+ value: gpg_user_id || gpg_user_key_path,
112
+ task: task)
113
+ end
114
+
90
115
  def git_crypt_environment(gpg_home_directory)
91
116
  gpg_home_directory ? { GNUPGHOME: gpg_home_directory } : {}
92
117
  end
@@ -16,6 +16,9 @@ module RakeGitCrypt
16
16
  parameter :gpg_user_key_paths, default: []
17
17
  parameter :gpg_user_ids, default: []
18
18
 
19
+ parameter(:commit_message_template,
20
+ default: 'Adding users to git-crypt.')
21
+
19
22
  parameter(
20
23
  :add_user_by_id_task_name,
21
24
  default: :add_user_by_id
@@ -24,17 +27,17 @@ module RakeGitCrypt
24
27
  :add_user_by_key_path_task_name,
25
28
  default: :add_user_by_key_path
26
29
  )
30
+ parameter(:commit_task_name)
27
31
 
28
- action do |t, args|
32
+ action do |task, args|
29
33
  ensure_users_provided
30
- ensure_tasks_present(t)
34
+ ensure_tasks_present(task)
31
35
 
32
- add_users_by_key_paths(t, args)
33
- add_users_by_ids(t, args)
36
+ add_users_by_key_paths(task, args)
37
+ add_users_by_ids(task, args)
38
+ maybe_commit(task, args)
34
39
  end
35
40
 
36
- private
37
-
38
41
  def gpg_user_key_paths
39
42
  parameter = self.class.parameter_set.find(:gpg_user_key_paths)
40
43
  key_paths = parameter.get(self)
@@ -44,6 +47,8 @@ module RakeGitCrypt
44
47
  resolve_key_paths(key_paths)
45
48
  end
46
49
 
50
+ private
51
+
47
52
  def resolve_key_paths(paths)
48
53
  paths.inject([]) do |acc, key_path|
49
54
  [*acc, *resolve_key_path(key_path)]
@@ -155,7 +160,22 @@ module RakeGitCrypt
155
160
  'must be provided.'
156
161
  )
157
162
  end
163
+
164
+ def maybe_commit(task, args)
165
+ return unless commit_task_name
166
+
167
+ invoke_task_with_name(
168
+ task, commit_task_name,
169
+ [commit_message(task), *args]
170
+ )
171
+ end
172
+
173
+ def commit_message(task)
174
+ Template.new(commit_message_template)
175
+ .render(task: task)
176
+ end
158
177
  end
178
+
159
179
  # rubocop:enable Metrics/ClassLength
160
180
  end
161
181
  end
@@ -13,13 +13,18 @@ module RakeGitCrypt
13
13
  default_name :install
14
14
  default_description 'Install git-crypt.'
15
15
 
16
+ parameter(:commit_message_template,
17
+ default: 'Installing git-crypt.')
18
+
16
19
  parameter(:init_task_name, default: :init)
17
20
  parameter(:add_users_task_name, default: :add_users)
21
+ parameter(:commit_task_name)
18
22
 
19
23
  action do |task, args|
20
24
  puts('Installing git-crypt...')
21
25
  init_git_crypt(task, args)
22
26
  add_users_to_git_crypt(task, args)
27
+ maybe_commit(task, args)
23
28
  end
24
29
 
25
30
  private
@@ -31,6 +36,20 @@ module RakeGitCrypt
31
36
  def add_users_to_git_crypt(task, args)
32
37
  invoke_task_with_name(task, add_users_task_name, args)
33
38
  end
39
+
40
+ def maybe_commit(task, args)
41
+ return unless commit_task_name
42
+
43
+ invoke_task_with_name(
44
+ task, commit_task_name,
45
+ [commit_message(task), *args]
46
+ )
47
+ end
48
+
49
+ def commit_message(task)
50
+ Template.new(commit_message_template)
51
+ .render(task: task)
52
+ end
34
53
  end
35
54
  end
36
55
  end
@@ -13,14 +13,19 @@ module RakeGitCrypt
13
13
  default_name :uninstall
14
14
  default_description 'Uninstall git-crypt.'
15
15
 
16
+ parameter(:commit_message_template,
17
+ default: 'Uninstalling git-crypt.')
18
+
16
19
  parameter(:lock_task_name, default: :lock)
17
20
  parameter(:delete_secrets_task_name)
21
+ parameter(:commit_task_name)
18
22
 
19
23
  action do |task, args|
20
24
  puts('Uninstalling git-crypt...')
21
25
  lock_git_crypt(task, args)
22
26
  delete_git_crypt_directories
23
27
  maybe_delete_secrets(task, args)
28
+ maybe_commit(task, args)
24
29
  end
25
30
 
26
31
  private
@@ -39,6 +44,20 @@ module RakeGitCrypt
39
44
 
40
45
  invoke_task_with_name(task, delete_secrets_task_name, args)
41
46
  end
47
+
48
+ def maybe_commit(task, args)
49
+ return unless commit_task_name
50
+
51
+ invoke_task_with_name(
52
+ task, commit_task_name,
53
+ [commit_message(task), *args]
54
+ )
55
+ end
56
+
57
+ def commit_message(task)
58
+ Template.new(commit_message_template)
59
+ .render(task: task)
60
+ end
42
61
  end
43
62
  end
44
63
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'erb'
4
+
5
+ module RakeGitCrypt
6
+ class Template
7
+ def self.from_file(path)
8
+ new(File.read(path))
9
+ end
10
+
11
+ def initialize(contents)
12
+ @contents = contents
13
+ end
14
+
15
+ def render(parameters = {})
16
+ context = Object.new
17
+ parameters.each do |key, value|
18
+ context.instance_variable_set("@#{key}", value)
19
+ end
20
+ context_binding = context.instance_eval { binding }
21
+ ERB.new(@contents).result(context_binding)
22
+ end
23
+ end
24
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RakeGitCrypt
4
- VERSION = '0.1.0.pre.17'
4
+ VERSION = '0.1.0.pre.18'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake_git_crypt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre.17
4
+ version: 0.1.0.pre.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - InfraBlocks Maintainers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-31 00:00:00.000000000 Z
11
+ date: 2023-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colored2
@@ -93,6 +93,7 @@ files:
93
93
  - lib/rake_git_crypt/tasks/lock.rb
94
94
  - lib/rake_git_crypt/tasks/uninstall.rb
95
95
  - lib/rake_git_crypt/tasks/unlock.rb
96
+ - lib/rake_git_crypt/template.rb
96
97
  - lib/rake_git_crypt/version.rb
97
98
  - rake_git_crypt.gemspec
98
99
  homepage: https://github.com/infrablocks/rake_git_crypt