rake_git_crypt 0.1.0.pre.4 → 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: 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