rake_git_crypt 0.1.0.pre.5 → 0.1.0.pre.7

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: 9ce17ef4adf03c23d3f0317d98a8e50559f192d1e77be3736cead101cacc0357
4
+ data.tar.gz: '0596975061976467ab3f9fbabe20d34c33951e91dceb31cd9f412269636db243'
5
5
  SHA512:
6
- metadata.gz: 9869038b5bd9405ed7f12f695b703e01e2e19ba206a127d066ff4bb688ee188120af9e089e38ca5e5a96d1179680e03abeecc5c596ddef5f523e4473e460f122
7
- data.tar.gz: 01a809933d1d4843da14d62d834e86933360d63baef2f3f079faa45d31056487ac1b804de1e37901f844d6e3f25b67dbcb6152cd7bb6a216d3359790e5aba5f2
6
+ metadata.gz: ebba33cb2adf1f65c2085cf25d71c21d9b173a8720a2ef4e610b188f7b6f30cd27463f9f7fffd925f58c875843eebaa17a1c3be28f17b11a60a48d06543e82ad
7
+ data.tar.gz: 81147c3981f97daebdcb560a2297a2811619e1dcce030260a3c605dc1e29ea55bde13db3c452f33ba21b6b5c7d25ae0bf58e88a5368a9c90ae848b795103a4fd
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.7)
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,38 @@ 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
+ auto_trust: gpg_home_directory.nil?)
42
+ end
37
43
  log_done
38
44
  end
39
45
  end
40
46
 
41
47
  private
42
48
 
49
+ def with_gpg_home_directory(&block)
50
+ Home.new(gpg_work_directory, gpg_home_directory || :temporary)
51
+ .with_resolved_directory do |home_directory|
52
+ block.call(home_directory)
53
+ end
54
+ end
55
+
43
56
  def validate
44
57
  return if gpg_user_id || gpg_user_key_path
45
58
 
@@ -48,9 +61,11 @@ module RakeGitCrypt
48
61
  'but neither was.'
49
62
  end
50
63
 
51
- def import_key
64
+ def import_key(gpg_home_directory)
52
65
  RubyGPG2.import(
53
66
  key_file_paths: [gpg_user_key_path],
67
+ work_directory: gpg_work_directory,
68
+ home_directory: gpg_home_directory,
54
69
  with_status: true
55
70
  )
56
71
  end
@@ -60,18 +75,22 @@ module RakeGitCrypt
60
75
  .first_line.key_fingerprint
61
76
  end
62
77
 
63
- def add_gpg_user(gpg_user_id)
64
- environment =
65
- gpg_home_directory ? { GNUPGHOME: gpg_home_directory } : {}
78
+ def add_gpg_user(gpg_home_directory, gpg_user_id, auto_trust: false)
66
79
  RubyGitCrypt.add_gpg_user(
67
80
  {
68
- key_name: key_name, gpg_user_id: gpg_user_id,
69
- no_commit: !commit, trusted: trusted
81
+ gpg_user_id: gpg_user_id,
82
+ key_name: key_name,
83
+ no_commit: !commit,
84
+ trusted: auto_trust || trusted
70
85
  },
71
- { environment: environment }
86
+ { environment: git_crypt_environment(gpg_home_directory) }
72
87
  )
73
88
  end
74
89
 
90
+ def git_crypt_environment(gpg_home_directory)
91
+ gpg_home_directory ? { GNUPGHOME: gpg_home_directory } : {}
92
+ end
93
+
75
94
  def log_adding_by_id
76
95
  $stdout.puts(
77
96
  "Adding GPG user with ID: '#{gpg_user_id}' to git-crypt..."
@@ -79,7 +98,7 @@ module RakeGitCrypt
79
98
  end
80
99
 
81
100
  def log_adding_by_key_path
82
- puts(
101
+ $stdout.puts(
83
102
  "Adding GPG user with key at: '#{gpg_user_key_path}' to git-crypt..."
84
103
  )
85
104
  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.7'
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.7
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