rake_git_crypt 0.1.0.pre.4 → 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: aae83500c9c213d549612a58a4913639629f494b3ff69a7edec4385a06f5795a
4
- data.tar.gz: 1a8f3ee47d52d978e1a8a7d07045254dbe015d6a9eae9764d890796f9bfca0b6
3
+ metadata.gz: 21646ae3a4b84a88a127a9330d98a60859bef7dd63f7530379a91891c19941c1
4
+ data.tar.gz: 72f4e093a66eeaf51fd99b86b1053a8d0f58d23c07d389ebeee818267b8fb22b
5
5
  SHA512:
6
- metadata.gz: 8854d1956d7f70b0652f40ce71ba861962a15987ea3e94c61455fb493a740aa2a6ad980c6f400c3b969178a62a41b5ba8fdb79159f5112ab900d3e9cd253e2ab
7
- data.tar.gz: 6d75fe6709528ff8ca493bac002982899f3c01b3bf4419a7b2c89f518a59b63d70f68fd6824bf26cd386d419fc12d8e0b01d01fbfd9bc49a251b3aba52075972
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.4)
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
@@ -13,32 +15,43 @@ module RakeGitCrypt
13
15
  parameter :key_name
14
16
 
15
17
  parameter :commit, default: false
18
+ parameter :trusted, default: false
16
19
 
17
20
  parameter :gpg_user_id
18
21
  parameter :gpg_user_key_path
19
22
 
20
23
  parameter :gpg_home_directory
24
+ parameter :gpg_work_directory, default: '/tmp'
21
25
 
22
26
  action do
23
27
  validate
24
28
 
25
29
  if gpg_user_id
26
30
  log_adding_by_id
27
- add_gpg_user(gpg_user_id)
31
+ add_gpg_user(gpg_home_directory, gpg_user_id)
28
32
  log_done
29
33
  end
30
34
 
31
35
  if gpg_user_key_path
32
36
  log_adding_by_key_path
33
- result = import_key
34
- key_fingerprint = lookup_key_fingerprint(result)
35
- 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
36
42
  log_done
37
43
  end
38
44
  end
39
45
 
40
46
  private
41
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
+
42
55
  def validate
43
56
  return if gpg_user_id || gpg_user_key_path
44
57
 
@@ -47,9 +60,11 @@ module RakeGitCrypt
47
60
  'but neither was.'
48
61
  end
49
62
 
50
- def import_key
63
+ def import_key(gpg_home_directory)
51
64
  RubyGPG2.import(
52
65
  key_file_paths: [gpg_user_key_path],
66
+ work_directory: gpg_work_directory,
67
+ home_directory: gpg_home_directory,
53
68
  with_status: true
54
69
  )
55
70
  end
@@ -59,17 +74,22 @@ module RakeGitCrypt
59
74
  .first_line.key_fingerprint
60
75
  end
61
76
 
62
- def add_gpg_user(gpg_user_id)
77
+ def add_gpg_user(gpg_home_directory, gpg_user_id)
63
78
  RubyGitCrypt.add_gpg_user(
64
79
  {
65
- key_name: key_name,
66
80
  gpg_user_id: gpg_user_id,
67
- no_commit: !commit
81
+ key_name: key_name,
82
+ no_commit: !commit,
83
+ trusted: trusted
68
84
  },
69
- gpg_home_directory ? { GNUPGHOME: gpg_home_directory } : {}
85
+ { environment: git_crypt_environment(gpg_home_directory) }
70
86
  )
71
87
  end
72
88
 
89
+ def git_crypt_environment(gpg_home_directory)
90
+ gpg_home_directory ? { GNUPGHOME: gpg_home_directory } : {}
91
+ end
92
+
73
93
  def log_adding_by_id
74
94
  $stdout.puts(
75
95
  "Adding GPG user with ID: '#{gpg_user_id}' to git-crypt..."
@@ -77,7 +97,7 @@ module RakeGitCrypt
77
97
  end
78
98
 
79
99
  def log_adding_by_key_path
80
- puts(
100
+ $stdout.puts(
81
101
  "Adding GPG user with key at: '#{gpg_user_key_path}' to git-crypt..."
82
102
  )
83
103
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RakeGitCrypt
4
- VERSION = '0.1.0.pre.4'
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.4
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