evertils 0.2.3 → 0.2.5
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/Gemfile +1 -5
- data/Rakefile +1 -0
- data/bin/evertils +2 -1
- data/bin/setup +7 -0
- data/evertils.gemspec +12 -4
- data/lib/controller.rb +4 -11
- data/lib/controllers/generate.rb +20 -17
- data/lib/helpers/formatting.rb +52 -0
- data/lib/version.rb +1 -1
- metadata +89 -3
- data/lib/helpers/evernote.rb +0 -353
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b3bd67f9a1fb8a37c418070ef17e816de038f00
|
4
|
+
data.tar.gz: e543772add1f3d8defa64169bd9fd326d281aa2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee26651d4920cb4a166cac17c6d85b0bf1c999225a871231c29a649ff0b322f95dbfda533a7fc97425816dc5ef966c6d50055add87b9155d3b26980d6dbafd12
|
7
|
+
data.tar.gz: 6448e7f53604bd823d28a963e096d1bb1b4c58ceb47a70754f46d038e5606c4ee70103db723299646cdd6eff6cfb15c71cf0db52da9b273c763240066eb7fe1c
|
data/Gemfile
CHANGED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/evertils
CHANGED
@@ -13,6 +13,7 @@ require "cgi"
|
|
13
13
|
require "notifaction"
|
14
14
|
require 'digest/md5'
|
15
15
|
require 'mime/types'
|
16
|
+
require 'evertils/common'
|
16
17
|
|
17
18
|
# include required files
|
18
19
|
require_relative "../lib/kernel.rb"
|
@@ -29,7 +30,7 @@ require_relative "../lib/model_data.rb"
|
|
29
30
|
require_relative "../lib/controller.rb"
|
30
31
|
require_relative "../lib/router.rb"
|
31
32
|
require_relative "../lib/model.rb"
|
32
|
-
require_relative "../lib/helpers/
|
33
|
+
require_relative "../lib/helpers/formatting.rb"
|
33
34
|
require_relative "../lib/helpers/evernote-enml.rb"
|
34
35
|
require_relative "../lib/helper.rb"
|
35
36
|
|
data/bin/setup
ADDED
data/evertils.gemspec
CHANGED
@@ -1,15 +1,23 @@
|
|
1
|
-
require
|
1
|
+
require './lib/version'
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'evertils'
|
5
5
|
s.version = Evertils::VERSION
|
6
6
|
s.date = '2015-07-03'
|
7
|
-
s.summary =
|
8
|
-
s.description =
|
9
|
-
s.authors = [
|
7
|
+
s.summary = 'EN (heart) CLI'
|
8
|
+
s.description = 'Evernote utilities for your CLI workflow'
|
9
|
+
s.authors = ['Ryan Priebe']
|
10
10
|
s.email = 'hello@ryanpriebe.com'
|
11
11
|
s.files = `git ls-files`.split($\)
|
12
12
|
s.homepage = 'http://rubygems.org/gems/evertils'
|
13
13
|
s.license = 'MIT'
|
14
14
|
s.executables = 'evertils'
|
15
|
+
|
16
|
+
s.add_runtime_dependency 'evernote-thrift'
|
17
|
+
s.add_runtime_dependency 'notifaction'
|
18
|
+
s.add_runtime_dependency 'mime-types'
|
19
|
+
s.add_runtime_dependency 'evertils-common'
|
20
|
+
|
21
|
+
s.add_development_dependency "bundler", "~> 1.10"
|
22
|
+
s.add_development_dependency "rake", "~> 10.0"
|
15
23
|
end
|
data/lib/controller.rb
CHANGED
@@ -7,17 +7,10 @@ module Evertils
|
|
7
7
|
|
8
8
|
# Perform pre-run tasks
|
9
9
|
def pre_exec
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
# user = @model.user
|
15
|
-
# Notify.success("Welcome, #{user.name} (#{user.username})")
|
16
|
-
rescue ::Evernote::EDAM::Error::EDAMSystemException => e
|
17
|
-
Notify.error("Evernote.authenticate error\n#{e.message} (#{e.errorCode})")
|
18
|
-
rescue ::Evernote::EDAM::Error::EDAMUserException => e
|
19
|
-
Notify.error("Evernote.authenticate error\n#{e.parameter} (#{e.errorCode})")
|
20
|
-
end
|
10
|
+
# interface with the Evernote API so we can use it later
|
11
|
+
@model = Evertils::Common::Evernote.new
|
12
|
+
|
13
|
+
@format = Evertils::Helper.load('formatting')
|
21
14
|
|
22
15
|
OptionParser.new do |opt|
|
23
16
|
opt.banner = "#{Evertils::PACKAGE_NAME} controller command [...-flags]"
|
data/lib/controllers/generate.rb
CHANGED
@@ -3,8 +3,14 @@ module Evertils
|
|
3
3
|
class Generate < Controller::Base
|
4
4
|
attr_accessor :force, :start
|
5
5
|
|
6
|
+
# required user-created notebooks
|
7
|
+
NOTEBOOK_DAILY = :Daily
|
8
|
+
NOTEBOOK_WEEKLY = :Weekly
|
9
|
+
NOTEBOOK_MONTHLY = :Monthly
|
10
|
+
NOTEBOOK_DEPLOYMENT = :Deployments
|
11
|
+
|
6
12
|
def pre_exec
|
7
|
-
@methods_require_internet.push(:daily, :weekly, :monthly
|
13
|
+
@methods_require_internet.push(:daily, :weekly, :monthly)
|
8
14
|
|
9
15
|
OptionParser.new do |opt|
|
10
16
|
opt.banner = "#{Evertils::PACKAGE_NAME} generate timeframe [...-flags]"
|
@@ -21,20 +27,6 @@ module Evertils
|
|
21
27
|
super
|
22
28
|
end
|
23
29
|
|
24
|
-
def deployment
|
25
|
-
if STDIN.tty?
|
26
|
-
Notify.error("This command relies on piped data to generate note data")
|
27
|
-
end
|
28
|
-
|
29
|
-
if !@force
|
30
|
-
if @model.note_exists(@start)
|
31
|
-
Notify.error("There's already a log for today!")
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
@model.create_deployment_note(@start)
|
36
|
-
end
|
37
|
-
|
38
30
|
# generate daily notes
|
39
31
|
def daily
|
40
32
|
if !@force
|
@@ -43,7 +35,11 @@ module Evertils
|
|
43
35
|
end
|
44
36
|
end
|
45
37
|
|
46
|
-
@
|
38
|
+
title = @format.date_templates[NOTEBOOK_DAILY]
|
39
|
+
body = @format.template_contents
|
40
|
+
parent_notebook = NOTEBOOK_DAILY
|
41
|
+
|
42
|
+
@model.create_note(title, body, parent_notebook)
|
47
43
|
end
|
48
44
|
|
49
45
|
# generate weekly notes
|
@@ -53,12 +49,15 @@ module Evertils
|
|
53
49
|
Notify.error("There's already a log for this week!")
|
54
50
|
end
|
55
51
|
|
56
|
-
|
57
52
|
if !Date.today.monday?
|
58
53
|
Notify.error("Sorry, you can only create new weekly logs on Mondays")
|
59
54
|
end
|
60
55
|
end
|
61
56
|
|
57
|
+
title = @format.date_templates[NOTEBOOK_WEEKLY]
|
58
|
+
body = @format.template_contents
|
59
|
+
parent_notebook = NOTEBOOK_WEEKLY
|
60
|
+
|
62
61
|
@model.create_note
|
63
62
|
end
|
64
63
|
|
@@ -70,6 +69,10 @@ module Evertils
|
|
70
69
|
end
|
71
70
|
end
|
72
71
|
|
72
|
+
title = @format.date_templates[NOTEBOOK_MONTHLY]
|
73
|
+
body = @format.template_contents
|
74
|
+
parent_notebook = NOTEBOOK_MONTHLY
|
75
|
+
|
73
76
|
@model.create_note
|
74
77
|
end
|
75
78
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Evertils
|
2
|
+
module Helper
|
3
|
+
class Formatting
|
4
|
+
# Legacy notes will have single/double character denotations for day of
|
5
|
+
# week, this maps them.
|
6
|
+
def day_of_week(arg_date = Date.today.strftime('%a'))
|
7
|
+
case arg_date
|
8
|
+
when 'Mon'
|
9
|
+
:M
|
10
|
+
when 'Tue'
|
11
|
+
:Tu
|
12
|
+
when 'Wed'
|
13
|
+
:W
|
14
|
+
when 'Thu'
|
15
|
+
:Th
|
16
|
+
when 'Fri'
|
17
|
+
:F
|
18
|
+
when 'Sat'
|
19
|
+
:Sa
|
20
|
+
when 'Sun'
|
21
|
+
:Su
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def template_contents
|
26
|
+
if Date.today.friday? && command == :Daily
|
27
|
+
# Friday uses a slightly different template
|
28
|
+
IO.readlines("#{Evertils::TEMPLATE_DIR}#{command}-friday.enml").join("").gsub!("\n", '')
|
29
|
+
else
|
30
|
+
IO.readlines("#{Evertils::TEMPLATE_DIR}#{command}.enml").join("").gsub!("\n", '')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def date_templates(arg_date = DateTime.now)
|
35
|
+
dow = day_of_week(arg_date.strftime('%a'))
|
36
|
+
end_of_week = arg_date + 4 # days
|
37
|
+
|
38
|
+
{
|
39
|
+
:Daily => "Daily Log [#{arg_date.strftime('%B %-d')} - #{dow}]",
|
40
|
+
:Weekly => "Weekly Log [#{arg_date.strftime('%B %-d')} - #{end_of_week.strftime('%B %-d')}]",
|
41
|
+
:Monthly => "Monthly Log [#{arg_date.strftime('%B %Y')}]",
|
42
|
+
:Deployments => "#{arg_date.strftime('%B %-d')} - #{dow}"
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
# format command as required by this model
|
47
|
+
def command
|
48
|
+
$request.command.capitalize
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/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: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Priebe
|
@@ -9,7 +9,91 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2015-07-03 00:00:00.000000000 Z
|
12
|
-
dependencies:
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: evernote-thrift
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: notifaction
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: mime-types
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: evertils-common
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.10'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.10'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '10.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '10.0'
|
13
97
|
description: Evernote utilities for your CLI workflow
|
14
98
|
email: hello@ryanpriebe.com
|
15
99
|
executables:
|
@@ -20,7 +104,9 @@ files:
|
|
20
104
|
- .gitignore
|
21
105
|
- Gemfile
|
22
106
|
- README.md
|
107
|
+
- Rakefile
|
23
108
|
- bin/evertils
|
109
|
+
- bin/setup
|
24
110
|
- evertils.gemspec
|
25
111
|
- lib/command.rb
|
26
112
|
- lib/config.rb
|
@@ -37,7 +123,7 @@ files:
|
|
37
123
|
- lib/helper.rb
|
38
124
|
- lib/helpers/evernote-enml.rb
|
39
125
|
- lib/helpers/evernote-markdown.rb
|
40
|
-
- lib/helpers/
|
126
|
+
- lib/helpers/formatting.rb
|
41
127
|
- lib/helpers/generate.rb
|
42
128
|
- lib/helpers/results.rb
|
43
129
|
- lib/helpers/time.rb
|
data/lib/helpers/evernote.rb
DELETED
@@ -1,353 +0,0 @@
|
|
1
|
-
module Evertils
|
2
|
-
module Helper
|
3
|
-
class Evernote
|
4
|
-
@@developer_token = ENV["EVERTILS_TOKEN"]
|
5
|
-
|
6
|
-
# required user-created notebooks
|
7
|
-
NOTEBOOK_DAILY = :Daily
|
8
|
-
NOTEBOOK_WEEKLY = :Weekly
|
9
|
-
NOTEBOOK_MONTHLY = :Monthly
|
10
|
-
NOTEBOOK_DEPLOYMENT = :Deployments
|
11
|
-
|
12
|
-
def initialize
|
13
|
-
authenticate
|
14
|
-
end
|
15
|
-
|
16
|
-
def authenticate
|
17
|
-
if @@developer_token.nil?
|
18
|
-
Notify.error("Evernote developer token is not configured properly!\n$EVERTILS_TOKEN == nil")
|
19
|
-
end
|
20
|
-
|
21
|
-
@evernoteHost = "www.evernote.com"
|
22
|
-
userStoreUrl = "https://#{@evernoteHost}/edam/user"
|
23
|
-
|
24
|
-
userStoreTransport = Thrift::HTTPClientTransport.new(userStoreUrl)
|
25
|
-
userStoreProtocol = Thrift::BinaryProtocol.new(userStoreTransport)
|
26
|
-
@@user = ::Evernote::EDAM::UserStore::UserStore::Client.new(userStoreProtocol)
|
27
|
-
@@shardId = user.shardId
|
28
|
-
|
29
|
-
versionOK = @@user.checkVersion("evernote-data",
|
30
|
-
::Evernote::EDAM::UserStore::EDAM_VERSION_MAJOR,
|
31
|
-
::Evernote::EDAM::UserStore::EDAM_VERSION_MINOR)
|
32
|
-
|
33
|
-
@version = "#{::Evernote::EDAM::UserStore::EDAM_VERSION_MAJOR}.#{::Evernote::EDAM::UserStore::EDAM_VERSION_MINOR}"
|
34
|
-
|
35
|
-
if !versionOK
|
36
|
-
Notify.error("Evernote API requires an update. Latest version is #{@version}")
|
37
|
-
end
|
38
|
-
|
39
|
-
noteStoreUrl = @@user.getNoteStoreUrl(@@developer_token)
|
40
|
-
|
41
|
-
noteStoreTransport = Thrift::HTTPClientTransport.new(noteStoreUrl)
|
42
|
-
noteStoreProtocol = Thrift::BinaryProtocol.new(noteStoreTransport)
|
43
|
-
@@store = ::Evernote::EDAM::NoteStore::NoteStore::Client.new(noteStoreProtocol)
|
44
|
-
end
|
45
|
-
|
46
|
-
def info
|
47
|
-
{
|
48
|
-
:user => "#{user.name} (#{user.username}) - ID##{user.id}",
|
49
|
-
:shard => user.shardId,
|
50
|
-
:api_version => @version,
|
51
|
-
}
|
52
|
-
end
|
53
|
-
|
54
|
-
def notebooks
|
55
|
-
@@store.listNotebooks(@@developer_token)
|
56
|
-
end
|
57
|
-
|
58
|
-
def tags
|
59
|
-
@@store.listTags(@@developer_token)
|
60
|
-
end
|
61
|
-
|
62
|
-
def user
|
63
|
-
@@user.getUser(@@developer_token)
|
64
|
-
end
|
65
|
-
|
66
|
-
def notebook_by_name(name = command)
|
67
|
-
output = {}
|
68
|
-
notebooks.each do |notebook|
|
69
|
-
if notebook.name == name.to_s.capitalize
|
70
|
-
output = notebook
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
output
|
75
|
-
end
|
76
|
-
|
77
|
-
def notes_by_notebook(name)
|
78
|
-
output = {}
|
79
|
-
notebooks.each do |notebook|
|
80
|
-
if notebook.name.to_s == name.capitalize.to_s
|
81
|
-
filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
|
82
|
-
filter.notebookGuid = notebook.guid
|
83
|
-
|
84
|
-
result = ::Evernote::EDAM::NoteStore::NotesMetadataResultSpec.new
|
85
|
-
result.includeTitle = true
|
86
|
-
result.includeUpdated = true
|
87
|
-
result.includeTagGuids = true
|
88
|
-
|
89
|
-
#output = @@store.findNotesMetadata(@@developer_token, filter, 0, 400, result)
|
90
|
-
notes(nil, notebook.guid).notes.each do |note|
|
91
|
-
output[note.guid] = @@store.getNoteContent(@@developer_token, note.guid)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
output
|
97
|
-
end
|
98
|
-
|
99
|
-
def notebooks_by_stack(stack)
|
100
|
-
output = {}
|
101
|
-
notebooks.each do |notebook|
|
102
|
-
if notebook.stack == stack
|
103
|
-
#output[notebook.name] = []
|
104
|
-
|
105
|
-
filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
|
106
|
-
filter.notebookGuid = notebook.guid
|
107
|
-
|
108
|
-
result = ::Evernote::EDAM::NoteStore::NotesMetadataResultSpec.new
|
109
|
-
result.includeTitle = true
|
110
|
-
result.includeUpdated = true
|
111
|
-
result.includeTagGuids = true
|
112
|
-
|
113
|
-
notes = @@store.findNotesMetadata(@@developer_token, filter, 0, 400, result)
|
114
|
-
output[notebook.name] = notes
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
output
|
119
|
-
end
|
120
|
-
|
121
|
-
def find_note(title_filter = nil, notebook_filter = nil)
|
122
|
-
filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
|
123
|
-
filter.words = "intitle:#{title_filter}" if title_filter
|
124
|
-
filter.notebookGuid = notebook_filter if notebook_filter
|
125
|
-
|
126
|
-
@@store.findNotes(@@developer_token, filter, nil, 1)
|
127
|
-
end
|
128
|
-
|
129
|
-
def notes(title_filter = nil, notebook_filter = nil)
|
130
|
-
filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
|
131
|
-
filter.words = "intitle:#{title_filter}" if title_filter
|
132
|
-
filter.notebookGuid = notebook_filter if notebook_filter
|
133
|
-
|
134
|
-
@@store.findNotes(@@developer_token, filter, nil, 300)
|
135
|
-
end
|
136
|
-
|
137
|
-
def note_exists(requested_date = DateTime.now)
|
138
|
-
results = Helper::Results.new
|
139
|
-
tmpl = date_templates(requested_date)
|
140
|
-
template = tmpl[command]
|
141
|
-
note = find_note(template)
|
142
|
-
|
143
|
-
# Evernote's search matches things like the following, so we have to get
|
144
|
-
# more specific
|
145
|
-
# Daily Log [July 3 - F] == Daily Log [July 10 - F]
|
146
|
-
if note.totalNotes > 0
|
147
|
-
note.notes.each do |n|
|
148
|
-
results.add(n.title != template)
|
149
|
-
end
|
150
|
-
else
|
151
|
-
results.add(true)
|
152
|
-
end
|
153
|
-
|
154
|
-
results.should_eval_to(false)
|
155
|
-
end
|
156
|
-
|
157
|
-
def create_note(title = command.capitalize, body = template_contents, p_notebook_name = nil, file = nil, share_note = false, created_on = nil)
|
158
|
-
# final output
|
159
|
-
output = {}
|
160
|
-
|
161
|
-
tmpl = date_templates
|
162
|
-
title = tmpl[title]
|
163
|
-
|
164
|
-
# Create note object
|
165
|
-
our_note = ::Evernote::EDAM::Type::Note.new
|
166
|
-
our_note.resources = []
|
167
|
-
our_note.tagNames = []
|
168
|
-
|
169
|
-
# only join when required
|
170
|
-
if body.is_a? Array
|
171
|
-
body = body.join
|
172
|
-
end
|
173
|
-
|
174
|
-
# a file was requested, lets prepare it for storage
|
175
|
-
if !file.nil?
|
176
|
-
media_resource = EvernoteENML.new(file)
|
177
|
-
body.concat(media_resource.embeddable_element)
|
178
|
-
our_note.resources << media_resource.element
|
179
|
-
end
|
180
|
-
|
181
|
-
n_body = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
182
|
-
n_body += "<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">"
|
183
|
-
n_body += "<en-note>#{body}</en-note>"
|
184
|
-
|
185
|
-
# setup note properties
|
186
|
-
our_note.title = title
|
187
|
-
our_note.content = n_body
|
188
|
-
our_note.created = created_on if !created_on.nil?
|
189
|
-
|
190
|
-
# properly tag logs
|
191
|
-
case command
|
192
|
-
when :Weekly
|
193
|
-
our_note.tagNames << "week-#{::Time.now.strftime('%V').to_i}"
|
194
|
-
when :Monthly
|
195
|
-
our_note.tagNames << "month-#{::Time.now.strftime('%-m').to_i}"
|
196
|
-
end
|
197
|
-
|
198
|
-
if p_notebook_name.nil?
|
199
|
-
parent_notebook = notebook_by_name
|
200
|
-
else
|
201
|
-
parent_notebook = notebook_by_name(p_notebook_name)
|
202
|
-
end
|
203
|
-
|
204
|
-
## parent_notebook is optional; if omitted, default notebook is used
|
205
|
-
if parent_notebook.is_a? ::Evernote::EDAM::Type::Notebook
|
206
|
-
our_note.notebookGuid = parent_notebook.guid
|
207
|
-
end
|
208
|
-
|
209
|
-
## Attempt to create note in Evernote account
|
210
|
-
begin
|
211
|
-
output[:note] = @@store.createNote(@@developer_token, our_note)
|
212
|
-
|
213
|
-
if share_note
|
214
|
-
shareKey = @@store.shareNote(@@developer_token, output[:note].guid)
|
215
|
-
output[:share_url] = "https://#{@evernoteHost}/shard/#{@@shardId}/sh/#{output[:note].guid}/#{shareKey}"
|
216
|
-
end
|
217
|
-
rescue ::Evernote::EDAM::Error::EDAMUserException => edue
|
218
|
-
## Something was wrong with the note data
|
219
|
-
## See EDAMErrorCode enumeration for error code explanation
|
220
|
-
## http://dev.evernote.com/documentation/reference/Errors.html#Enum_EDAMErrorCode
|
221
|
-
Notify.error "EDAMUserException: #{edue}\nCode #{edue.errorCode}: #{edue.parameter}"
|
222
|
-
rescue ::Evernote::EDAM::Error::EDAMNotFoundException => ednfe
|
223
|
-
## Parent Notebook GUID doesn't correspond to an actual notebook
|
224
|
-
Notify.error "EDAMNotFoundException: Invalid parent notebook GUID"
|
225
|
-
end
|
226
|
-
|
227
|
-
# A parent notebook object exists, otherwise it was saved to the default
|
228
|
-
# notebook
|
229
|
-
if parent_notebook.is_a? ::Evernote::EDAM::Type::Notebook
|
230
|
-
Notify.success("#{parent_notebook.stack}/#{parent_notebook.name}/#{our_note.title} created")
|
231
|
-
else
|
232
|
-
Notify.success("DEFAULT_NOTEBOOK/#{our_note.title} created")
|
233
|
-
end
|
234
|
-
|
235
|
-
output
|
236
|
-
end
|
237
|
-
|
238
|
-
def create_deployment_note(requested_date)
|
239
|
-
# final output
|
240
|
-
output = {}
|
241
|
-
|
242
|
-
requested_date = DateTime.now if requested_date.nil?
|
243
|
-
|
244
|
-
# Create note object
|
245
|
-
our_note = ::Evernote::EDAM::Type::Note.new
|
246
|
-
our_note.resources = []
|
247
|
-
our_note.tagNames = []
|
248
|
-
|
249
|
-
# format output, expected format:
|
250
|
-
# PR_DESCRIPTION (https://github.com/repo/repo/pull/PR_NUM)
|
251
|
-
# - Created by GIT_USER
|
252
|
-
# - Branch: GIT_BRANCH
|
253
|
-
# - Merged by GIT_USER on 30/6/2015 @ 06:09:27pm
|
254
|
-
# - Changes: https://github.com/repo/repo/pull/PR_NUM.diff
|
255
|
-
# ============================================================
|
256
|
-
# 1 PR(s) merged from 2015-06-30 18:00:00 to 2015-07-01 17:59:59
|
257
|
-
# ============================================================
|
258
|
-
body = JSON.parse(STDIN.gets).join
|
259
|
-
body = body.gsub("\n", '<br />')
|
260
|
-
|
261
|
-
n_body = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
262
|
-
n_body += "<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">"
|
263
|
-
n_body += "<en-note>#{body}</en-note>"
|
264
|
-
|
265
|
-
# setup note properties
|
266
|
-
tmpl = date_templates(requested_date)
|
267
|
-
our_note.title = tmpl[NOTEBOOK_DEPLOYMENT]
|
268
|
-
our_note.content = n_body
|
269
|
-
|
270
|
-
parent_notebook = notebook_by_name(NOTEBOOK_DEPLOYMENT)
|
271
|
-
|
272
|
-
# parent_notebook is optional; if omitted, default notebook is used
|
273
|
-
if parent_notebook.is_a? ::Evernote::EDAM::Type::Notebook
|
274
|
-
our_note.notebookGuid = parent_notebook.guid
|
275
|
-
end
|
276
|
-
|
277
|
-
# Attempt to create note in Evernote account
|
278
|
-
begin
|
279
|
-
output[:note] = @@store.createNote(@@developer_token, our_note)
|
280
|
-
rescue ::Evernote::EDAM::Error::EDAMUserException => edue
|
281
|
-
##Something was wrong with the note data
|
282
|
-
# See EDAMErrorCode enumeration for error code explanation
|
283
|
-
# http://dev.evernote.com/documentation/reference/Errors.html#Enum_EDAMErrorCode
|
284
|
-
Notify.error "EDAMUserException: #{edue}\nCode #{edue.errorCode}: #{edue.parameter}\nExtended:\n#{edue.inspect}"
|
285
|
-
rescue ::Evernote::EDAM::Error::EDAMNotFoundException => ednfe
|
286
|
-
# Parent Notebook GUID doesn't correspond to an actual notebook
|
287
|
-
Notify.error "EDAMNotFoundException: Invalid parent notebook GUID"
|
288
|
-
end
|
289
|
-
|
290
|
-
# A parent notebook object exists, otherwise it was saved to the default
|
291
|
-
# notebook
|
292
|
-
Notify.success("#{parent_notebook.name}/#{our_note.title} created")
|
293
|
-
|
294
|
-
output
|
295
|
-
end
|
296
|
-
|
297
|
-
def generate_stats
|
298
|
-
{
|
299
|
-
"Statistic description" => 9845.3894
|
300
|
-
}
|
301
|
-
end
|
302
|
-
|
303
|
-
private
|
304
|
-
|
305
|
-
# Legacy notes will have single/double character denotations for day of
|
306
|
-
# week, this maps them.
|
307
|
-
def day_of_week(arg_date = Date.today.strftime('%a'))
|
308
|
-
case arg_date
|
309
|
-
when 'Mon'
|
310
|
-
:M
|
311
|
-
when 'Tue'
|
312
|
-
:Tu
|
313
|
-
when 'Wed'
|
314
|
-
:W
|
315
|
-
when 'Thu'
|
316
|
-
:Th
|
317
|
-
when 'Fri'
|
318
|
-
:F
|
319
|
-
when 'Sat'
|
320
|
-
:Sa
|
321
|
-
when 'Sun'
|
322
|
-
:Su
|
323
|
-
end
|
324
|
-
end
|
325
|
-
|
326
|
-
def template_contents
|
327
|
-
if Date.today.friday? && command == :Daily
|
328
|
-
# Friday uses a slightly different template
|
329
|
-
IO.readlines("#{Evertils::TEMPLATE_DIR}#{command}-friday.enml").join("").gsub!("\n", '')
|
330
|
-
else
|
331
|
-
IO.readlines("#{Evertils::TEMPLATE_DIR}#{command}.enml").join("").gsub!("\n", '')
|
332
|
-
end
|
333
|
-
end
|
334
|
-
|
335
|
-
def date_templates(arg_date = DateTime.now)
|
336
|
-
dow = day_of_week(arg_date.strftime('%a'))
|
337
|
-
end_of_week = arg_date + 4 # days
|
338
|
-
|
339
|
-
{
|
340
|
-
:Daily => "Daily Log [#{arg_date.strftime('%B %-d')} - #{dow}]",
|
341
|
-
:Weekly => "Weekly Log [#{arg_date.strftime('%B %-d')} - #{end_of_week.strftime('%B %-d')}]",
|
342
|
-
:Monthly => "Monthly Log [#{arg_date.strftime('%B %Y')}]",
|
343
|
-
:Deployments => "#{arg_date.strftime('%B %-d')} - #{dow}"
|
344
|
-
}
|
345
|
-
end
|
346
|
-
|
347
|
-
# format command as required by this model
|
348
|
-
def command
|
349
|
-
$request.command.capitalize
|
350
|
-
end
|
351
|
-
end
|
352
|
-
end
|
353
|
-
end
|