evertils 2.2.4 → 2.3.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: 4287407ac08195fc3753b86840165a6a17e5fd76e52e8a93a72d3e46dd091ba7
4
- data.tar.gz: 4c3d9d3d8047f2b584d90bffbb370f25c391253095e88df6eeba703c579c30fe
3
+ metadata.gz: 62ca579ad54707c549144be390ed3dcfa4879477f1728fb83a93f954375967d7
4
+ data.tar.gz: ecc129eb13feff7c60fb36c2f6d85a569a742102a56a5614bf8e381bb341b8ad
5
5
  SHA512:
6
- metadata.gz: da81538d25a7b6818d834085d4f104e0f31ba10f77a5eb5eb378794cc625dfbd352a3e83f9b2de67809e15b6dc90364d1da99be35da3dbb689734e859ba22c5d
7
- data.tar.gz: a27b4b9fd3acef87ac8e5a976c03ee476115e46e439669e66a0e093b2b3f3bf0cda44d5a1f9c69cb22853292130f307715e5be5a20ecd677182f13d7c0b1c486
6
+ metadata.gz: cb35a2cc7157eac38b55373b1b6e178781e6072dab44b29233659977b609a63694c5d36470f7195a407b35fdc1ec8d661ebde4272682b3bf1f214de730d55f28
7
+ data.tar.gz: 2ac70310c34c6d7b47b1b8c03cc249b75b4940dabb6f2fda74f946a052c70ee17a62d45acf78233d24ead2a0e26161b5353a9acf99886390f674cddc40cb79c2
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
 
data/evertils.gemspec CHANGED
@@ -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
data/lib/evertils.rb CHANGED
@@ -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
@@ -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,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Evertils
2
4
  module Controller
3
5
  Formatting = Evertils::Helper::Formatting
@@ -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.0'
5
5
  end
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.2.4
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Priebe
@@ -11,47 +11,47 @@ 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