rake_gpg 0.8.0 → 0.9.0.pre.1

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: d31b03b13d2df23b40e74620d127e22fc5761ddda3042f6e1dfe85a6bd515e0a
4
- data.tar.gz: 42725740b5fa19e324b93c4f7ad90ec1e3c5beb54f100a5a41c92c406cf11ec2
3
+ metadata.gz: 74a76d859ca781187c8de5d87c584016e4a0b3e94a68999ef55d28724e861144
4
+ data.tar.gz: 3f203dcfe0fc905baf32f6077d3cf5e0548b17fcd97f8ee5db1d0e39082b6056
5
5
  SHA512:
6
- metadata.gz: ee66af1dda73a73b538a9970b7025bfc0a3714634822c9ca58060bea3c60b0cbc4b16ea4635ed67fe8ce730b82736717eab7eeba75c9098386c0d342e65d8b8b
7
- data.tar.gz: bf3d36a55eb58b37fe22f7950b533dada89b2b6761a752d8be90074981c15c7783fad662d193da1f6cf2c6c339f06f621e1dd7f9a2b1abf98583a755937d0445
6
+ metadata.gz: eb74dc620a5465cdb61c0ddac554fa4aa56a5377b9d02ed0520218c064a03af38d2a99c1ad347f9ee0a3685708ef3270e5621ec32a908644d4fcdec72dd5226b
7
+ data.tar.gz: bb208b669b5fd7e53dbdb249a9f201176820a79a9593862b5e7d4a9e816973e396dde44c13670b2e5feeeba1125d2f6cea812de221c587ef1e9ebdce8596a38f
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rake_gpg (0.8.0)
4
+ rake_gpg (0.9.0.pre.1)
5
5
  rake_factory (>= 0.23, < 1)
6
6
  ruby_gpg2 (>= 0.2, < 1)
7
7
 
@@ -0,0 +1,19 @@
1
+ module RakeGPG
2
+ class Home
3
+ def initialize(work_directory, home_directory)
4
+ @work_directory = work_directory
5
+ @home_directory = home_directory
6
+ end
7
+
8
+ def with_resolved_directory
9
+ if @home_directory == :temporary
10
+ Dir.mktmpdir('home', @work_directory) do |home_directory|
11
+ yield home_directory
12
+ end
13
+ else
14
+ FileUtils.mkdir_p(@home_directory)
15
+ yield @home_directory
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,6 +1,8 @@
1
1
  require 'rake_factory'
2
2
  require 'ruby_gpg2'
3
3
 
4
+ require_relative '../../home'
5
+
4
6
  module RakeGPG
5
7
  module Tasks
6
8
  module Encryption
@@ -12,7 +14,7 @@ module RakeGPG
12
14
  parameter :input_file_path, required: true
13
15
  parameter :output_file_path, required: true
14
16
 
15
- parameter :work_directory, default: 'build/gpg'
17
+ parameter :work_directory, default: '/tmp'
16
18
  parameter :home_directory, default: :temporary
17
19
 
18
20
  parameter :trust_mode, default: :always
@@ -20,34 +22,26 @@ module RakeGPG
20
22
 
21
23
  action do |t|
22
24
  mkdir_p(t.work_directory)
23
- if t.home_directory == :temporary
24
- Dir.mktmpdir(
25
- 'home', t.work_directory) do |home_directory|
26
- do_decrypt(t, home_directory)
27
- end
28
- else
29
- mkdir_p(t.home_directory)
30
- do_decrypt(t, t.home_directory)
31
- end
32
- end
33
25
 
34
- private
35
-
36
- def do_decrypt(t, home_directory)
37
26
  puts "Decrypting #{t.input_file_path} with key #{t.key_file_path}..."
38
- RubyGPG2.import(
39
- key_file_paths: [t.key_file_path],
40
- work_directory: t.work_directory,
41
- home_directory: home_directory)
42
-
43
- RubyGPG2.decrypt(
44
- input_file_path: t.input_file_path,
45
- output_file_path: t.output_file_path,
46
- home_directory: home_directory,
47
- trust_mode: t.trust_mode,
48
- passphrase: t.passphrase,
49
- pinentry_mode: t.passphrase ? :loopback : nil,
50
- without_passphrase: !t.passphrase)
27
+ Home.new(t.work_directory, t.home_directory)
28
+ .with_resolved_directory do |home_directory|
29
+ RubyGPG2.import(
30
+ key_file_paths: [t.key_file_path],
31
+ work_directory: t.work_directory,
32
+ home_directory: home_directory)
33
+
34
+ mkdir_p(File.dirname(t.output_file_path))
35
+
36
+ RubyGPG2.decrypt(
37
+ input_file_path: t.input_file_path,
38
+ output_file_path: t.output_file_path,
39
+ home_directory: home_directory,
40
+ trust_mode: t.trust_mode,
41
+ passphrase: t.passphrase,
42
+ pinentry_mode: t.passphrase ? :loopback : nil,
43
+ without_passphrase: !t.passphrase)
44
+ end
51
45
  puts "Done."
52
46
  end
53
47
  end
@@ -1,6 +1,8 @@
1
1
  require 'rake_factory'
2
2
  require 'ruby_gpg2'
3
3
 
4
+ require_relative '../../home'
5
+
4
6
  module RakeGPG
5
7
  module Tasks
6
8
  module Encryption
@@ -12,7 +14,7 @@ module RakeGPG
12
14
  parameter :input_file_path, required: true
13
15
  parameter :output_file_path, required: true
14
16
 
15
- parameter :work_directory, default: 'build/gpg'
17
+ parameter :work_directory, default: '/tmp'
16
18
  parameter :home_directory, default: :temporary
17
19
 
18
20
  parameter :armor, default: true
@@ -20,40 +22,32 @@ module RakeGPG
20
22
 
21
23
  action do |t|
22
24
  mkdir_p(t.work_directory)
23
- if t.home_directory == :temporary
24
- Dir.mktmpdir(
25
- 'home', t.work_directory) do |home_directory|
26
- do_encrypt(t, home_directory)
27
- end
28
- else
29
- mkdir_p(t.home_directory)
30
- do_encrypt(t, t.home_directory)
31
- end
32
- end
33
25
 
34
- private
35
-
36
- def do_encrypt(t, home_directory)
37
26
  puts "Encrypting #{t.input_file_path} for key #{t.key_file_path}..."
38
- result = RubyGPG2.import(
39
- key_file_paths: [t.key_file_path],
40
- work_directory: t.work_directory,
41
- home_directory: home_directory,
42
- with_status: true)
43
-
44
- key_fingerprint = result
45
- .status
46
- .filter_by_type(:import_ok)
47
- .first_line
48
- .key_fingerprint
49
-
50
- RubyGPG2.encrypt(
51
- recipient: key_fingerprint,
52
- input_file_path: t.input_file_path,
53
- output_file_path: t.output_file_path,
54
- home_directory: home_directory,
55
- armor: t.armor,
56
- trust_mode: t.trust_mode)
27
+ Home.new(t.work_directory, t.home_directory)
28
+ .with_resolved_directory do |home_directory|
29
+ result = RubyGPG2.import(
30
+ key_file_paths: [t.key_file_path],
31
+ work_directory: t.work_directory,
32
+ home_directory: home_directory,
33
+ with_status: true)
34
+
35
+ key_fingerprint = result
36
+ .status
37
+ .filter_by_type(:import_ok)
38
+ .first_line
39
+ .key_fingerprint
40
+
41
+ mkdir_p(File.dirname(t.output_file_path))
42
+
43
+ RubyGPG2.encrypt(
44
+ recipient: key_fingerprint,
45
+ input_file_path: t.input_file_path,
46
+ output_file_path: t.output_file_path,
47
+ home_directory: home_directory,
48
+ armor: t.armor,
49
+ trust_mode: t.trust_mode)
50
+ end
57
51
  puts "Done."
58
52
  end
59
53
  end
@@ -1,6 +1,8 @@
1
1
  require 'rake_factory'
2
2
  require 'ruby_gpg2'
3
3
 
4
+ require_relative '../../home'
5
+
4
6
  module RakeGPG
5
7
  module Tasks
6
8
  module Keys
@@ -11,7 +13,7 @@ module RakeGPG
11
13
  parameter :name_prefix, default: 'gpg'
12
14
  parameter :armor, default: true
13
15
 
14
- parameter :work_directory, default: 'build/gpg'
16
+ parameter :work_directory, default: '/tmp'
15
17
  parameter :home_directory, default: :temporary
16
18
  parameter :output_directory
17
19
 
@@ -29,62 +31,48 @@ module RakeGPG
29
31
 
30
32
  action do |t|
31
33
  mkdir_p(t.work_directory)
32
- if t.home_directory == :temporary
33
- Dir.mktmpdir(
34
- 'home', t.work_directory) do |home_directory|
35
- do_generate_key(t, home_directory)
36
- end
37
- else
38
- mkdir_p(t.home_directory)
39
- do_generate_key(t, t.home_directory)
40
- end
41
- end
42
-
43
- private
44
34
 
45
- def do_generate_key(t, home_directory)
46
35
  puts "Generating GPG key for #{t.owner_name} <#{t.owner_email}>..."
36
+ Home.new(t.work_directory, t.home_directory)
37
+ .with_resolved_directory do |home_directory|
38
+ mkdir_p t.output_directory if t.output_directory
47
39
 
48
- mkdir_p t.work_directory
49
- mkdir_p t.output_directory if t.output_directory
50
- mkdir_p home_directory if home_directory
51
-
52
- result = RubyGPG2::ParameterFileContents
53
- .new(t.parameter_values)
54
- .in_temp_file(t.work_directory) do |f|
55
- RubyGPG2.generate_key(
56
- parameter_file_path: f.path,
57
- home_directory: home_directory,
58
- work_directory: t.work_directory,
59
- without_passphrase: t.passphrase.nil?,
60
- with_status: true)
61
- end
40
+ result = RubyGPG2::ParameterFileContents
41
+ .new(t.parameter_values)
42
+ .in_temp_file(t.work_directory) do |f|
43
+ RubyGPG2.generate_key(
44
+ parameter_file_path: f.path,
45
+ home_directory: home_directory,
46
+ work_directory: t.work_directory,
47
+ without_passphrase: t.passphrase.nil?,
48
+ with_status: true)
49
+ end
62
50
 
63
- key_fingerprint = result
64
- .status
65
- .filter_by_type(:key_created)
66
- .first_line
67
- .key_fingerprint
51
+ key_fingerprint = result
52
+ .status
53
+ .filter_by_type(:key_created)
54
+ .first_line
55
+ .key_fingerprint
68
56
 
69
- puts "Generated GPG key with fingerprint #{key_fingerprint}."
57
+ puts "Generated GPG key with fingerprint #{key_fingerprint}."
70
58
 
71
- if t.output_directory
72
- puts 'Export requested. ' +
73
- "Exporting GPG key to #{t.output_directory}..."
74
- RubyGPG2.export(
75
- names: [key_fingerprint],
76
- output_file_path:
77
- "#{t.output_directory}/#{t.name_prefix}.public",
78
- armor: t.armor,
79
- home_directory: home_directory)
80
- RubyGPG2.export_secret_keys(
81
- names: [key_fingerprint],
82
- output_file_path:
83
- "#{t.output_directory}/#{t.name_prefix}.private",
84
- armor: t.armor,
85
- home_directory: home_directory)
59
+ if t.output_directory
60
+ puts 'Export requested. ' +
61
+ "Exporting GPG key to #{t.output_directory}..."
62
+ RubyGPG2.export(
63
+ names: [key_fingerprint],
64
+ output_file_path:
65
+ "#{t.output_directory}/#{t.name_prefix}.public",
66
+ armor: t.armor,
67
+ home_directory: home_directory)
68
+ RubyGPG2.export_secret_keys(
69
+ names: [key_fingerprint],
70
+ output_file_path:
71
+ "#{t.output_directory}/#{t.name_prefix}.private",
72
+ armor: t.armor,
73
+ home_directory: home_directory)
74
+ end
86
75
  end
87
-
88
76
  puts "Done."
89
77
  end
90
78
  end
@@ -1,6 +1,8 @@
1
1
  require 'rake_factory'
2
2
  require 'ruby_gpg2'
3
3
 
4
+ require_relative '../../home'
5
+
4
6
  module RakeGPG
5
7
  module Tasks
6
8
  module Keys
@@ -9,31 +11,20 @@ module RakeGPG
9
11
  default_description "Import a GPG key"
10
12
 
11
13
  parameter :key_file_path, required: true
12
- parameter :work_directory, default: 'build/gpg'
14
+ parameter :work_directory, default: '/tmp'
13
15
  parameter :home_directory, default: :temporary
14
16
 
15
17
  action do |t|
16
18
  mkdir_p(t.work_directory)
17
- if t.home_directory == :temporary
18
- Dir.mktmpdir(
19
- 'home', t.work_directory) do |home_directory|
20
- do_import_key(t, home_directory)
21
- end
22
- else
23
- mkdir_p(t.home_directory)
24
- do_import_key(t, t.home_directory)
25
- end
26
-
27
- end
28
-
29
- private
30
19
 
31
- def do_import_key(t, home_directory)
32
20
  puts "Importing GPG key from #{t.key_file_path} " +
33
21
  "into #{home_directory}..."
34
- RubyGPG2.import(
35
- key_file_paths: [t.key_file_path],
36
- home_directory: home_directory)
22
+ Home.new(t.work_directory, t.home_directory)
23
+ .with_resolved_directory do |home_directory|
24
+ RubyGPG2.import(
25
+ key_file_paths: [t.key_file_path],
26
+ home_directory: home_directory)
27
+ end
37
28
  puts "Done."
38
29
  end
39
30
  end
@@ -1,3 +1,3 @@
1
1
  module RakeGPG
2
- VERSION = '0.8.0'
2
+ VERSION = '0.9.0.pre.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake_gpg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0.pre.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toby Clemson
@@ -241,6 +241,7 @@ files:
241
241
  - config/secrets/rubygems/credentials
242
242
  - go
243
243
  - lib/rake_gpg.rb
244
+ - lib/rake_gpg/home.rb
244
245
  - lib/rake_gpg/tasks.rb
245
246
  - lib/rake_gpg/tasks/encryption.rb
246
247
  - lib/rake_gpg/tasks/encryption/decrypt.rb
@@ -272,9 +273,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
272
273
  version: 2.6.0
273
274
  required_rubygems_version: !ruby/object:Gem::Requirement
274
275
  requirements:
275
- - - ">="
276
+ - - ">"
276
277
  - !ruby/object:Gem::Version
277
- version: '0'
278
+ version: 1.3.1
278
279
  requirements: []
279
280
  rubygems_version: 3.0.1
280
281
  signing_key: