evertils 1.0.12 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|