evertils 1.0.12 → 2.0.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 -3
- data/evertils.gemspec +3 -3
- data/lib/evertils/action.rb +2 -2
- data/lib/evertils/actions/duplicate_previous.rb +1 -1
- data/lib/evertils/base.rb +3 -3
- data/lib/evertils/config.rb +1 -3
- data/lib/evertils/controller.rb +0 -1
- data/lib/evertils/controllers/log.rb +2 -2
- data/lib/evertils/controllers/render.rb +15 -3
- data/lib/evertils/{gpg_exception.rb → exceptions/gpg_exception.rb} +0 -0
- data/lib/evertils/{required_check_exception.rb → exceptions/required_check_exception.rb} +0 -0
- data/lib/evertils/{yubikey_exception.rb → exceptions/yubikey_exception.rb} +0 -0
- data/lib/evertils/grammar.rb +4 -2
- data/lib/evertils/helpers/api-enml-handler.rb +2 -2
- data/lib/evertils/helpers/formatting.rb +1 -76
- data/lib/evertils/helpers/note.rb +12 -8
- data/lib/evertils/router.rb +3 -7
- data/lib/evertils/version.rb +1 -1
- data/lib/evertils.rb +3 -6
- metadata +14 -31
- data/lib/evertils/configs/templates/daily.enml +0 -14
- data/lib/evertils/configs/templates/monthly-task-summaries.enml +0 -9
- data/lib/evertils/configs/templates/monthly.enml +0 -13
- data/lib/evertils/configs/templates/pq.enml +0 -3
- data/lib/evertils/configs/templates/weekly.enml +0 -13
- data/lib/evertils/controllers/convert.rb +0 -48
- data/lib/evertils/controllers/generate.rb +0 -57
- data/lib/evertils/controllers/get.rb +0 -55
- data/lib/evertils/controllers/new.rb +0 -88
- data/lib/evertils/helper.rb +0 -19
- data/lib/evertils/helpers/time.rb +0 -28
- data/lib/evertils/type.rb +0 -58
- data/lib/evertils/types/daily.rb +0 -54
- data/lib/evertils/types/monthly-task-summary.rb +0 -24
- data/lib/evertils/types/monthly.rb +0 -58
- data/lib/evertils/types/priority-queue.rb +0 -55
- data/lib/evertils/types/weekly.rb +0 -66
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04b57db19e88587c1b226d8b457f2366be8abaa9d9ac11167d08c704d828a008
|
4
|
+
data.tar.gz: 2dc9c21a462bdd8404f116bdd45a3ffd32e91e4191133e4ee0d1bc363936a721
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be6ea98ad31e762358da2188e145f987367e1c2e1e976470e1ec575c2c9ec687c639bf838a90c090a0c426dbff9a4d4783fe9b248bf75ede31bb9ef0619a183f
|
7
|
+
data.tar.gz: 3d7d6aeae4d8676cee6f5619407719ef364bc426f398c4c39fc29178106290daeea7b746c11e4a2b69cd5b3797c973f0a2b9fa3e241efc7f02b9402ba805de2f
|
data/README.md
CHANGED
@@ -17,9 +17,7 @@ See [this document](https://github.com/aapis/evertils/wiki/Logging-Specification
|
|
17
17
|
|Command|Description|Usage|
|
18
18
|
|:--------------|:-----------|:-------------|
|
19
19
|
|generate|Create notes from templates|`evertils generate daily`, `evertils generate morning`, `evertils generate monthly`|
|
20
|
-
|
|
21
|
-
|get|Get data from Evernote|`evertils get notebook` (coming soon)|
|
22
|
-
|convert|Convert your notes to Markdown, then back to ENML|(coming soon)|
|
20
|
+
|log|Write a line to a note|`evertils log message "I am a message"`|
|
23
21
|
|
24
22
|
## Automation
|
25
23
|
|
data/evertils.gemspec
CHANGED
@@ -17,11 +17,11 @@ 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 'notifaction'
|
21
|
-
s.add_runtime_dependency 'mime-types'
|
20
|
+
s.add_runtime_dependency 'notifaction', '~> 0.4.4'
|
21
|
+
s.add_runtime_dependency 'mime-types', '~> 3.3.1'
|
22
22
|
s.add_runtime_dependency 'evertils-common', '~> 0.3.7'
|
23
23
|
s.add_runtime_dependency 'nokogiri'
|
24
24
|
|
25
25
|
s.add_development_dependency "bundler", "~> 1.10"
|
26
|
-
s.add_development_dependency "rake", "~>
|
26
|
+
s.add_development_dependency "rake", "~> 12.3.3"
|
27
27
|
end
|
data/lib/evertils/action.rb
CHANGED
@@ -5,8 +5,8 @@ module Evertils
|
|
5
5
|
class Base
|
6
6
|
def initialize(args)
|
7
7
|
@args = args
|
8
|
-
@note_helper = Evertils::Helper.
|
9
|
-
@api = Evertils::Helper.
|
8
|
+
@note_helper = Evertils::Helper::Note.instance
|
9
|
+
@api = Evertils::Helper::ApiEnmlHandler.new
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
data/lib/evertils/base.rb
CHANGED
data/lib/evertils/config.rb
CHANGED
@@ -47,9 +47,7 @@ module Evertils
|
|
47
47
|
# Populates the internal hash which stores any values set in the config file
|
48
48
|
def populate_config
|
49
49
|
file = File.expand_path("~/.evertils/config.yml")
|
50
|
-
|
51
|
-
|
52
|
-
@yml = fmt.symbolize(::YAML.load_file(file))
|
50
|
+
@yml = symbolize_keys(::YAML.load_file(file))
|
53
51
|
|
54
52
|
set_evertils_token
|
55
53
|
|
data/lib/evertils/controller.rb
CHANGED
@@ -4,8 +4,8 @@ module Evertils
|
|
4
4
|
def pre_exec
|
5
5
|
super
|
6
6
|
|
7
|
-
@note_helper = Evertils::Helper.
|
8
|
-
@api_helper = Evertils::Helper.
|
7
|
+
@note_helper = Evertils::Helper::Note.instance
|
8
|
+
@api_helper = Evertils::Helper::ApiEnmlHandler.new(@config)
|
9
9
|
end
|
10
10
|
|
11
11
|
# Send arbitrary text to the daily log
|
@@ -14,8 +14,9 @@ module Evertils
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def note_exists?
|
17
|
-
helper = Evertils::Helper.
|
18
|
-
note = helper.
|
17
|
+
helper = Evertils::Helper::Note.instance
|
18
|
+
note = helper.wait_for_with_grammar(grammar)
|
19
|
+
|
19
20
|
@link = helper.external_url_for(note.entity) unless note.entity.nil?
|
20
21
|
|
21
22
|
note.exists?
|
@@ -24,7 +25,7 @@ module Evertils
|
|
24
25
|
def execute_action(action)
|
25
26
|
case action
|
26
27
|
when nil
|
27
|
-
Notify.info 'Action not provided,
|
28
|
+
Notify.info 'Action not provided, creating new note...'
|
28
29
|
Action::Create.new(@allowed_fields)
|
29
30
|
when 'create'
|
30
31
|
Action::Create.new(@allowed_fields)
|
@@ -47,6 +48,17 @@ module Evertils
|
|
47
48
|
:tags
|
48
49
|
)
|
49
50
|
end
|
51
|
+
|
52
|
+
def grammar
|
53
|
+
terms = Grammar.new
|
54
|
+
terms.notebook = @allowed_fields[:notebook]
|
55
|
+
terms.tags = {
|
56
|
+
day: Date.today.yday,
|
57
|
+
week: Date.today.cweek
|
58
|
+
}
|
59
|
+
terms.created = Date.new(Date.today.year, 1, 1).strftime('%Y%m%d')
|
60
|
+
terms
|
61
|
+
end
|
50
62
|
end
|
51
63
|
end
|
52
64
|
end
|
File without changes
|
File without changes
|
File without changes
|
data/lib/evertils/grammar.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Evertils
|
4
4
|
class Grammar
|
5
|
-
attr_accessor :tags, :notebook, :created
|
5
|
+
attr_accessor :tags, :notebook, :created, :intitle
|
6
6
|
|
7
7
|
# Available grammars
|
8
8
|
# https://dev.evernote.com/doc/articles/search_grammar.php
|
@@ -11,6 +11,7 @@ module Evertils
|
|
11
11
|
@tags = []
|
12
12
|
@grammar = []
|
13
13
|
@notebook = nil
|
14
|
+
@intitle = nil
|
14
15
|
@created = Date.today.strftime('%Y%m%d')
|
15
16
|
end
|
16
17
|
|
@@ -42,7 +43,8 @@ module Evertils
|
|
42
43
|
grammars_used.reject! { |k, _| k.to_s.end_with?('=') || k == :tags }
|
43
44
|
|
44
45
|
grammars_used.each do |grammar|
|
45
|
-
|
46
|
+
value = send(grammar)
|
47
|
+
@grammar.push("#{grammar}:#{value}") unless value.nil?
|
46
48
|
end
|
47
49
|
end
|
48
50
|
end
|
@@ -3,42 +3,8 @@
|
|
3
3
|
module Evertils
|
4
4
|
module Helper
|
5
5
|
class Formatting
|
6
|
-
# Legacy notes will have single/double character denotations for day of
|
7
|
-
# week, this maps them.
|
8
|
-
def day_of_week(arg_date = Date.today.strftime('%a'))
|
9
|
-
case arg_date
|
10
|
-
when 'Mon'
|
11
|
-
:M
|
12
|
-
when 'Tue'
|
13
|
-
:Tu
|
14
|
-
when 'Wed'
|
15
|
-
:W
|
16
|
-
when 'Thu'
|
17
|
-
:Th
|
18
|
-
when 'Fri'
|
19
|
-
:F
|
20
|
-
when 'Sat'
|
21
|
-
:Sa
|
22
|
-
when 'Sun'
|
23
|
-
:Su
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
# Template file for note body
|
28
|
-
def template_contents(type = nil)
|
29
|
-
begin
|
30
|
-
raise ArgumentError, "Type is required" if type.nil?
|
31
|
-
|
32
|
-
IO.readlines(load_template(type), :encoding => 'UTF-8').join("").delete!("\n")
|
33
|
-
rescue Errno::ENOENT => e
|
34
|
-
Notify.error("#{e}\n#{e.backtrace.join("\n")}", show_time: false)
|
35
|
-
rescue ArgumentError => e
|
36
|
-
Notify.error("#{e}\n#{e.backtrace.join("\n")}", show_time: false)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
6
|
# Template string for note title
|
41
|
-
def date_templates
|
7
|
+
def self.date_templates
|
42
8
|
current_date = Date.today
|
43
9
|
week_stub = current_date.strftime('%a')
|
44
10
|
start_of_week = Date.commercial(current_date.year, current_date.cweek, 1)
|
@@ -52,47 +18,6 @@ module Evertils
|
|
52
18
|
:'Priority Queue' => "Queue For [#{current_date.strftime('%B %-d')} - #{week_stub}]"
|
53
19
|
}
|
54
20
|
end
|
55
|
-
|
56
|
-
# Recursively symbolize keys in a hash
|
57
|
-
# Params:
|
58
|
-
# +h+:: The hash you want to symbolize
|
59
|
-
def symbolize(h)
|
60
|
-
case h
|
61
|
-
when Hash
|
62
|
-
Hash[
|
63
|
-
h.map do |k, v|
|
64
|
-
[k.respond_to?(:to_sym) ? k.to_sym : k, symbolize(v)]
|
65
|
-
end
|
66
|
-
]
|
67
|
-
when Enumerable
|
68
|
-
h.map { |v| symbolize(v) }
|
69
|
-
else
|
70
|
-
h
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
private
|
75
|
-
|
76
|
-
#
|
77
|
-
# @since 0.3.1
|
78
|
-
def load_template(type)
|
79
|
-
file_name = type.to_s.downcase.gsub(/\s/, '-')
|
80
|
-
installed_dir = Gem::Specification.find_by_name('evertils').gem_dir
|
81
|
-
local_installed_dir = "#{Dir.home}/.evertils/templates/"
|
82
|
-
template_file = "#{installed_dir}/lib/evertils/configs/templates/#{file_name}.enml"
|
83
|
-
|
84
|
-
if Dir.exist? local_installed_dir
|
85
|
-
template_file = "#{local_installed_dir}#{file_name}.enml"
|
86
|
-
|
87
|
-
# local config dir exists but the requested template does not, use
|
88
|
-
# the default template for this type
|
89
|
-
unless File.exist? template_file
|
90
|
-
template_file = "#{installed_dir}/lib/evertils/configs/templates/#{file_name}.enml"
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
template_file
|
95
|
-
end
|
96
21
|
end
|
97
22
|
end
|
98
23
|
end
|
@@ -1,17 +1,21 @@
|
|
1
1
|
module Evertils
|
2
2
|
module Helper
|
3
3
|
class Note
|
4
|
+
include Singleton
|
5
|
+
|
4
6
|
attr_reader :model
|
5
7
|
|
6
8
|
# Create the Note object
|
7
9
|
def initialize
|
8
10
|
@model = Evertils::Common::Query::Simple.new
|
9
|
-
@format =
|
11
|
+
@format = Formatting.new
|
10
12
|
@user = @model.user_info[:user]
|
11
13
|
@shard = @model.user_info[:shard]
|
12
14
|
end
|
13
15
|
|
14
|
-
|
16
|
+
#
|
17
|
+
# @since 1.0.12
|
18
|
+
def wait_for_with_grammar(grammar, iterations = Evertils::Base::MAX_SEARCH_SIZE)
|
15
19
|
Notify.info("Searching with grammar #{grammar}")
|
16
20
|
note = find_note_by_grammar(grammar.to_s)
|
17
21
|
|
@@ -22,7 +26,7 @@ module Evertils
|
|
22
26
|
Notify.info(" (#{iter}) Looking for #{grammar}")
|
23
27
|
note = find_note_by_grammar(grammar.to_s, true)
|
24
28
|
|
25
|
-
break unless note.entity.nil? || iter == Evertils::
|
29
|
+
break unless note.entity.nil? || iter == Evertils::Base::MAX_SEARCH_SIZE
|
26
30
|
end
|
27
31
|
end
|
28
32
|
rescue Interrupt
|
@@ -33,7 +37,7 @@ module Evertils
|
|
33
37
|
end
|
34
38
|
|
35
39
|
# Wait for a note to exist
|
36
|
-
def wait_for_by_notebook(notebook, iterations = Evertils::
|
40
|
+
def wait_for_by_notebook(notebook, iterations = Evertils::Base::MAX_SEARCH_SIZE)
|
37
41
|
Notify.info("Waiting for #{notebook}...")
|
38
42
|
note = find_note_by_notebook(notebook)
|
39
43
|
|
@@ -43,7 +47,7 @@ module Evertils
|
|
43
47
|
(1..iterations).each do |iter|
|
44
48
|
Notify.info(" (#{iter}) Looking for #{notebook.downcase}")
|
45
49
|
note = find_note_by_notebook(notebook, true)
|
46
|
-
break unless note.entity.nil? || iter == Evertils::
|
50
|
+
break unless note.entity.nil? || iter == Evertils::Base::MAX_SEARCH_SIZE
|
47
51
|
end
|
48
52
|
end
|
49
53
|
rescue Interrupt
|
@@ -54,7 +58,7 @@ module Evertils
|
|
54
58
|
end
|
55
59
|
|
56
60
|
# Wait for a note to exist
|
57
|
-
def wait_for_by_title(title, notebook, iterations = Evertils::
|
61
|
+
def wait_for_by_title(title, notebook, iterations = Evertils::Base::MAX_SEARCH_SIZE)
|
58
62
|
Notify.info("Waiting for #{title}...")
|
59
63
|
note = find_note_by_title(title)
|
60
64
|
|
@@ -64,7 +68,7 @@ module Evertils
|
|
64
68
|
(1..iterations).each do |iter|
|
65
69
|
Notify.info(" (#{iter}) Looking for #{notebook.downcase}")
|
66
70
|
note = find_note_by_title(notebook, true)
|
67
|
-
break unless note.entity.nil? || iter == Evertils::
|
71
|
+
break unless note.entity.nil? || iter == Evertils::Base::MAX_SEARCH_SIZE
|
68
72
|
end
|
69
73
|
end
|
70
74
|
rescue Interrupt
|
@@ -83,7 +87,7 @@ module Evertils
|
|
83
87
|
# Find a note by notebook
|
84
88
|
def find_note_by_notebook(notebook, sleep = false)
|
85
89
|
sleep(5) if sleep
|
86
|
-
title =
|
90
|
+
title = Formatting.date_templates[notebook]
|
87
91
|
|
88
92
|
@model.find_note_contents(title)
|
89
93
|
end
|
data/lib/evertils/router.rb
CHANGED
@@ -12,12 +12,9 @@ module Evertils
|
|
12
12
|
@request = Request.new
|
13
13
|
|
14
14
|
begin
|
15
|
-
|
16
|
-
require "evertils/controllers/#{@request.controller}"
|
17
|
-
# include helpers
|
18
|
-
require "evertils/helpers/#{@request.controller}" if File.exist? "evertils/helpers/#{@request.controller}"
|
15
|
+
update_config if uses_local_configuration?
|
19
16
|
|
20
|
-
|
17
|
+
require "evertils/controllers/#{@request.controller}" unless uses_local_configuration?
|
21
18
|
|
22
19
|
# perform all required checks
|
23
20
|
must_pass = Helper::Results.new
|
@@ -45,7 +42,6 @@ module Evertils
|
|
45
42
|
begin
|
46
43
|
unless @request.controller.nil?
|
47
44
|
controller = Evertils::Controller.const_get @request.controller.capitalize
|
48
|
-
controller = Evertils::Controller::Render if @config.exist?(:path)
|
49
45
|
|
50
46
|
# create an instance of the requested controller
|
51
47
|
context = controller.new(@config, @request)
|
@@ -70,7 +66,7 @@ module Evertils
|
|
70
66
|
end
|
71
67
|
end
|
72
68
|
|
73
|
-
def
|
69
|
+
def uses_local_configuration?
|
74
70
|
@config_file_path = File.expand_path("~/.evertils/templates/type/#{@request.command}.yml")
|
75
71
|
File.exist? @config_file_path
|
76
72
|
end
|
data/lib/evertils/version.rb
CHANGED
data/lib/evertils.rb
CHANGED
@@ -20,23 +20,20 @@ require 'nokogiri'
|
|
20
20
|
require 'evertils/kernel'
|
21
21
|
require 'evertils/version'
|
22
22
|
require 'evertils/base'
|
23
|
-
require 'evertils/type'
|
24
23
|
require 'evertils/action'
|
25
24
|
require 'evertils/actions/default'
|
26
25
|
require 'evertils/actions/create'
|
27
26
|
require 'evertils/actions/duplicate_previous'
|
28
|
-
require 'evertils/helpers/time'
|
29
27
|
require 'evertils/helpers/results'
|
30
28
|
require 'evertils/helpers/api-enml-handler'
|
31
|
-
require 'evertils/gpg_exception'
|
32
|
-
require 'evertils/yubikey_exception'
|
33
|
-
require 'evertils/required_check_exception'
|
29
|
+
require 'evertils/exceptions/gpg_exception'
|
30
|
+
require 'evertils/exceptions/yubikey_exception'
|
31
|
+
require 'evertils/exceptions/required_check_exception'
|
34
32
|
require 'evertils/config'
|
35
33
|
require 'evertils/request'
|
36
34
|
require 'evertils/controller'
|
37
35
|
require 'evertils/controllers/render'
|
38
36
|
require 'evertils/router'
|
39
|
-
require 'evertils/helper'
|
40
37
|
require 'evertils/helpers/formatting'
|
41
38
|
require 'evertils/helpers/evernote-enml'
|
42
39
|
require 'evertils/helpers/note'
|
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:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Priebe
|
@@ -14,30 +14,30 @@ dependencies:
|
|
14
14
|
name: notifaction
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.4.4
|
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: 0.4.4
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: mime-types
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 3.3.1
|
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: 3.3.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: evertils-common
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 12.3.3
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 12.3.3
|
97
97
|
description: Evernote utilities for your CLI workflow
|
98
98
|
email: hello@ryanpriebe.com
|
99
99
|
executables:
|
@@ -116,44 +116,27 @@ files:
|
|
116
116
|
- lib/evertils/actions/duplicate_previous.rb
|
117
117
|
- lib/evertils/base.rb
|
118
118
|
- lib/evertils/config.rb
|
119
|
-
- lib/evertils/configs/templates/daily.enml
|
120
|
-
- lib/evertils/configs/templates/monthly-task-summaries.enml
|
121
|
-
- lib/evertils/configs/templates/monthly.enml
|
122
|
-
- lib/evertils/configs/templates/pq.enml
|
123
|
-
- lib/evertils/configs/templates/weekly.enml
|
124
119
|
- lib/evertils/controller.rb
|
125
120
|
- lib/evertils/controllers/change.rb
|
126
|
-
- lib/evertils/controllers/convert.rb
|
127
121
|
- lib/evertils/controllers/firstrun.rb
|
128
|
-
- lib/evertils/controllers/generate.rb
|
129
|
-
- lib/evertils/controllers/get.rb
|
130
122
|
- lib/evertils/controllers/log.rb
|
131
|
-
- lib/evertils/controllers/new.rb
|
132
123
|
- lib/evertils/controllers/render.rb
|
133
|
-
- lib/evertils/gpg_exception.rb
|
124
|
+
- lib/evertils/exceptions/gpg_exception.rb
|
125
|
+
- lib/evertils/exceptions/required_check_exception.rb
|
126
|
+
- lib/evertils/exceptions/yubikey_exception.rb
|
134
127
|
- lib/evertils/grammar.rb
|
135
|
-
- lib/evertils/helper.rb
|
136
128
|
- lib/evertils/helpers/api-enml-handler.rb
|
137
129
|
- lib/evertils/helpers/evernote-enml.rb
|
138
130
|
- lib/evertils/helpers/evernote-markdown.rb
|
139
131
|
- lib/evertils/helpers/formatting.rb
|
140
132
|
- lib/evertils/helpers/note.rb
|
141
133
|
- lib/evertils/helpers/results.rb
|
142
|
-
- lib/evertils/helpers/time.rb
|
143
134
|
- lib/evertils/helpers/xml.rb
|
144
135
|
- lib/evertils/kernel.rb
|
145
136
|
- lib/evertils/request.rb
|
146
|
-
- lib/evertils/required_check_exception.rb
|
147
137
|
- lib/evertils/router.rb
|
148
|
-
- lib/evertils/type.rb
|
149
|
-
- lib/evertils/types/daily.rb
|
150
|
-
- lib/evertils/types/monthly-task-summary.rb
|
151
|
-
- lib/evertils/types/monthly.rb
|
152
|
-
- lib/evertils/types/priority-queue.rb
|
153
|
-
- lib/evertils/types/weekly.rb
|
154
138
|
- lib/evertils/vendor/enml.dtd
|
155
139
|
- lib/evertils/version.rb
|
156
|
-
- lib/evertils/yubikey_exception.rb
|
157
140
|
homepage: http://rubygems.org/gems/evertils
|
158
141
|
licenses:
|
159
142
|
- MIT
|
@@ -1,14 +0,0 @@
|
|
1
|
-
<div><span style="font-size: 18px;">Logs</span></div>
|
2
|
-
<ul>
|
3
|
-
<li>...</li>
|
4
|
-
</ul>
|
5
|
-
<br />
|
6
|
-
<div><span style="font-size: 18px;">Tasks completed</span></div>
|
7
|
-
<ul>
|
8
|
-
<li>...</li>
|
9
|
-
</ul>
|
10
|
-
<br />
|
11
|
-
<div><span style="font-size: 18px;">EOD</span></div>
|
12
|
-
<ul>
|
13
|
-
<li><en-todo checked="false"/>Timecard is up to date</li>
|
14
|
-
</ul>
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module Evertils
|
2
|
-
module Controller
|
3
|
-
class Convert < Controller::Base
|
4
|
-
attr_accessor :title, :file, :notebook
|
5
|
-
|
6
|
-
def pre_exec
|
7
|
-
# command flag parser
|
8
|
-
OptionParser.new do |opt|
|
9
|
-
opt.banner = "#{Evertils::PACKAGE_NAME} new note [...-flags]"
|
10
|
-
|
11
|
-
opt.on("-m", "--to-markdown", "Convert to MD format") do |b|
|
12
|
-
@markdown = b
|
13
|
-
end
|
14
|
-
|
15
|
-
opt.on("-e", "--to-enml", "Convert to ENML") do |b|
|
16
|
-
@file = b
|
17
|
-
end
|
18
|
-
|
19
|
-
opt.on("-n", "--notebook=PBOOK", "Attach a file to your custom note") do |notebook|
|
20
|
-
@notebook = notebook.capitalize
|
21
|
-
end
|
22
|
-
end.parse!
|
23
|
-
|
24
|
-
super
|
25
|
-
end
|
26
|
-
|
27
|
-
def notes_in
|
28
|
-
unless @notebook
|
29
|
-
Notify.error("Notebook (--notebook=) is a required argument")
|
30
|
-
end
|
31
|
-
|
32
|
-
metadata = @model.notes_by_notebook(@notebook)
|
33
|
-
|
34
|
-
if metadata.is_a? Hash
|
35
|
-
Notify.info("#{metadata.size} notes in #{@notebook}")
|
36
|
-
Notify.info("Printing list of notes")
|
37
|
-
|
38
|
-
metadata.each_pair do |note_guid, note_content|
|
39
|
-
# convert it here!
|
40
|
-
Notify.spit(note_content)
|
41
|
-
end
|
42
|
-
else
|
43
|
-
Notify.error("Could not pull data for notebook #{@notebook}")
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require_relative '../types/priority-queue'
|
2
|
-
require_relative '../types/monthly-task-summary'
|
3
|
-
require_relative '../types/daily'
|
4
|
-
require_relative '../types/weekly'
|
5
|
-
require_relative '../types/monthly'
|
6
|
-
|
7
|
-
module Evertils
|
8
|
-
module Controller
|
9
|
-
class Generate < Controller::Base
|
10
|
-
# generate daily notes
|
11
|
-
def daily
|
12
|
-
note = Type::Daily.new(@config)
|
13
|
-
note.create if note.should_create?
|
14
|
-
end
|
15
|
-
|
16
|
-
# generate weekly notes
|
17
|
-
def weekly
|
18
|
-
note = Type::Weekly.new(@config)
|
19
|
-
note.create if note.should_create?
|
20
|
-
note.add_daily_note_link
|
21
|
-
end
|
22
|
-
|
23
|
-
# generate monthly notes
|
24
|
-
def monthly
|
25
|
-
note = Type::Monthly.new(@config)
|
26
|
-
note.create if note.should_create?
|
27
|
-
note.add_weekly_note_link
|
28
|
-
end
|
29
|
-
|
30
|
-
# generate monthly task summary templates
|
31
|
-
def mts(arg)
|
32
|
-
Notify.error('Name argument is required', {}) if arg.nil?
|
33
|
-
|
34
|
-
note = Type::MonthlyTaskSummary.new(@config, arg[1])
|
35
|
-
note.create if note.should_create?
|
36
|
-
end
|
37
|
-
|
38
|
-
# generate priority queue notes
|
39
|
-
def pq
|
40
|
-
note = Type::PriorityQueue.new(@config)
|
41
|
-
note.create if note.should_create?
|
42
|
-
end
|
43
|
-
|
44
|
-
# creates the notes required to start the day
|
45
|
-
# - priority queue
|
46
|
-
# - daily
|
47
|
-
# - weekly (if today is Monday and there isn't a weekly log already)
|
48
|
-
# - monthly (if today is the 1st and there isn't a monthly log already)
|
49
|
-
def morning
|
50
|
-
pq
|
51
|
-
daily
|
52
|
-
weekly
|
53
|
-
monthly
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
module Evertils
|
2
|
-
module Controller
|
3
|
-
class Get < Controller::Base
|
4
|
-
attr_accessor :title, :file, :notebook
|
5
|
-
|
6
|
-
def pre_exec
|
7
|
-
# command flag parser
|
8
|
-
OptionParser.new do |opt|
|
9
|
-
opt.banner = "evertils new note [...-flags]"
|
10
|
-
|
11
|
-
opt.on("-t", "--title=TITLE", "Set a custom title") do |title|
|
12
|
-
@title = title
|
13
|
-
end
|
14
|
-
|
15
|
-
opt.on("-f", "--file=PATH", "Attach a file to your custom note") do |file|
|
16
|
-
@file = file
|
17
|
-
end
|
18
|
-
|
19
|
-
opt.on("-n", "--notebook=PBOOK", "Attach a file to your custom note") do |notebook|
|
20
|
-
@notebook = notebook
|
21
|
-
end
|
22
|
-
end.parse!
|
23
|
-
|
24
|
-
super
|
25
|
-
end
|
26
|
-
|
27
|
-
# Get data about a notebook, prints titles of each child note
|
28
|
-
def notebook
|
29
|
-
if !$request.custom.nil?
|
30
|
-
book = $request.custom[0]
|
31
|
-
metadata = @model.notes_by_notebook(book)
|
32
|
-
|
33
|
-
if metadata.is_a? ::Evernote::EDAM::NoteStore::NotesMetadataList
|
34
|
-
Notify.info("#{metadata.totalNotes} notes in #{book}")
|
35
|
-
Notify.info("Printing list of notes")
|
36
|
-
|
37
|
-
metadata.notes.each do |note|
|
38
|
-
Notify.spit note.title
|
39
|
-
end
|
40
|
-
else
|
41
|
-
Notify.error("Could not pull data for notebook #{$request.custom[0]}", {})
|
42
|
-
end
|
43
|
-
else
|
44
|
-
Notify.error("Notebook name is a required argument, i.e.\n#{Evertils::PACKAGE_NAME} get notebook agendas", {})
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def info
|
49
|
-
@config.options.each_pair do |key, value|
|
50
|
-
Notify.spit("#{key}: #{value}")
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,88 +0,0 @@
|
|
1
|
-
module Evertils
|
2
|
-
module Controller
|
3
|
-
class New < Controller::Base
|
4
|
-
attr_accessor :title, :file, :notebook
|
5
|
-
|
6
|
-
def pre_exec
|
7
|
-
# all methods require internet to make API calls
|
8
|
-
@methods_require_internet.push(:daily, :weekly, :monthly)
|
9
|
-
|
10
|
-
@title = "Evertils - Custom Note"
|
11
|
-
|
12
|
-
# command flag parser
|
13
|
-
OptionParser.new do |opt|
|
14
|
-
opt.banner = "#{Evertils::PACKAGE_NAME} new note [...-flags]"
|
15
|
-
|
16
|
-
opt.on("-t", "--title=TITLE", "Set a custom title") do |title|
|
17
|
-
@title = title
|
18
|
-
end
|
19
|
-
|
20
|
-
opt.on("-f", "--file=PATH", "Attach a file to your custom note") do |file|
|
21
|
-
@file = file
|
22
|
-
end
|
23
|
-
|
24
|
-
opt.on("-n", "--notebook=PBOOK", "Choose the notebook to add your note to") do |notebook|
|
25
|
-
@notebook = notebook
|
26
|
-
end
|
27
|
-
|
28
|
-
opt.on("-b", "--body=BODY", "Note body") do |body|
|
29
|
-
@body = body
|
30
|
-
end
|
31
|
-
|
32
|
-
opt.on("-t", "--tags=list", "Assign tags to the new note") do |tags|
|
33
|
-
@tags = tags
|
34
|
-
end
|
35
|
-
|
36
|
-
opt.on("-c", "--created_on=DATE", "Set note created date") do |created_on|
|
37
|
-
# Evernote cuts the last 3 values off of your timestamp because
|
38
|
-
# it "accurate to milliseconds", so we have to add them back or
|
39
|
-
# else the date is all messed up
|
40
|
-
parsed = Date.parse(created_on)
|
41
|
-
@created_on = (parsed.to_time.to_i.to_s + "000").to_i
|
42
|
-
end
|
43
|
-
end.parse!
|
44
|
-
|
45
|
-
super
|
46
|
-
end
|
47
|
-
|
48
|
-
# Create a new Evernote note from data or terminal output
|
49
|
-
def note
|
50
|
-
if @body.nil?
|
51
|
-
message = JSON.parse(STDIN.gets.to_s).join
|
52
|
-
message = message.gsub!("\n", '<br />')
|
53
|
-
else
|
54
|
-
message = @body
|
55
|
-
end
|
56
|
-
|
57
|
-
note = @model.create_note(title: @title, body: message, parent_notebook: @notebook, files: @file, shareable: false, created_on: @created_on)
|
58
|
-
|
59
|
-
if note[:note]
|
60
|
-
Notify.success("Note created")
|
61
|
-
else
|
62
|
-
Notify.error("Unable to create note, are you authenticated?")
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
# Create a new note and automatically share it
|
67
|
-
def share_note
|
68
|
-
if @body.nil?
|
69
|
-
message = JSON.parse(STDIN.gets).join
|
70
|
-
message = message.gsub!("\n", '<br />')
|
71
|
-
else
|
72
|
-
message = @body
|
73
|
-
end
|
74
|
-
|
75
|
-
# Prefix title to indicate it's shared status
|
76
|
-
@title = "[SHARED] #{@title}"
|
77
|
-
|
78
|
-
note = @model.create_note(title: @title, body: message, parent_notebook: @notebook, files: @file, shareable: true, created_on: @created_on)
|
79
|
-
|
80
|
-
if note[:share_url]
|
81
|
-
Notify.success("Note created and shared:\n#{note[:share_url]}")
|
82
|
-
else
|
83
|
-
Notify.error("Something dreadful happened!")
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
data/lib/evertils/helper.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
module Evertils
|
2
|
-
module Helper
|
3
|
-
def self.load(klass, *args)
|
4
|
-
begin
|
5
|
-
klass_instance = Evertils::Helper.const_get(klass)
|
6
|
-
|
7
|
-
if klass_instance
|
8
|
-
if args.empty?
|
9
|
-
klass_instance.new
|
10
|
-
else
|
11
|
-
klass_instance.new(args)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
rescue => e
|
15
|
-
Notify.error("#{e}\n#{e.backtrace.join("\n")}", show_time: false)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
module Evertils
|
2
|
-
module Helper
|
3
|
-
class Time
|
4
|
-
def self.human_readable(start, finish)
|
5
|
-
seconds = finish.to_f - start.to_f
|
6
|
-
|
7
|
-
if seconds < 60
|
8
|
-
"No time at all!"
|
9
|
-
else
|
10
|
-
minutes = (seconds / 60).round(1)
|
11
|
-
if minutes < 1
|
12
|
-
"#{minutes} minute"
|
13
|
-
else
|
14
|
-
"#{minutes} minutes"
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.formatted(time = nil)
|
20
|
-
if time.nil?
|
21
|
-
time = ::Time.now
|
22
|
-
end
|
23
|
-
|
24
|
-
time.strftime("%e/%-m/%Y @ %I:%M:%S%P")
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
data/lib/evertils/type.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
module Evertils
|
2
|
-
module Type
|
3
|
-
class Base
|
4
|
-
attr_reader :title, :content, :notebook
|
5
|
-
|
6
|
-
COLOUR = 0xffffff
|
7
|
-
MAX_SEARCH_SIZE = 11
|
8
|
-
|
9
|
-
#
|
10
|
-
# @since 0.3.7
|
11
|
-
def initialize(config, *args)
|
12
|
-
# helpers
|
13
|
-
@note_helper = Evertils::Helper.load('Note')
|
14
|
-
@format = Evertils::Helper.load('Formatting')
|
15
|
-
|
16
|
-
@config = config
|
17
|
-
@api = Evertils::Helper.load('ApiEnmlHandler', @config)
|
18
|
-
@args = args unless args.size.zero?
|
19
|
-
end
|
20
|
-
|
21
|
-
#
|
22
|
-
# @since 0.3.7
|
23
|
-
def create
|
24
|
-
data = {
|
25
|
-
title: @title,
|
26
|
-
body: @content.to_s.delete("\n"),
|
27
|
-
parent_notebook: self.class::NOTEBOOK,
|
28
|
-
tags: tags || [],
|
29
|
-
colour: self.class::COLOUR
|
30
|
-
}
|
31
|
-
|
32
|
-
raise 'Invalid title' if @title.nil?
|
33
|
-
raise 'Invalid note content' if @content.nil?
|
34
|
-
raise 'Invalid notebook' if self.class::NOTEBOOK.nil?
|
35
|
-
|
36
|
-
@note_helper.create_note(data)
|
37
|
-
end
|
38
|
-
|
39
|
-
#
|
40
|
-
# @since 0.3.7
|
41
|
-
def should_create?
|
42
|
-
@note = @note_helper.find_note(self.class::NOTEBOOK)
|
43
|
-
@entity = @note.entity
|
44
|
-
result = @entity.nil?
|
45
|
-
|
46
|
-
Notify.warning "#{self.class.name} skipped, note already exists" unless result
|
47
|
-
|
48
|
-
result
|
49
|
-
end
|
50
|
-
|
51
|
-
#
|
52
|
-
# @since 0.3.15
|
53
|
-
def morning_note?
|
54
|
-
!caller.grep(/morning/).empty?
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
data/lib/evertils/types/daily.rb
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
module Evertils
|
2
|
-
module Type
|
3
|
-
class Daily < Type::Base
|
4
|
-
NOTEBOOK = :Daily
|
5
|
-
COLOUR = 0xffe8b7
|
6
|
-
|
7
|
-
#
|
8
|
-
# @since 0.3.7
|
9
|
-
def initialize(config, *args)
|
10
|
-
super(config, *args)
|
11
|
-
|
12
|
-
@title = @format.date_templates[NOTEBOOK]
|
13
|
-
@content = @format.template_contents(NOTEBOOK)
|
14
|
-
|
15
|
-
attach_pq_note if morning_note?
|
16
|
-
end
|
17
|
-
|
18
|
-
#
|
19
|
-
# @since 0.3.9
|
20
|
-
def tags
|
21
|
-
[
|
22
|
-
"day-#{Date.today.yday}",
|
23
|
-
"week-#{Date.today.cweek}",
|
24
|
-
"month-#{Date.today.month}"
|
25
|
-
]
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
#
|
31
|
-
# TODO: refactor
|
32
|
-
# @since 0.3.13
|
33
|
-
def attach_pq_note
|
34
|
-
enml = @api.from_str(@format.template_contents(NOTEBOOK))
|
35
|
-
pq = @note_helper.wait_for_by_notebook(:'Priority Queue')
|
36
|
-
xml_conf = {
|
37
|
-
href: @note_helper.internal_url_for(pq.entity),
|
38
|
-
content: @format.date_templates[:'Priority Queue']
|
39
|
-
}
|
40
|
-
xml = Evertils::Helper.load('Xml', enml)
|
41
|
-
a = xml.create(:a, xml_conf)
|
42
|
-
|
43
|
-
enml.at('li:contains("Queue") ul li').children.first.replace(a)
|
44
|
-
|
45
|
-
# remove dtd if it is the first element
|
46
|
-
if enml.children.first.is_a?(Evertils::Helper::DTD)
|
47
|
-
enml.children.first.remove
|
48
|
-
end
|
49
|
-
|
50
|
-
@content = enml
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module Evertils
|
2
|
-
module Type
|
3
|
-
class MonthlyTaskSummary < Type::Base
|
4
|
-
NOTEBOOK = :'Monthly Task Summaries'
|
5
|
-
COLOUR = 0xffe8b7
|
6
|
-
|
7
|
-
#
|
8
|
-
# @since 0.3.7
|
9
|
-
def initialize(config, *args)
|
10
|
-
super(config, *args)
|
11
|
-
|
12
|
-
@name = @args.first
|
13
|
-
@title = "#{@name} #{DateTime.now.strftime('%m-%Y')}"
|
14
|
-
@content = @format.template_contents(NOTEBOOK)
|
15
|
-
end
|
16
|
-
|
17
|
-
#
|
18
|
-
# @since 0.3.9
|
19
|
-
def tags
|
20
|
-
["day-#{Date.today.yday}", @args.first]
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
module Evertils
|
2
|
-
module Type
|
3
|
-
class Monthly < Type::Base
|
4
|
-
NOTEBOOK = :Monthly
|
5
|
-
COLOUR = 0xffe8b7
|
6
|
-
|
7
|
-
#
|
8
|
-
# @since 0.3.7
|
9
|
-
def initialize(config, *args)
|
10
|
-
super(config, *args)
|
11
|
-
|
12
|
-
@title = @format.date_templates[NOTEBOOK]
|
13
|
-
@content = @format.template_contents(NOTEBOOK)
|
14
|
-
end
|
15
|
-
|
16
|
-
#
|
17
|
-
# @since 0.3.9
|
18
|
-
def tags
|
19
|
-
["month-#{Date.today.month}"]
|
20
|
-
end
|
21
|
-
|
22
|
-
#
|
23
|
-
# @since 0.3.15
|
24
|
-
def add_weekly_note_link
|
25
|
-
wk_entity = @note_helper.wait_for_by_notebook(:Weekly).entity
|
26
|
-
# parse the ENML note data into something we can work with
|
27
|
-
xml = @api.from_str(@entity.content)
|
28
|
-
# include the XML element builder
|
29
|
-
xml_helper = Evertils::Helper.load('Xml', xml)
|
30
|
-
# internal URL for the linked note
|
31
|
-
note_url = @note_helper.internal_url_for(wk_entity)
|
32
|
-
|
33
|
-
# don't add the note link if it is already there
|
34
|
-
unless xml.search("a[href='#{note_url}']").size.zero?
|
35
|
-
return Notify.warning('Weekly note link already exists here, exiting to avoid duplicate content')
|
36
|
-
end
|
37
|
-
|
38
|
-
a = xml_helper.a(
|
39
|
-
note_url,
|
40
|
-
@format.date_templates[:Weekly]
|
41
|
-
)
|
42
|
-
li = xml_helper.li(a)
|
43
|
-
br = xml_helper.br
|
44
|
-
|
45
|
-
xml.search('ul:first-child li').after(li)
|
46
|
-
|
47
|
-
# add a line break after the UL if one is not there yet
|
48
|
-
if xml.search('ul:first-child').first.next_element.name != 'br'
|
49
|
-
xml.search('ul:first-child').after(br)
|
50
|
-
end
|
51
|
-
|
52
|
-
@entity.content = xml.to_s
|
53
|
-
|
54
|
-
Notify.success("#{self.class.name} updated, added weekly note link") if @note.update
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
module Evertils
|
2
|
-
module Type
|
3
|
-
class PriorityQueue < Type::Base
|
4
|
-
NOTEBOOK = :'Priority Queue'
|
5
|
-
COLOUR = 0xffe8b7
|
6
|
-
|
7
|
-
#
|
8
|
-
# @since 0.3.7
|
9
|
-
def initialize(config, *args)
|
10
|
-
super(config, *args)
|
11
|
-
|
12
|
-
@title = @format.date_templates[NOTEBOOK]
|
13
|
-
@content = find_previous
|
14
|
-
end
|
15
|
-
|
16
|
-
#
|
17
|
-
# @since 0.3.9
|
18
|
-
def tags
|
19
|
-
[
|
20
|
-
"day-#{Date.today.yday}",
|
21
|
-
"week-#{Date.today.cweek}",
|
22
|
-
"month-#{Date.today.month}"
|
23
|
-
]
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
# Find a previous note
|
29
|
-
# @since 0.3.7
|
30
|
-
def find_previous
|
31
|
-
day = Date.today
|
32
|
-
note = nil
|
33
|
-
|
34
|
-
Notify.info('Searching for last PQ...')
|
35
|
-
|
36
|
-
(1..MAX_SEARCH_SIZE).each do |iter|
|
37
|
-
day -= 1
|
38
|
-
dow = @format.day_of_week(day.strftime('%a'))
|
39
|
-
|
40
|
-
# always skip weekends, even if there is a note for those days
|
41
|
-
next if %i[Sa Su].include?(dow)
|
42
|
-
|
43
|
-
note_title = "Queue For [#{day.strftime('%B %-d')} - #{dow}]"
|
44
|
-
note = @note_helper.model.find_note_contents(note_title).entity
|
45
|
-
|
46
|
-
Notify.info(" (#{iter}) #{note_title}")
|
47
|
-
|
48
|
-
break unless note.nil?
|
49
|
-
end
|
50
|
-
|
51
|
-
@api.convert_to_xml(note.content).prepare
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,66 +0,0 @@
|
|
1
|
-
module Evertils
|
2
|
-
module Type
|
3
|
-
class Weekly < Type::Base
|
4
|
-
NOTEBOOK = :Weekly
|
5
|
-
COLOUR = 0xffe8b7
|
6
|
-
|
7
|
-
#
|
8
|
-
# @since 0.3.7
|
9
|
-
def initialize(config, *args)
|
10
|
-
super(config, *args)
|
11
|
-
|
12
|
-
@title = @format.date_templates[NOTEBOOK]
|
13
|
-
@content = @format.template_contents(NOTEBOOK)
|
14
|
-
end
|
15
|
-
|
16
|
-
#
|
17
|
-
# @since 0.3.9
|
18
|
-
def tags
|
19
|
-
[
|
20
|
-
"week-#{Date.today.cweek}",
|
21
|
-
"month-#{Date.today.month}"
|
22
|
-
]
|
23
|
-
end
|
24
|
-
|
25
|
-
#
|
26
|
-
# @since 0.3.15
|
27
|
-
def add_daily_note_link
|
28
|
-
da_entity = @note_helper.wait_for_by_notebook(:Daily).entity
|
29
|
-
# parse the ENML note data into something we can work with
|
30
|
-
xml = @api.from_str(@entity.content)
|
31
|
-
# include the XML element builder
|
32
|
-
xml_helper = Evertils::Helper.load('Xml', xml)
|
33
|
-
# internal URL for the linked note
|
34
|
-
note_url = @note_helper.internal_url_for(da_entity)
|
35
|
-
|
36
|
-
# don't add the note link if it is already there
|
37
|
-
unless xml.search("a[href='#{note_url}']").size.zero?
|
38
|
-
return Notify.warning('Daily note link already exists here, exiting to avoid duplicate content')
|
39
|
-
end
|
40
|
-
|
41
|
-
a = xml_helper.a(
|
42
|
-
note_url,
|
43
|
-
@format.date_templates[:Daily]
|
44
|
-
)
|
45
|
-
li = xml_helper.li(a)
|
46
|
-
br = xml_helper.br
|
47
|
-
|
48
|
-
xml.search('en-note>div:first-child>ul li:last-child').after(li)
|
49
|
-
|
50
|
-
# add a line break after the UL if one is not there yet
|
51
|
-
if xml.search('en-note>div:first-child').first.next_element.name != 'br'
|
52
|
-
xml.search('en-note>div:first-child').after(br)
|
53
|
-
end
|
54
|
-
|
55
|
-
# remove XML processing definition if it is the second element
|
56
|
-
if xml.children[1].is_a?(Nokogiri::XML::ProcessingInstruction)
|
57
|
-
xml.children[1].remove
|
58
|
-
end
|
59
|
-
|
60
|
-
@entity.content = xml.to_s
|
61
|
-
|
62
|
-
Notify.success("#{self.class.name} updated, added daily note link") if @note.update
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|