evertils 2.2.4 → 2.3.0
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 +4 -4
- data/README.md +1 -0
- data/evertils.gemspec +5 -4
- data/lib/evertils.rb +1 -0
- data/lib/evertils/controller.rb +0 -2
- data/lib/evertils/controllers/change.rb +2 -0
- data/lib/evertils/controllers/config.rb +103 -0
- data/lib/evertils/controllers/log.rb +2 -0
- data/lib/evertils/router.rb +4 -4
- data/lib/evertils/version.rb +1 -1
- metadata +25 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62ca579ad54707c549144be390ed3dcfa4879477f1728fb83a93f954375967d7
|
4
|
+
data.tar.gz: ecc129eb13feff7c60fb36c2f6d85a569a742102a56a5614bf8e381bb341b8ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb35a2cc7157eac38b55373b1b6e178781e6072dab44b29233659977b609a63694c5d36470f7195a407b35fdc1ec8d661ebde4272682b3bf1f214de730d55f28
|
7
|
+
data.tar.gz: 2ac70310c34c6d7b47b1b8c03cc249b75b4940dabb6f2fda74f946a052c70ee17a62d45acf78233d24ead2a0e26161b5353a9acf99886390f674cddc40cb79c2
|
data/README.md
CHANGED
@@ -20,6 +20,7 @@ See [this document](https://github.com/aapis/evertils/wiki/Logging-Specification
|
|
20
20
|
|generate|Create notes from templates|`evertils generate daily`, `evertils generate morning`, `evertils generate monthly`|
|
21
21
|
|log|Interact with a note's content|`evertils log message "I am a message"`, `evertils log grep 2223`, `evertils log group`|
|
22
22
|
|change|Change the configured Evernote API token `evertils` is using|`evertils change token`|
|
23
|
+
|config|Send your configuration to a secret gist, great for portability|`evertils config push`, `evertils config pull`|
|
23
24
|
|
24
25
|
## Automation
|
25
26
|
|
data/evertils.gemspec
CHANGED
@@ -17,11 +17,12 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.executables = 'evertils'
|
18
18
|
s.required_ruby_version = '>= 2.4.0'
|
19
19
|
|
20
|
-
s.add_runtime_dependency '
|
21
|
-
s.add_runtime_dependency 'mime-types', '~> 3.3.1'
|
20
|
+
s.add_runtime_dependency 'evertils-gist', '~> 5.1.2'
|
22
21
|
s.add_runtime_dependency 'evertils-common', '~> 0.3.7'
|
22
|
+
s.add_runtime_dependency 'mime-types', '~> 3.3.1'
|
23
23
|
s.add_runtime_dependency 'nokogiri', '~> 1.10.9'
|
24
|
+
s.add_runtime_dependency 'notifaction', '~> 0.4.4'
|
24
25
|
|
25
|
-
s.add_development_dependency
|
26
|
-
s.add_development_dependency
|
26
|
+
s.add_development_dependency 'bundler', '~> 1.10'
|
27
|
+
s.add_development_dependency 'rake', '~> 12.3.3'
|
27
28
|
end
|
data/lib/evertils.rb
CHANGED
data/lib/evertils/controller.rb
CHANGED
@@ -0,0 +1,103 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'yaml/store'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
module Evertils
|
7
|
+
module Controller
|
8
|
+
class Config < Controller::Base
|
9
|
+
def pre_exec
|
10
|
+
conf = contents_of('~/.evertils/config.yml')
|
11
|
+
@token = conf['gist_token'] unless conf['gist_token'].nil?
|
12
|
+
@updating = Gist.gist_exists?(@token)
|
13
|
+
# if the requested gist doesn't exist, ignore it and generate a new one
|
14
|
+
@token = nil unless @updating
|
15
|
+
|
16
|
+
Gist.login! unless has_auth_already?
|
17
|
+
end
|
18
|
+
|
19
|
+
def push
|
20
|
+
options = {
|
21
|
+
public: false
|
22
|
+
}
|
23
|
+
|
24
|
+
options.merge!(update: @token) unless @token.nil?
|
25
|
+
|
26
|
+
resp = Gist.multi_gist(payload, options)
|
27
|
+
@token = resp['id'] if resp.key?('id')
|
28
|
+
|
29
|
+
Notify.success(message(resp['html_url'])) if store_token?
|
30
|
+
end
|
31
|
+
|
32
|
+
def pull
|
33
|
+
# TODO: refactor this crap
|
34
|
+
files = Gist.download(@token)
|
35
|
+
|
36
|
+
FileUtils.mv(File.expand_path('~/.evertils'), File.expand_path('~/.evertils.old'))
|
37
|
+
FileUtils.mkdir_p(File.expand_path('~/.evertils/templates/type'))
|
38
|
+
|
39
|
+
dir = {}
|
40
|
+
t_pfx = '~/.evertils/templates/type'
|
41
|
+
c_pfx = '~/.evertils'
|
42
|
+
root_files = ['config.yml']
|
43
|
+
|
44
|
+
files.each_pair do |_, file|
|
45
|
+
dir["#{t_pfx}/#{file['filename']}"] = file['content'] unless file['filename'] == 'config.yml'
|
46
|
+
dir["#{c_pfx}/#{file['filename']}"] = file['content'] if root_files.include?(file['filename'])
|
47
|
+
end
|
48
|
+
|
49
|
+
dir.each_pair do |path, contents|
|
50
|
+
File.open(File.expand_path(path), 'w') { |f| f.write(contents) }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def message(url)
|
57
|
+
return "Gist updated - #{url}" if @updating
|
58
|
+
|
59
|
+
"Gist created - #{url}"
|
60
|
+
end
|
61
|
+
|
62
|
+
def payload
|
63
|
+
{
|
64
|
+
'config.yml' => contents_of('~/.evertils/config.yml').to_yaml,
|
65
|
+
}.merge(types)
|
66
|
+
end
|
67
|
+
|
68
|
+
def contents_of(file)
|
69
|
+
YAML.load_file(File.expand_path(file))
|
70
|
+
end
|
71
|
+
|
72
|
+
def types
|
73
|
+
types = {}
|
74
|
+
|
75
|
+
Dir[File.expand_path('~/.evertils/templates/type/*.yml')].each do |dir|
|
76
|
+
types["templates/type/#{dir.split('/').last}"] = contents_of(dir).to_yaml
|
77
|
+
end
|
78
|
+
|
79
|
+
types
|
80
|
+
end
|
81
|
+
|
82
|
+
def gist_authenticate
|
83
|
+
Gist.login!
|
84
|
+
end
|
85
|
+
|
86
|
+
def has_auth_already?
|
87
|
+
File.exist?(File.expand_path('~/.gist'))
|
88
|
+
end
|
89
|
+
|
90
|
+
def store_token?
|
91
|
+
store = YAML::Store.new(File.expand_path('~/.evertils/config.yml'))
|
92
|
+
yaml = contents_of('~/.evertils/config.yml')
|
93
|
+
|
94
|
+
store.transaction do
|
95
|
+
yaml.each_pair { |key, value| store[key] = value }
|
96
|
+
store['gist_token'] = @token
|
97
|
+
end
|
98
|
+
|
99
|
+
true
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
data/lib/evertils/router.rb
CHANGED
@@ -82,18 +82,18 @@ module Evertils
|
|
82
82
|
end
|
83
83
|
|
84
84
|
# checks output of gpg --list-keys for the presence of a specific GPG key
|
85
|
-
def
|
85
|
+
def verify_gpg_key
|
86
86
|
# TODO: replace with Open3
|
87
|
-
res = system("gpg --list-keys #{@config.get(:required, :
|
87
|
+
res = system("gpg --list-keys #{@config.get(:required, :gpg_key)} 2>/dev/null >/dev/null")
|
88
88
|
|
89
89
|
raise GpgException unless res
|
90
90
|
res
|
91
91
|
end
|
92
92
|
|
93
93
|
# checks output of ykman list to determine if the correct key is inserted
|
94
|
-
def
|
94
|
+
def verify_yubikey_serial
|
95
95
|
# TODO: replace with Open3
|
96
|
-
res = system("ykman list | grep #{@config.get(:required, :
|
96
|
+
res = system("ykman list | grep #{@config.get(:required, :yubikey_serial)} 2>/dev/null >/dev/null")
|
97
97
|
|
98
98
|
raise YubikeyException unless res
|
99
99
|
res
|
data/lib/evertils/version.rb
CHANGED
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: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Priebe
|
@@ -11,47 +11,47 @@ cert_chain: []
|
|
11
11
|
date: 2017-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: evertils-gist
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 5.1.2
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 5.1.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: evertils-common
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.3.7
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.3.7
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: mime-types
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 3.3.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 3.3.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: nokogiri
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 1.10.9
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: notifaction
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.4.4
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.4.4
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: bundler
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,6 +136,7 @@ files:
|
|
122
136
|
- lib/evertils/config.rb
|
123
137
|
- lib/evertils/controller.rb
|
124
138
|
- lib/evertils/controllers/change.rb
|
139
|
+
- lib/evertils/controllers/config.rb
|
125
140
|
- lib/evertils/controllers/log.rb
|
126
141
|
- lib/evertils/controllers/render.rb
|
127
142
|
- lib/evertils/exceptions/gpg_exception.rb
|