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

Sign up to get free protection for your applications and to get access to all the features.
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