evertils 2.0.2 → 2.1.0

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