rake_git_crypt 0.1.0.pre.5 → 0.1.0.pre.6

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: 469dc2fdb4abd85a647e020630fb56dd43b48577149825fb1e0a072a90ef5ae4
4
- data.tar.gz: 5f327a987291270d1093abb3eedb17ef0e9faa231ef0ea27e2c3829f6cc3ddd3
3
+ metadata.gz: 21646ae3a4b84a88a127a9330d98a60859bef7dd63f7530379a91891c19941c1
4
+ data.tar.gz: 72f4e093a66eeaf51fd99b86b1053a8d0f58d23c07d389ebeee818267b8fb22b
5
5
  SHA512:
6
- metadata.gz: 9869038b5bd9405ed7f12f695b703e01e2e19ba206a127d066ff4bb688ee188120af9e089e38ca5e5a96d1179680e03abeecc5c596ddef5f523e4473e460f122
7
- data.tar.gz: 01a809933d1d4843da14d62d834e86933360d63baef2f3f079faa45d31056487ac1b804de1e37901f844d6e3f25b67dbcb6152cd7bb6a216d3359790e5aba5f2
6
+ metadata.gz: add9d5c347374136880e7488523da77baf2a3df14aeffaf424463157a4f9917a09f66c1fae58284fe1ba245ac13e92565f45ef59433362c70571b6c0c152c32f
7
+ data.tar.gz: '0549fd57e7b9e9d7dfa1e83b86ee855b42cb814941dc667fce1c7b3ef355633bf51279faa3748e72f7b8cda7930f503e0b98a395f2f972cbf70a8b224d0053b3'
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.5)
4
+ rake_git_crypt (0.1.0.pre.6)
5
5
  colored2 (~> 3.1)
6
6
  rake_factory (~> 0.23)
7
7
  ruby_git_crypt (= 0.1.0.pre.2)
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RakeGitCrypt
4
+ class Home
5
+ def initialize(work_directory, home_directory)
6
+ @work_directory = work_directory
7
+ @home_directory = home_directory
8
+ end
9
+
10
+ def with_resolved_directory(&block)
11
+ if @home_directory == :temporary
12
+ Dir.mktmpdir('home', @work_directory, &block)
13
+ else
14
+ FileUtils.mkdir_p(@home_directory) if @home_directory
15
+ yield @home_directory
16
+ end
17
+ end
18
+ end
19
+ end
@@ -4,6 +4,8 @@ require 'rake_factory'
4
4
  require 'ruby_git_crypt'
5
5
  require 'ruby_gpg2'
6
6
 
7
+ require_relative '../home'
8
+
7
9
  module RakeGitCrypt
8
10
  module Tasks
9
11
  class AddUser < RakeFactory::Task
@@ -19,27 +21,37 @@ module RakeGitCrypt
19
21
  parameter :gpg_user_key_path
20
22
 
21
23
  parameter :gpg_home_directory
24
+ parameter :gpg_work_directory, default: '/tmp'
22
25
 
23
26
  action do
24
27
  validate
25
28
 
26
29
  if gpg_user_id
27
30
  log_adding_by_id
28
- add_gpg_user(gpg_user_id)
31
+ add_gpg_user(gpg_home_directory, gpg_user_id)
29
32
  log_done
30
33
  end
31
34
 
32
35
  if gpg_user_key_path
33
36
  log_adding_by_key_path
34
- result = import_key
35
- key_fingerprint = lookup_key_fingerprint(result)
36
- add_gpg_user(key_fingerprint)
37
+ with_gpg_home_directory do |home_directory|
38
+ result = import_key(home_directory)
39
+ key_fingerprint = lookup_key_fingerprint(result)
40
+ add_gpg_user(home_directory, key_fingerprint)
41
+ end
37
42
  log_done
38
43
  end
39
44
  end
40
45
 
41
46
  private
42
47
 
48
+ def with_gpg_home_directory(&block)
49
+ Home.new(gpg_work_directory, gpg_home_directory || :temporary)
50
+ .with_resolved_directory do |home_directory|
51
+ block.call(home_directory)
52
+ end
53
+ end
54
+
43
55
  def validate
44
56
  return if gpg_user_id || gpg_user_key_path
45
57
 
@@ -48,9 +60,11 @@ module RakeGitCrypt
48
60
  'but neither was.'
49
61
  end
50
62
 
51
- def import_key
63
+ def import_key(gpg_home_directory)
52
64
  RubyGPG2.import(
53
65
  key_file_paths: [gpg_user_key_path],
66
+ work_directory: gpg_work_directory,
67
+ home_directory: gpg_home_directory,
54
68
  with_status: true
55
69
  )
56
70
  end
@@ -60,18 +74,22 @@ module RakeGitCrypt
60
74
  .first_line.key_fingerprint
61
75
  end
62
76
 
63
- def add_gpg_user(gpg_user_id)
64
- environment =
65
- gpg_home_directory ? { GNUPGHOME: gpg_home_directory } : {}
77
+ def add_gpg_user(gpg_home_directory, gpg_user_id)
66
78
  RubyGitCrypt.add_gpg_user(
67
79
  {
68
- key_name: key_name, gpg_user_id: gpg_user_id,
69
- no_commit: !commit, trusted: trusted
80
+ gpg_user_id: gpg_user_id,
81
+ key_name: key_name,
82
+ no_commit: !commit,
83
+ trusted: trusted
70
84
  },
71
- { environment: environment }
85
+ { environment: git_crypt_environment(gpg_home_directory) }
72
86
  )
73
87
  end
74
88
 
89
+ def git_crypt_environment(gpg_home_directory)
90
+ gpg_home_directory ? { GNUPGHOME: gpg_home_directory } : {}
91
+ end
92
+
75
93
  def log_adding_by_id
76
94
  $stdout.puts(
77
95
  "Adding GPG user with ID: '#{gpg_user_id}' to git-crypt..."
@@ -79,7 +97,7 @@ module RakeGitCrypt
79
97
  end
80
98
 
81
99
  def log_adding_by_key_path
82
- puts(
100
+ $stdout.puts(
83
101
  "Adding GPG user with key at: '#{gpg_user_key_path}' to git-crypt..."
84
102
  )
85
103
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RakeGitCrypt
4
- VERSION = '0.1.0.pre.5'
4
+ VERSION = '0.1.0.pre.6'
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.5
4
+ version: 0.1.0.pre.6
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-08 00:00:00.000000000 Z
11
+ date: 2023-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colored2
@@ -278,6 +278,7 @@ files:
278
278
  - bin/console
279
279
  - bin/setup
280
280
  - lib/rake_git_crypt.rb
281
+ - lib/rake_git_crypt/home.rb
281
282
  - lib/rake_git_crypt/task_sets.rb
282
283
  - lib/rake_git_crypt/tasks.rb
283
284
  - lib/rake_git_crypt/tasks/add_user.rb