evertils 0.4.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/evertils/config.rb +18 -0
- data/lib/evertils/controller.rb +5 -1
- data/lib/evertils/controllers/log.rb +3 -3
- data/lib/evertils/controllers/render.rb +25 -0
- data/lib/evertils/helpers/formatting.rb +1 -1
- data/lib/evertils/helpers/note.rb +9 -3
- data/lib/evertils/request.rb +2 -2
- data/lib/evertils/router.rb +22 -4
- data/lib/evertils/version.rb +1 -1
- data/lib/evertils.rb +1 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: '090e7c596124e90b0ef20118f78f1609906eac814fc70f5c68b8c10f8509d867'
|
4
|
+
data.tar.gz: fdeda657569494c3fba6a650820f15dae663be3624d7f6650549bc3e240f4847
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c98eedc392dfac24e4e23f28a59cbac12667df4aeb250c4db768bc0ad19890446788329021a19fdb2578ed26338076b0c7f1a3d8caff0aeebde3189dbf7baa5
|
7
|
+
data.tar.gz: 12dea2af67a4415d7deaa52d7ccb23e6b96ea0cb047100a4fec638cdf76c11c0a57e9278fa3c47ca0e91e83e99c5cc2275531d393c56bbd3443cb5b8925271d9
|
data/lib/evertils/config.rb
CHANGED
@@ -44,6 +44,7 @@ module Evertils
|
|
44
44
|
# +name+:: String/symbol key value
|
45
45
|
def get(name, child = nil)
|
46
46
|
return @yml[name.to_sym][child.to_sym] unless child.nil?
|
47
|
+
|
47
48
|
@yml[name.to_sym]
|
48
49
|
end
|
49
50
|
|
@@ -52,9 +53,26 @@ module Evertils
|
|
52
53
|
# +name+:: String/symbol key value
|
53
54
|
def exist?(name, child = nil)
|
54
55
|
return @yml[name].key?(child.to_sym) unless child.nil?
|
56
|
+
|
55
57
|
@yml.key?(name.to_sym)
|
56
58
|
end
|
57
59
|
|
60
|
+
# Merge a hash into config data
|
61
|
+
# Params:
|
62
|
+
# +hash+:: Any arbitrary hash
|
63
|
+
def merge(hash)
|
64
|
+
@yml.merge!(hash)
|
65
|
+
self
|
66
|
+
end
|
67
|
+
|
68
|
+
def symbolize!
|
69
|
+
@yml = @yml.inject({}) { |h, (k, v)| h[k.to_sym] = v; h}
|
70
|
+
end
|
71
|
+
|
72
|
+
def pluck(*args)
|
73
|
+
@yml.slice(*args)
|
74
|
+
end
|
75
|
+
|
58
76
|
private
|
59
77
|
|
60
78
|
# Check if configuration data exists
|
data/lib/evertils/controller.rb
CHANGED
@@ -48,13 +48,17 @@ module Evertils
|
|
48
48
|
# Determines if the command can execute
|
49
49
|
# Params:
|
50
50
|
# +command+:: Symbol containing the command we want to execute
|
51
|
-
|
51
|
+
# +config+:: Configuration data
|
52
|
+
def can_exec?(command, config)
|
52
53
|
# no command was passed, check if controller has a default method
|
53
54
|
if command.nil? && respond_to?(:default)
|
54
55
|
@method = :default
|
55
56
|
elsif respond_to? command
|
56
57
|
# check the controller for the requested method
|
57
58
|
@method = command
|
59
|
+
elsif is_a? Evertils::Controller::Render
|
60
|
+
@method = :from_file
|
61
|
+
@request.param = config.pluck(:path, :notebook)
|
58
62
|
else
|
59
63
|
raise NoMethodError, "Invalid method: #{command}"
|
60
64
|
end
|
@@ -18,7 +18,7 @@ module Evertils
|
|
18
18
|
append: text
|
19
19
|
}
|
20
20
|
|
21
|
-
return Notify.error(
|
21
|
+
return Notify.error('Note not found') if note.entity.nil?
|
22
22
|
|
23
23
|
modify(note, edit_conf)
|
24
24
|
end
|
@@ -31,9 +31,9 @@ module Evertils
|
|
31
31
|
xml_helper = Evertils::Helper.load('Xml', xml)
|
32
32
|
|
33
33
|
time = Time.now.strftime('%I:%M')
|
34
|
-
target = xml.search("
|
34
|
+
target = xml.search("h2:contains('#{conf[:search]}')").first
|
35
35
|
|
36
|
-
return Notify.error('Unable to log message') if target.nil?
|
36
|
+
return Notify.error('Unable to log message, triage section not found') if target.nil?
|
37
37
|
|
38
38
|
log_message_txt = xml_helper.span("#{time} - #{conf[:append]}")
|
39
39
|
log_message_el = xml_helper.li(log_message_txt)
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'evertils/common/query/simple'
|
2
|
+
|
3
|
+
module Evertils
|
4
|
+
module Controller
|
5
|
+
class Render < Controller::Base
|
6
|
+
def from_file(config)
|
7
|
+
@config = config
|
8
|
+
return Notify.warning("Note already exists\n- #{@link}") if note_exists?
|
9
|
+
|
10
|
+
Notify.info 'Note not found, creating a new one'
|
11
|
+
|
12
|
+
query = Evertils::Common::Query::Simple.new
|
13
|
+
query.create_note_from_yml(@config[:path])
|
14
|
+
end
|
15
|
+
|
16
|
+
def note_exists?
|
17
|
+
helper = Evertils::Helper.load('Note')
|
18
|
+
note = helper.wait_for(@config[:notebook].to_sym, 3)
|
19
|
+
@link = helper.external_url_for(note.entity) unless note.entity.nil?
|
20
|
+
|
21
|
+
note.exists?
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -38,7 +38,7 @@ module Evertils
|
|
38
38
|
# Template string for note title
|
39
39
|
def date_templates
|
40
40
|
current_date = Date.today
|
41
|
-
week_stub =
|
41
|
+
week_stub = current_date.strftime('%a')
|
42
42
|
start_of_week = Date.commercial(current_date.year, current_date.cweek, 1)
|
43
43
|
end_of_week = Date.commercial(current_date.year, current_date.cweek, 5)
|
44
44
|
|
@@ -12,15 +12,15 @@ module Evertils
|
|
12
12
|
end
|
13
13
|
|
14
14
|
# Wait for a note to exist
|
15
|
-
def wait_for(notebook)
|
15
|
+
def wait_for(notebook, iterations = Evertils::Type::Base::MAX_SEARCH_SIZE)
|
16
16
|
Notify.info("Waiting for #{notebook}...")
|
17
17
|
note = find_note(notebook)
|
18
18
|
|
19
19
|
begin
|
20
20
|
# didn't find it the first time? wait and try again
|
21
21
|
if note.entity.nil?
|
22
|
-
(1..
|
23
|
-
Notify.info(" (#{iter}) #{notebook}")
|
22
|
+
(1..iterations).each do |iter|
|
23
|
+
Notify.info(" (#{iter}) Looking for #{notebook.downcase}")
|
24
24
|
note = find_note(notebook, true)
|
25
25
|
break unless note.entity.nil? || iter == Evertils::Type::Base::MAX_SEARCH_SIZE
|
26
26
|
end
|
@@ -46,6 +46,12 @@ module Evertils
|
|
46
46
|
"evernote:///view/#{@user[:id]}/#{@shard}/#{note.guid}/#{note.guid}/"
|
47
47
|
end
|
48
48
|
|
49
|
+
#
|
50
|
+
# @since 1.0.0
|
51
|
+
def external_url_for(note)
|
52
|
+
"https://www.evernote.com/Home.action#n=#{note.guid}&s=#{@shard}&ses=4&sh=2&sds=5"
|
53
|
+
end
|
54
|
+
|
49
55
|
# Create a note
|
50
56
|
def create(data)
|
51
57
|
@model.create_note(data)
|
data/lib/evertils/request.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Evertils
|
2
2
|
class Request
|
3
3
|
# Access controller variable property externally
|
4
|
-
|
4
|
+
attr_accessor :controller
|
5
5
|
# Access command variable property externally
|
6
6
|
attr_reader :command
|
7
7
|
# Access custom variable property externally
|
@@ -11,7 +11,7 @@ module Evertils
|
|
11
11
|
# Access raw_flags variable property externally
|
12
12
|
attr_reader :raw_flags
|
13
13
|
# Access param variable property externally
|
14
|
-
|
14
|
+
attr_accessor :param
|
15
15
|
|
16
16
|
# Create the request object, parse ARGV for values
|
17
17
|
def initialize
|
data/lib/evertils/router.rb
CHANGED
@@ -17,9 +17,11 @@ module Evertils
|
|
17
17
|
# include helpers
|
18
18
|
require "evertils/helpers/#{@request.controller}" if File.exist? "evertils/helpers/#{@request.controller}"
|
19
19
|
|
20
|
+
update_config if uses_config_file?
|
21
|
+
|
20
22
|
# perform all required checks
|
21
23
|
must_pass = Helper::Results.new
|
22
|
-
@config.get(:required).each do |key,
|
24
|
+
@config.get(:required).each do |key, _|
|
23
25
|
must_pass.add(send("verify_#{key}"))
|
24
26
|
end
|
25
27
|
|
@@ -30,8 +32,8 @@ module Evertils
|
|
30
32
|
Notify.error('Check failed: GPG key not found or not imported into your keychain')
|
31
33
|
rescue RequiredCheckException
|
32
34
|
Notify.error('One or more required checks failed')
|
33
|
-
rescue LoadError
|
34
|
-
Notify.error("Controller not found: #{@request.controller}")
|
35
|
+
rescue LoadError => e
|
36
|
+
Notify.error(e || "Controller not found: #{@request.controller}")
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
@@ -43,11 +45,12 @@ module Evertils
|
|
43
45
|
begin
|
44
46
|
unless @request.controller.nil?
|
45
47
|
controller = Evertils::Controller.const_get @request.controller.capitalize
|
48
|
+
controller = Evertils::Controller::Render if @config.exist?(:path)
|
46
49
|
|
47
50
|
# create an instance of the requested controller
|
48
51
|
context = controller.new(@config, @request)
|
49
52
|
|
50
|
-
if context.can_exec? @request.command
|
53
|
+
if context.can_exec? @request.command, @config
|
51
54
|
# Set things up
|
52
55
|
context.pre_exec
|
53
56
|
|
@@ -67,6 +70,21 @@ module Evertils
|
|
67
70
|
end
|
68
71
|
end
|
69
72
|
|
73
|
+
def uses_config_file?
|
74
|
+
@config_file_path = File.expand_path("~/.evertils/templates/type/#{@request.command}.yml")
|
75
|
+
File.exist? @config_file_path
|
76
|
+
end
|
77
|
+
|
78
|
+
def update_config
|
79
|
+
additional_config = { path: @config_file_path }.merge(YAML.safe_load(File.read(@config_file_path)))
|
80
|
+
@config.merge(additional_config).symbolize!
|
81
|
+
overwrite_controller_with :render
|
82
|
+
end
|
83
|
+
|
84
|
+
def overwrite_controller_with(new_controller)
|
85
|
+
@request.controller = new_controller
|
86
|
+
end
|
87
|
+
|
70
88
|
# checks output of gpg --list-keys for the presence of a specific GPG key
|
71
89
|
def verify_gpgKey
|
72
90
|
# TODO: replace with Open3
|
data/lib/evertils/version.rb
CHANGED
data/lib/evertils.rb
CHANGED
@@ -30,6 +30,7 @@ require 'evertils/required_check_exception'
|
|
30
30
|
require 'evertils/config'
|
31
31
|
require 'evertils/request'
|
32
32
|
require 'evertils/controller'
|
33
|
+
require 'evertils/controllers/render'
|
33
34
|
require 'evertils/router'
|
34
35
|
require 'evertils/helper'
|
35
36
|
require 'evertils/helpers/formatting'
|
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.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Priebe
|
@@ -124,6 +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/render.rb
|
127
128
|
- lib/evertils/gpg_exception.rb
|
128
129
|
- lib/evertils/helper.rb
|
129
130
|
- lib/evertils/helpers/api-enml-handler.rb
|
@@ -166,8 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
167
|
- !ruby/object:Gem::Version
|
167
168
|
version: '0'
|
168
169
|
requirements: []
|
169
|
-
|
170
|
-
rubygems_version: 2.6.12
|
170
|
+
rubygems_version: 3.0.1
|
171
171
|
signing_key:
|
172
172
|
specification_version: 4
|
173
173
|
summary: EN (heart) CLI
|