evertils 0.3.27 → 0.4.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: 720ca09dc9d7d89afa4d74339198a311f227d76b
4
- data.tar.gz: 9cd601199146d6c4eca7e5ae88f55824d2dfb468
3
+ metadata.gz: 63960e7260e09b841d48009ae22eb7a5fd61171e
4
+ data.tar.gz: 596c479a8841329ab8ddb7186f7c8a2a6f2f7d96
5
5
  SHA512:
6
- metadata.gz: 9159ebab49b3e62737224e13c9bf16a43271551f7242f9b38b643d5698b8b858becf2ca3db4a15c34e01c6c4f6ec1b77b26f7f5fa741307dd104cae76cf02247
7
- data.tar.gz: 3ef0e54ced274549b7d29a5ec03e3c9acbaf55f04fa3caedcbfbfc1f3996e3043450ee9247642a8bd2756e2c946445927b00d1d5fadda028a4cc9ffee7bea508
6
+ metadata.gz: 0bd824fcdadc08541ecaf17fad468b6c9bff456564da6464f6a2c695149c74835f2be78ea8ee454623248d0368b957a345742a82a3df90d4bcbb7fb4d296154b
7
+ data.tar.gz: 83d02e678a531b7cac51102f9330283632830fc7e0a3b4d1b5b5e29f078ee0e5b0ce304d32037ad255c1df686362f461dd57004d8d62c20dcc9996a5f237dcd4
data/README.md CHANGED
@@ -20,7 +20,6 @@ See [this document](https://github.com/aapis/evertils/wiki/Logging-Specification
20
20
  |new|Manually create notes|`evertils new note "STUFF"`, `evertils new share_note "STUFF"`, `other task $PIPE_CHAR$ evertils new share_note --title="Piped data note"`|
21
21
  |get|Get data from Evernote|`evertils get notebook` (coming soon)|
22
22
  |convert|Convert your notes to Markdown, then back to ENML|(coming soon)|
23
- |status|View script information and other data|`evertils status`|
24
23
 
25
24
  ## Automation
26
25
 
@@ -42,10 +42,19 @@ module Evertils
42
42
  # Get a specific value from the config file data
43
43
  # Params:
44
44
  # +name+:: String/symbol key value
45
- def get(name)
45
+ def get(name, child = nil)
46
+ return @yml[name.to_sym][child.to_sym] unless child.nil?
46
47
  @yml[name.to_sym]
47
48
  end
48
49
 
50
+ # Checks if a key exists
51
+ # Params:
52
+ # +name+:: String/symbol key value
53
+ def exist?(name, child = nil)
54
+ return @yml[name].key?(child.to_sym) unless child.nil?
55
+ @yml.key?(name.to_sym)
56
+ end
57
+
49
58
  private
50
59
 
51
60
  # Check if configuration data exists
@@ -0,0 +1,2 @@
1
+ class GpgException < StandardError
2
+ end
@@ -0,0 +1,2 @@
1
+ class RequiredCheckException < StandardError
2
+ end
@@ -16,6 +16,20 @@ module Evertils
16
16
  require "evertils/controllers/#{@request.controller}"
17
17
  # include helpers
18
18
  require "evertils/helpers/#{@request.controller}" if File.exist? "evertils/helpers/#{@request.controller}"
19
+
20
+ # perform all required checks
21
+ must_pass = Helper::Results.new
22
+ @config.get(:required).each do |key, value|
23
+ must_pass.add(send("verify_#{key}"))
24
+ end
25
+
26
+ raise RequiredCheckException unless must_pass.should_eval_to(true)
27
+ rescue YubikeyException
28
+ Notify.error('Check failed: Yubikey is not inserted')
29
+ rescue GpgException
30
+ Notify.error('Check failed: GPG key not found or not imported into your keychain')
31
+ rescue RequiredCheckException
32
+ Notify.error('One or more required checks failed')
19
33
  rescue LoadError
20
34
  Notify.error("Controller not found: #{@request.controller}")
21
35
  end
@@ -52,5 +66,23 @@ module Evertils
52
66
  Notify.error("#{e}\n#{e.backtrace.join("\n")}", show_time: false)
53
67
  end
54
68
  end
69
+
70
+ # checks output of gpg --list-keys for the presence of a specific GPG key
71
+ def verify_gpgKey
72
+ # TODO: replace with Open3
73
+ res = system("gpg --list-keys #{@config.get(:required, :gpgKey)} 2>/dev/null >/dev/null")
74
+
75
+ raise GpgException unless res
76
+ res
77
+ end
78
+
79
+ # checks output of ykman list to determine if the correct key is inserted
80
+ def verify_yubikeySerial
81
+ # TODO: replace with Open3
82
+ res = system("ykman list | grep #{@config.get(:required, :yubikeySerial)} 2>/dev/null >/dev/null")
83
+
84
+ raise YubikeyException unless res
85
+ res
86
+ end
55
87
  end
56
88
  end
@@ -1,3 +1,3 @@
1
1
  module Evertils
2
- VERSION = '0.3.27'.freeze
2
+ VERSION = '0.4.0'.freeze
3
3
  end
@@ -0,0 +1,2 @@
1
+ class YubikeyException < StandardError
2
+ end
data/lib/evertils.rb CHANGED
@@ -14,6 +14,7 @@ require 'mime/types'
14
14
  require 'evertils/common'
15
15
  require 'yaml'
16
16
  require 'nokogiri'
17
+ # require 'open3'
17
18
 
18
19
  # include required files
19
20
  require 'evertils/kernel'
@@ -23,6 +24,9 @@ require 'evertils/type'
23
24
  require 'evertils/helpers/time'
24
25
  require 'evertils/helpers/results'
25
26
  require 'evertils/helpers/api-enml-handler'
27
+ require 'evertils/gpg_exception'
28
+ require 'evertils/yubikey_exception'
29
+ require 'evertils/required_check_exception'
26
30
  require 'evertils/config'
27
31
  require 'evertils/request'
28
32
  require 'evertils/controller'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evertils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.27
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Priebe
@@ -124,7 +124,7 @@ files:
124
124
  - lib/evertils/controllers/get.rb
125
125
  - lib/evertils/controllers/log.rb
126
126
  - lib/evertils/controllers/new.rb
127
- - lib/evertils/controllers/status.rb
127
+ - lib/evertils/gpg_exception.rb
128
128
  - lib/evertils/helper.rb
129
129
  - lib/evertils/helpers/api-enml-handler.rb
130
130
  - lib/evertils/helpers/evernote-enml.rb
@@ -136,6 +136,7 @@ files:
136
136
  - lib/evertils/helpers/xml.rb
137
137
  - lib/evertils/kernel.rb
138
138
  - lib/evertils/request.rb
139
+ - lib/evertils/required_check_exception.rb
139
140
  - lib/evertils/router.rb
140
141
  - lib/evertils/type.rb
141
142
  - lib/evertils/types/daily.rb
@@ -145,6 +146,7 @@ files:
145
146
  - lib/evertils/types/weekly.rb
146
147
  - lib/evertils/vendor/enml.dtd
147
148
  - lib/evertils/version.rb
149
+ - lib/evertils/yubikey_exception.rb
148
150
  homepage: http://rubygems.org/gems/evertils
149
151
  licenses:
150
152
  - MIT
@@ -1,13 +0,0 @@
1
- module Evertils
2
- module Controller
3
- class Status < Controller::Base
4
-
5
- def default
6
- @config.options.each_pair do |key, value|
7
- Notify.spit "#{key}: #{value}"
8
- end
9
- end
10
-
11
- end
12
- end
13
- end