evertils 2.2.4 → 2.3.4

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: 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: []