pre-commit-gpg 0.9.0 → 1.0.0

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
  SHA1:
3
- metadata.gz: 0d78cac13ba96d71517033242ed343b70c8484a4
4
- data.tar.gz: 403c5920515f1b9aeefc05c3f2e6e52fe50cb73d
3
+ metadata.gz: 1c5c56b6665ce9b4b2ae8acf1fac1e81e7d4758c
4
+ data.tar.gz: 200bb9f2b7770741063ab01c82f8be06b0486a4b
5
5
  SHA512:
6
- metadata.gz: 21f8a0f9ad6310477d40db648a8b25125c42085b4129fc41309e1b5f3d308b9a7a77430dcb07df605c39cb0aa33a0daa7b8dc8fac331fa70a953bdc7499a631a
7
- data.tar.gz: c8faf8791722bd584bdb03191714108d3384dc4157ff9204532808aeac4ede05ab1e9cce28ead3f5c51e61b6c3686c05b5a80d56e4f6bc24980c609156a6efcf
6
+ metadata.gz: ac550686a21360ca1f331b0f43b7f290ab45e930fe44f3d3e8f4f4651cd273300743f7573f5e510c9d2e73b0d15fa6937bd5b328993fb4d65d30057c36bf03cd
7
+ data.tar.gz: 5dff4bbdc4e214c78d250951296f933d5b5340681c8b90f3d5af0b270878a2e81602a403baaa89b750dd34e4c1317b399127083786468b11ee19638e6fb30a9a
data/README.md CHANGED
@@ -1,5 +1,3 @@
1
- # GPG verification for pre-commit gem
2
-
3
1
  [![Gem Version](https://badge.fury.io/rb/pre-commit-gpg.png)](https://rubygems.org/gems/pre-commit-gpg)
4
2
  [![Build Status](https://secure.travis-ci.org/pre-commit-plugins/pre-commit-gpg.png?branch=master)](https://travis-ci.org/pre-commit-plugins/pre-commit-gpg)
5
3
  [![Dependency Status](https://gemnasium.com/pre-commit-plugins/pre-commit-gpg.png)](https://gemnasium.com/pre-commit-plugins/pre-commit-gpg)
@@ -8,3 +6,13 @@
8
6
  [![Inline docs](http://inch-ci.org/github/pre-commit-plugins/pre-commit-gpg.png)](http://inch-ci.org/github/pre-commit-plugins/pre-commit-gpg)
9
7
  [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://rubydoc.info/github/pre-commit-plugins/pre-commit-gpg/master/frames)
10
8
  [![Github Code](http://img.shields.io/badge/github-code-blue.svg)](https://github.com/pre-commit-plugins/pre-commit-gpg)
9
+
10
+ # GPG verification for pre-commit gem
11
+
12
+ ### Installation
13
+
14
+ gem install pre-commit-gpg
15
+
16
+ ### Usage
17
+
18
+ pre-commit enable yaml checks gpg
@@ -1,13 +1,37 @@
1
+ =begin
2
+ Copyright 2014 Michal Papis <mpapis@gmail.com>
3
+
4
+ See the file LICENSE for copying permission.
5
+ =end
6
+
1
7
  require 'pre-commit/checks/shell'
8
+ require 'pre-commit/error_list'
2
9
 
10
+ # :nodoc:
3
11
  module PreCommit
12
+ # :nodoc:
4
13
  module Checks
14
+
15
+ #
16
+ # pre-commit gem plugin to verify GPG signatures
17
+ # when either the file or signature changes
18
+ #
5
19
  class Gpg < Shell
6
20
 
21
+ #
22
+ # description of the plugin
23
+ #
7
24
  def self.description
8
25
  "Finds GPG verification problems"
9
26
  end
10
27
 
28
+ #
29
+ # Finds files with signature and verifies them
30
+ #
31
+ # @param staged_files [Array<String>] list of files to check
32
+ #
33
+ # @return [nil|Array<PreCommit::ErrorList>] nil when no errors,
34
+ # list of errors otherwise
11
35
  def call(staged_files)
12
36
  signature_files = staged_files.map { |file| get_signature(file) }.compact.uniq
13
37
  return if signature_files.empty?
@@ -15,11 +39,18 @@ module PreCommit
15
39
  errors = signature_files.map { |file| run_check(file) }.compact
16
40
  return if errors.empty?
17
41
 
18
- errors.join("\n")
42
+ errors
19
43
  end
20
44
 
21
45
  private
22
46
 
47
+ #
48
+ # Checks if the given file is a signature or has one
49
+ #
50
+ # @param file [String] the file to check
51
+ #
52
+ # @return [nil|String] signature file when found, nil otherwise
53
+ #
23
54
  def get_signature(file)
24
55
  if
25
56
  File.exist?(file + ".asc")
@@ -33,20 +64,55 @@ module PreCommit
33
64
  end
34
65
  end
35
66
 
67
+ #
68
+ # Verify given file GPG signature
69
+ #
70
+ # @param file [String] path to file to verify
71
+ #
72
+ # @return [nil|PreCommit::ErrorList] nil when file verified,
73
+ # ErrorList when no GPG found to verify
74
+ # ErrorList when verification failed
75
+ #
36
76
  def run_check(file)
37
77
  if
38
78
  gpg_program
39
79
  then
40
- execute(gpg_program, "--verify", file)
80
+ parse_error( execute(gpg_program, "--verify", file), file )
41
81
  else
42
- warn "No GPG program found, skipping verification of #{file}"
82
+ PreCommit::ErrorList.new(PreCommit::Line.new("No GPG program found to run verification", file))
43
83
  end
44
84
  end
45
85
 
86
+ #
87
+ # convert verification failure string into ErrorList
88
+ #
89
+ # @param errors [String] Output of failed GPG verification to parse
90
+ # @param file [String] File that versification failed
91
+ #
92
+ # @return [nil|PreCommit::ErrorList] nil when file verified,
93
+ # ErrorList when verification failed
94
+ #
95
+ def parse_error(errors, file)
96
+ return if errors.nil?
97
+ PreCommit::ErrorList.new(
98
+ errors.split(/\n/).map do |error|
99
+ PreCommit::Line.new(error, file)
100
+ end
101
+ )
102
+ end
103
+
104
+ #
105
+ # @return [nil|String] path to the GPG binary or +nil+
106
+ #
46
107
  def gpg_program
47
108
  @gpg_program ||= find_binary(:gpg2) || find_binary(:gpg)
48
109
  end
49
110
 
111
+ #
112
+ # @param binary [String] the name of binary to find on +PATH+
113
+ #
114
+ # @return [nil|String] path to the searched binary or +nil+
115
+ #
50
116
  def find_binary(binary)
51
117
  result = execute_raw(
52
118
  "which #{binary}",
@@ -54,6 +120,7 @@ module PreCommit
54
120
  ) and result.strip
55
121
  end
56
122
 
57
- end
123
+ end # class Gpg < Shell
124
+
58
125
  end
59
126
  end
@@ -1,5 +1,14 @@
1
+ =begin
2
+ Copyright 2014 Michal Papis <mpapis@gmail.com>
3
+
4
+ See the file LICENSE for copying permission.
5
+ =end
6
+
7
+ # :nodoc:
1
8
  module PreCommit
9
+ # placeholder for gem VERSION
2
10
  module Gpg
3
- VERSION = "0.9.0"
11
+ # the gem version
12
+ VERSION = "1.0.0"
4
13
  end
5
14
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pre-commit-gpg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Papis
@@ -120,7 +120,7 @@ files:
120
120
  - lib/pre-commit/gpg/version.rb
121
121
  homepage: http://github.com/pre-commit-plugins/pre-commit-gpg
122
122
  licenses:
123
- - Apache 2.0
123
+ - MIT
124
124
  metadata: {}
125
125
  post_install_message:
126
126
  rdoc_options: []