evertils 2.0.2 → 2.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f61daa7a1057463617eae0fd57e4fdf99157dd5e4665ff6870ed9a2ddb6b9b7c
4
- data.tar.gz: 51a484f7c0657572b0bce55e3910e29aa46969e8d46180a0e1af8c1d3bb5e505
3
+ metadata.gz: 21365e228004a470654bca7506cdcbb1b650de3f533a9a9526378b886512feb6
4
+ data.tar.gz: 88d857222088fc6614df75c79f598fb5f478ba6a42b29bc7ab2eb4a0d1681463
5
5
  SHA512:
6
- metadata.gz: 85f6cded362a7cbff82f283c603a2eafc82727c606d4b5a9c1a19baff597f3dd8dbec50f7b6a41a1e73656c0e0a12e51c337077d9b8a3351c7dab4b58cef834f
7
- data.tar.gz: 65d3aa2ad8d01361ebc6c1791004c239bf3c35c682a835b97a6c74af792797b8e7f6993e10530bcaedacd472d398a5dcbf9b30e573f70960c867df6dd03180d6
6
+ metadata.gz: 4d51d610da5f984f3451d4ea3318f94921a05ec14b0560ecdbf8399bcb8ef1f9b1d39be2a6b724392b4cefc95cc1aeb8b2acd153039436eba964d811686af1c9
7
+ data.tar.gz: 6eb94bfa2dff49d231eae40b2fe1d70e2e006706194a2532babb3b5f8c1c1745e373d396a9c23dc1ec3b63ba2741979bab9131c4bcc6f689effa31dbff8897a2
data/README.md CHANGED
@@ -5,7 +5,8 @@ Evertils is a command line utility for interacting with your Evernote account.
5
5
  ## Installation
6
6
 
7
7
  1. `gem install evertils`
8
- 2. Add `export EVERTILS_TOKEN="token_goes_here"` to your ~/.profile
8
+ 2. `git clone git@github.com:aapis/evertils-config.git ~/.evertils`
9
+ 3. `mv ~/.evertils/config.dist.yml ~/.evertils/config.yml && nano ~/.config.yml`
9
10
 
10
11
  Get your Evernote Developer Tokens [here](https://www.evernote.com/Login.action?targetUrl=%2Fapi%2FDeveloperToken.action).
11
12
 
data/evertils.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.add_runtime_dependency 'notifaction', '~> 0.4.4'
21
21
  s.add_runtime_dependency 'mime-types', '~> 3.3.1'
22
22
  s.add_runtime_dependency 'evertils-common', '~> 0.3.7'
23
- s.add_runtime_dependency 'nokogiri'
23
+ s.add_runtime_dependency 'nokogiri', '~> 1.10.9'
24
24
 
25
25
  s.add_development_dependency "bundler", "~> 1.10"
26
26
  s.add_development_dependency "rake", "~> 12.3.3"
@@ -10,4 +10,4 @@ module Evertils
10
10
  end
11
11
  end
12
12
  end
13
- end
13
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Evertils
4
+ class ActionRunner
5
+ attr_accessor :params
6
+
7
+ def execute
8
+ case params.action
9
+ when nil
10
+ Notify.info 'Action not provided, creating new note...'
11
+ Action::Create.new(params)
12
+ when 'create'
13
+ Action::Create.new(params)
14
+ when 'create_multiple'
15
+ Action::CreateMultiple.new(params.notes)
16
+ when 'duplicate_previous'
17
+ Action::DuplicatePrevious.new(params)
18
+ else
19
+ Action::Default.new(action: action)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -6,8 +6,16 @@ module Evertils
6
6
  module Action
7
7
  class Create < Action::Base
8
8
  def initialize(args)
9
+ @args = args
9
10
  query = Evertils::Common::Query::Simple.new
10
- query.create_note_from_yml(args[:path])
11
+
12
+ query.create_note_from_hash(allowed_args)
13
+ end
14
+
15
+ private
16
+
17
+ def allowed_args
18
+ @args.to_h.reject { |key, _| key == :action }
11
19
  end
12
20
  end
13
21
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Evertils
4
+ module Action
5
+ class CreateMultiple < Action::Base
6
+ def initialize(notes)
7
+ return unless notes.is_a? Array
8
+
9
+ notes.each do |child|
10
+ Notify.info("Creating #{child['label']}")
11
+
12
+ # avoid infinite recursion
13
+ next if ['create_multiple'].include?(child['action'])
14
+
15
+ child['path'].gsub!('%EVERTILS_CONF_TYPE_PATH%', '~/.evertils/templates/type')
16
+
17
+ runner = ActionRunner.new
18
+ runner.params = Evertils::Type.new(child['path']).params
19
+ runner.execute
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -6,10 +6,10 @@ module Evertils
6
6
  def initialize(args)
7
7
  super(args)
8
8
 
9
- @args[:content] = find_previous
9
+ @args.content = find_previous
10
10
 
11
11
  query = Evertils::Common::Query::Simple.new
12
- query.create_note_from_hash(@args)
12
+ query.create_note_from_hash(@args.to_h)
13
13
  end
14
14
 
15
15
  private
@@ -47,7 +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
- @yml = symbolize_keys(::YAML.load_file(file))
50
+ @yml = Evertils::Helper::Formatting.symbolize_keys(::YAML.load_file(file))
51
51
 
52
52
  set_evertils_token
53
53
 
@@ -94,6 +94,8 @@ module Evertils
94
94
  title_format = @yml[:title].dup
95
95
 
96
96
  @yml.map do |item|
97
+ break if item.last.is_a? Hash
98
+
97
99
  REPLACEMENTS.each_pair do |k, v|
98
100
  item.last.gsub!(k.to_s, v.to_s) if item.last.is_a? String
99
101
  item.last.map { |i| i.gsub!(k.to_s, v.to_s) } if item.last.is_a? Array
@@ -102,25 +104,10 @@ module Evertils
102
104
 
103
105
  @yml[:title_format] = title_format unless @yml.key? :title_format
104
106
 
105
- symbolize_keys(@yml)
107
+ Evertils::Helper::Formatting.symbolize_keys(@yml)
106
108
  self
107
109
  end
108
110
 
109
- def symbolize_keys(hash)
110
- hash.inject({}){ |result, (key, value)|
111
- new_key = case key
112
- when String then key.to_sym
113
- else key
114
- end
115
- new_value = case value
116
- when Hash then symbolize_keys(value)
117
- else value
118
- end
119
- result[new_key] = new_value
120
- result
121
- }
122
- end
123
-
124
111
  private
125
112
 
126
113
  def set_evertils_token
@@ -4,28 +4,14 @@ module Evertils
4
4
  module Controller
5
5
  class Render < Controller::Base
6
6
  def from_file
7
- set_allowed_fields
7
+ configure_allowed_fields
8
8
 
9
- execute_action(@allowed_fields[:action])
9
+ runner = ActionRunner.new
10
+ runner.params = Evertils::Type.new(@allowed_fields[:path]).params
11
+ runner.execute
10
12
  end
11
13
 
12
- def execute_action(action)
13
- case action
14
- when nil
15
- Notify.info 'Action not provided, creating new note...'
16
- Action::Create.new(@allowed_fields)
17
- when 'create'
18
- Action::Create.new(@allowed_fields)
19
- when 'duplicate_previous'
20
- Action::DuplicatePrevious.new(@allowed_fields)
21
- else
22
- Action::Default.new(action: action)
23
- end
24
- end
25
-
26
- private
27
-
28
- def set_allowed_fields
14
+ def configure_allowed_fields
29
15
  @allowed_fields = config.translate_placeholders.pluck(
30
16
  :title,
31
17
  :title_format,
@@ -35,17 +21,6 @@ module Evertils
35
21
  :tags
36
22
  )
37
23
  end
38
-
39
- def grammar
40
- terms = Grammar.new
41
- terms.notebook = @allowed_fields[:notebook]
42
- terms.tags = {
43
- day: Date.today.yday,
44
- week: Date.today.cweek
45
- }
46
- terms.created = Date.new(Date.today.year, 1, 1).strftime('%Y%m%d')
47
- terms
48
- end
49
24
  end
50
25
  end
51
26
  end
@@ -18,6 +18,21 @@ module Evertils
18
18
  :'Priority Queue' => "Queue For [#{current_date.strftime('%B %-d')} - #{week_stub}]"
19
19
  }
20
20
  end
21
+
22
+ def self.symbolize_keys(hash)
23
+ hash.inject({}){ |result, (key, value)|
24
+ new_key = case key
25
+ when String then key.to_sym
26
+ else key
27
+ end
28
+ new_value = case value
29
+ when Hash then symbolize_keys(value)
30
+ else value
31
+ end
32
+ result[new_key] = new_value
33
+ result
34
+ }
35
+ end
21
36
  end
22
37
  end
23
38
  end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ostruct'
4
+
5
+ module Evertils
6
+ class Type
7
+ attr_reader :params
8
+
9
+ def initialize(path)
10
+ begin
11
+ type_path = File.expand_path(path)
12
+ contents = YAML.load_file(type_path)
13
+
14
+ return if contents.empty?
15
+
16
+ translate_variables(contents)
17
+
18
+ @params = OpenStruct.new(contents)
19
+ rescue Errno::ENOENT
20
+ Notify.error("File doesn't exist - #{type_path}")
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ def translate_variables(hash)
27
+ title_format = hash[:title].dup
28
+
29
+ hash.map do |item|
30
+ break if item.last.is_a? Hash
31
+
32
+ Evertils::Cfg::REPLACEMENTS.each_pair do |k, v|
33
+ item.last.gsub!(k.to_s, v.to_s) if item.last.is_a? String
34
+ item.last.map { |i| break if i.is_a? Hash; i.gsub!(k.to_s, v.to_s) } if item.last.is_a? Array
35
+ end
36
+ end
37
+
38
+ hash[:title_format] = title_format unless hash.key? :title_format
39
+
40
+ Evertils::Helper::Formatting.symbolize_keys(hash)
41
+ end
42
+ end
43
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Evertils
4
- VERSION = '2.0.2'
4
+ VERSION = '2.1.0'
5
5
  end
data/lib/evertils.rb CHANGED
@@ -20,9 +20,12 @@ require 'nokogiri'
20
20
  require 'evertils/kernel'
21
21
  require 'evertils/version'
22
22
  require 'evertils/base'
23
+ require 'evertils/type'
23
24
  require 'evertils/action'
25
+ require 'evertils/action_runner'
24
26
  require 'evertils/actions/default'
25
27
  require 'evertils/actions/create'
28
+ require 'evertils/actions/create_multiple'
26
29
  require 'evertils/actions/duplicate_previous'
27
30
  require 'evertils/helpers/results'
28
31
  require 'evertils/helpers/api-enml-handler'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evertils
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Priebe
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: nokogiri
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 1.10.9
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 1.10.9
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -111,7 +111,9 @@ files:
111
111
  - evertils.gemspec
112
112
  - lib/evertils.rb
113
113
  - lib/evertils/action.rb
114
+ - lib/evertils/action_runner.rb
114
115
  - lib/evertils/actions/create.rb
116
+ - lib/evertils/actions/create_multiple.rb
115
117
  - lib/evertils/actions/default.rb
116
118
  - lib/evertils/actions/duplicate_previous.rb
117
119
  - lib/evertils/base.rb
@@ -135,6 +137,7 @@ files:
135
137
  - lib/evertils/kernel.rb
136
138
  - lib/evertils/request.rb
137
139
  - lib/evertils/router.rb
140
+ - lib/evertils/type.rb
138
141
  - lib/evertils/vendor/enml.dtd
139
142
  - lib/evertils/version.rb
140
143
  homepage: http://rubygems.org/gems/evertils