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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/rake_git_crypt/tasks/add_user.rb +35 -10
- data/lib/rake_git_crypt/tasks/add_users.rb +26 -6
- data/lib/rake_git_crypt/tasks/install.rb +19 -0
- data/lib/rake_git_crypt/tasks/uninstall.rb +19 -0
- data/lib/rake_git_crypt/template.rb +24 -0
- data/lib/rake_git_crypt/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '00806c7a05b44e1ad2e1334a438f00ec559232d3b66485deae89253ebc34896a'
|
4
|
+
data.tar.gz: e2cac269d4518283941a25594048053fddc161a1dde2c5e85ac977d796c1bd5b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7865300a0cbbeaa6201cc891a67a310bd08816fe0efe65d4e90d19bb0f843ac417ba52ad1abe013ecbe432ae7c3e81afb496a38625b095b729f3b8900bb4c1ee
|
7
|
+
data.tar.gz: abbcdd0e73901e0cf60335f97f2d7042aaa573bb7b7472d3cc3042245e227d3e51431f41971c4d9306742ef87753dd512abe9cb7d2a2ba04cacf535b8f9b57f4
|
data/Gemfile.lock
CHANGED
@@ -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 :
|
18
|
-
parameter :
|
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
|
-
|
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
|
-
|
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: !
|
84
|
-
trusted: auto_trust ||
|
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 |
|
32
|
+
action do |task, args|
|
29
33
|
ensure_users_provided
|
30
|
-
ensure_tasks_present(
|
34
|
+
ensure_tasks_present(task)
|
31
35
|
|
32
|
-
add_users_by_key_paths(
|
33
|
-
add_users_by_ids(
|
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
|
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.
|
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
|
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
|