rake_gpg 0.8.0 → 0.9.0.pre.1

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