evertils 2.2.4 → 2.3.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: 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