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

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: 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