evertils 2.2.4 → 2.3.4

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: 4287407ac08195fc3753b86840165a6a17e5fd76e52e8a93a72d3e46dd091ba7
4
- data.tar.gz: 4c3d9d3d8047f2b584d90bffbb370f25c391253095e88df6eeba703c579c30fe
3
+ metadata.gz: 0524e47cfd8ebc7a6a23a96aedc8a51db105d5c8069861e5d0b93210d422436b
4
+ data.tar.gz: b7e5b4f6ae11ffc9927a6aa8400296bcd7526e33050cb6f15b01ca28d4e681e3
5
5
  SHA512:
6
- metadata.gz: da81538d25a7b6818d834085d4f104e0f31ba10f77a5eb5eb378794cc625dfbd352a3e83f9b2de67809e15b6dc90364d1da99be35da3dbb689734e859ba22c5d
7
- data.tar.gz: a27b4b9fd3acef87ac8e5a976c03ee476115e46e439669e66a0e093b2b3f3bf0cda44d5a1f9c69cb22853292130f307715e5be5a20ecd677182f13d7c0b1c486
6
+ metadata.gz: 55b1e6260cae3ac702a597ffd3525baef12025ad4a9ae9eaef1931480aa93124cf85f684fd25cf491a400d07674d42d84cdd95bbce9402f9d0aee20fabcf4a8d
7
+ data.tar.gz: f456baacfcf127453673234a562adc42f413502100723c5d2697a27cedd9ebca46dddb862e9e3af1c0d068087f51bed30b7a48d52a1f18265b1db2ed26ba1664
data/README.md CHANGED
@@ -20,6 +20,7 @@ See [this document](https://github.com/aapis/evertils/wiki/Logging-Specification
20
20
  |generate|Create notes from templates|`evertils generate daily`, `evertils generate morning`, `evertils generate monthly`|
21
21
  |log|Interact with a note's content|`evertils log message "I am a message"`, `evertils log grep 2223`, `evertils log group`|
22
22
  |change|Change the configured Evernote API token `evertils` is using|`evertils change token`|
23
+ |config|Send your configuration to a secret gist, great for portability|`evertils config push`, `evertils config pull`|
23
24
 
24
25
  ## Automation
25
26
 
@@ -17,11 +17,12 @@ 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', '~> 0.4.4'
21
- s.add_runtime_dependency 'mime-types', '~> 3.3.1'
20
+ s.add_runtime_dependency 'evertils-gist', '~> 5.1.2'
22
21
  s.add_runtime_dependency 'evertils-common', '~> 0.3.7'
22
+ s.add_runtime_dependency 'mime-types', '~> 3.3.1'
23
23
  s.add_runtime_dependency 'nokogiri', '~> 1.10.9'
24
+ s.add_runtime_dependency 'notifaction', '~> 0.4.4'
24
25
 
25
- s.add_development_dependency "bundler", "~> 1.10"
26
- s.add_development_dependency "rake", "~> 12.3.3"
26
+ s.add_development_dependency 'bundler', '~> 1.10'
27
+ s.add_development_dependency 'rake', '~> 12.3.3'
27
28
  end
@@ -14,6 +14,7 @@ require 'mime/types'
14
14
  require 'evertils/common'
15
15
  require 'yaml'
16
16
  require 'nokogiri'
17
+ require 'egist'
17
18
  # require 'open3'
18
19
 
19
20
  # include required files
@@ -26,11 +26,19 @@ module Evertils
26
26
  terms.notebook = @args[:notebook]
27
27
  terms.tags = {
28
28
  day: (Date.today.yday - 1),
29
- week: Date.today.cweek
29
+ week: week
30
30
  }
31
31
  terms.created = Date.new(Date.today.year, 1, 1).strftime('%Y%m%d')
32
32
  terms
33
33
  end
34
+
35
+ def week
36
+ this_week = Date.today.cweek
37
+
38
+ return this_week - 1 if Date.today.monday?
39
+
40
+ this_week
41
+ end
34
42
  end
35
43
  end
36
44
  end
@@ -25,8 +25,6 @@ module Evertils
25
25
  def initialize(config, request)
26
26
  @config = config
27
27
  @request = request
28
-
29
- pre_exec
30
28
  end
31
29
 
32
30
  # Perform pre-run tasks
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Evertils
2
4
  module Controller
3
5
  class Change < Controller::Base
@@ -0,0 +1,103 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yaml/store'
4
+ require 'fileutils'
5
+
6
+ module Evertils
7
+ module Controller
8
+ class Config < Controller::Base
9
+ def pre_exec
10
+ conf = contents_of('~/.evertils/config.yml')
11
+ @token = conf['gist_token'] unless conf['gist_token'].nil?
12
+ @updating = Gist.gist_exists?(@token)
13
+ # if the requested gist doesn't exist, ignore it and generate a new one
14
+ @token = nil unless @updating
15
+
16
+ Gist.login! unless has_auth_already?
17
+ end
18
+
19
+ def push
20
+ options = {
21
+ public: false
22
+ }
23
+
24
+ options.merge!(update: @token) unless @token.nil?
25
+
26
+ resp = Gist.multi_gist(payload, options)
27
+ @token = resp['id'] if resp.key?('id')
28
+
29
+ Notify.success(message(resp['html_url'])) if store_token?
30
+ end
31
+
32
+ def pull
33
+ # TODO: refactor this crap
34
+ files = Gist.download(@token)
35
+
36
+ FileUtils.mv(File.expand_path('~/.evertils'), File.expand_path('~/.evertils.old'))
37
+ FileUtils.mkdir_p(File.expand_path('~/.evertils/templates/type'))
38
+
39
+ dir = {}
40
+ t_pfx = '~/.evertils/templates/type'
41
+ c_pfx = '~/.evertils'
42
+ root_files = ['config.yml']
43
+
44
+ files.each_pair do |_, file|
45
+ dir["#{t_pfx}/#{file['filename']}"] = file['content'] unless file['filename'] == 'config.yml'
46
+ dir["#{c_pfx}/#{file['filename']}"] = file['content'] if root_files.include?(file['filename'])
47
+ end
48
+
49
+ dir.each_pair do |path, contents|
50
+ File.open(File.expand_path(path), 'w') { |f| f.write(contents) }
51
+ end
52
+ end
53
+
54
+ private
55
+
56
+ def message(url)
57
+ return "Gist updated - #{url}" if @updating
58
+
59
+ "Gist created - #{url}"
60
+ end
61
+
62
+ def payload
63
+ {
64
+ 'config.yml' => contents_of('~/.evertils/config.yml').to_yaml,
65
+ }.merge(types)
66
+ end
67
+
68
+ def contents_of(file)
69
+ YAML.load_file(File.expand_path(file))
70
+ end
71
+
72
+ def types
73
+ types = {}
74
+
75
+ Dir[File.expand_path('~/.evertils/templates/type/*.yml')].each do |dir|
76
+ types["templates/type/#{dir.split('/').last}"] = contents_of(dir).to_yaml
77
+ end
78
+
79
+ types
80
+ end
81
+
82
+ def gist_authenticate
83
+ Gist.login!
84
+ end
85
+
86
+ def has_auth_already?
87
+ File.exist?(File.expand_path('~/.gist'))
88
+ end
89
+
90
+ def store_token?
91
+ store = YAML::Store.new(File.expand_path('~/.evertils/config.yml'))
92
+ yaml = contents_of('~/.evertils/config.yml')
93
+
94
+ store.transaction do
95
+ yaml.each_pair { |key, value| store[key] = value }
96
+ store['gist_token'] = @token
97
+ end
98
+
99
+ true
100
+ end
101
+ end
102
+ end
103
+ end
@@ -1,6 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Evertils
2
4
  module Controller
5
+ # Used to format output
3
6
  Formatting = Evertils::Helper::Formatting
7
+ # Data structure for grep action options
8
+ GrepParams = Struct.new(:term, :action, :notebook)
9
+ # Data structure for group action options
10
+ GroupParams = Struct.new(:action, :notebook)
4
11
 
5
12
  class Log < Controller::Base
6
13
  WORDS_PER_LINE = 20
@@ -22,7 +29,7 @@ module Evertils
22
29
  w.join(' ')
23
30
  end
24
31
 
25
- return Notify.error('Note not found') if @note.entity.nil?
32
+ return Notify.error("Note not found for grammar '#{grammar}'") if @note.entity.nil?
26
33
 
27
34
  modify_with(text_groups)
28
35
  end
@@ -30,20 +37,16 @@ module Evertils
30
37
  #
31
38
  # @since 2.2.0
32
39
  def grep(text = nil)
33
- params = OpenStruct.new(term: text, action: 'search', notebook: 'Daily')
34
-
35
40
  runner = ActionRunner.new
36
- runner.params = params
41
+ runner.params = GrepParams.new(text, 'search', 'Daily')
37
42
  runner.execute
38
43
  end
39
44
 
40
45
  #
41
46
  # @since 2.2.0
42
47
  def group
43
- params = OpenStruct.new(action: 'group', notebook: 'Daily')
44
-
45
48
  runner = ActionRunner.new
46
- runner.params = params
49
+ runner.params = GroupParams.new('group', 'Daily')
47
50
  runner.execute
48
51
  end
49
52
 
@@ -79,9 +82,16 @@ module Evertils
79
82
  def update_note_content_with(text)
80
83
  xml = @api_helper.from_str(@note.entity.content)
81
84
  target = xml.search('en-note').first
85
+ job_id = 0
86
+ job_id = text.first.split(' -').first.to_i unless text.first.scan('-').empty?
87
+
88
+ text.map! { |l| l.gsub("#{job_id} - ", '')}
82
89
 
83
90
  text.each do |line|
84
- target.add_child("<div>* #{Formatting.current_time} - #{Formatting.clean(line)}</div>")
91
+ child = "<div>* #{Formatting.current_time} -".dup
92
+ child.concat " #{job_id} -" unless job_id.zero?
93
+ child.concat " #{Formatting.clean(line)}</div>"
94
+ target.add_child(child)
85
95
  end
86
96
 
87
97
  xml
@@ -82,18 +82,18 @@ module Evertils
82
82
  end
83
83
 
84
84
  # checks output of gpg --list-keys for the presence of a specific GPG key
85
- def verify_gpgKey
85
+ def verify_gpg_key
86
86
  # TODO: replace with Open3
87
- res = system("gpg --list-keys #{@config.get(:required, :gpgKey)} 2>/dev/null >/dev/null")
87
+ res = system("gpg --list-keys #{@config.get(:required, :gpg_key)} 2>/dev/null >/dev/null")
88
88
 
89
89
  raise GpgException unless res
90
90
  res
91
91
  end
92
92
 
93
93
  # checks output of ykman list to determine if the correct key is inserted
94
- def verify_yubikeySerial
94
+ def verify_yubikey_serial
95
95
  # TODO: replace with Open3
96
- res = system("ykman list | grep #{@config.get(:required, :yubikeySerial)} 2>/dev/null >/dev/null")
96
+ res = system("ykman list | grep #{@config.get(:required, :yubikey_serial)} 2>/dev/null >/dev/null")
97
97
 
98
98
  raise YubikeyException unless res
99
99
  res
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Evertils
4
- VERSION = '2.2.4'
4
+ VERSION = '2.3.4'
5
5
  end
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evertils
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.4
4
+ version: 2.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Priebe
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2017-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: notifaction
14
+ name: evertils-gist
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.4.4
19
+ version: 5.1.2
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: 0.4.4
26
+ version: 5.1.2
27
27
  - !ruby/object:Gem::Dependency
28
- name: mime-types
28
+ name: evertils-common
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 3.3.1
33
+ version: 0.3.7
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: 3.3.1
40
+ version: 0.3.7
41
41
  - !ruby/object:Gem::Dependency
42
- name: evertils-common
42
+ name: mime-types
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.3.7
47
+ version: 3.3.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.3.7
54
+ version: 3.3.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: nokogiri
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.10.9
69
+ - !ruby/object:Gem::Dependency
70
+ name: notifaction
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.4.4
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.4.4
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: bundler
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +136,7 @@ files:
122
136
  - lib/evertils/config.rb
123
137
  - lib/evertils/controller.rb
124
138
  - lib/evertils/controllers/change.rb
139
+ - lib/evertils/controllers/config.rb
125
140
  - lib/evertils/controllers/log.rb
126
141
  - lib/evertils/controllers/render.rb
127
142
  - lib/evertils/exceptions/gpg_exception.rb
@@ -145,7 +160,7 @@ homepage: http://rubygems.org/gems/evertils
145
160
  licenses:
146
161
  - MIT
147
162
  metadata: {}
148
- post_install_message:
163
+ post_install_message:
149
164
  rdoc_options: []
150
165
  require_paths:
151
166
  - lib
@@ -161,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
176
  version: '0'
162
177
  requirements: []
163
178
  rubygems_version: 3.0.8
164
- signing_key:
179
+ signing_key:
165
180
  specification_version: 4
166
181
  summary: EN (heart) CLI
167
182
  test_files: []