synclenote 0.0.0 → 0.1.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: f6318984ebbcbba1c14f54fac700a2ac544cb1f2f1ab4fca0acb3246e26fa1a6
4
- data.tar.gz: 74008eba2e3644861cc2bea68aa99ec40ddeed7c8747fec898bcf3d878757db6
3
+ metadata.gz: 1c352d27660c56aff8d5d3b774d1638375ebb74a422e3ed7406357b4e5a3581e
4
+ data.tar.gz: '09925a4b803b45996af5b343aee9d6d851dae75369a8d035dc3a4c3e4707ec4c'
5
5
  SHA512:
6
- metadata.gz: 138083fdf90abc8648ffc29e2c999a99978c2bc116992a7fa6f360e586d8e9ebc32ac975190d2d67591de0d49a5b85b8c971bef72777a7fc2e12f833fdc4446a
7
- data.tar.gz: 6c2af8a37616982b59f8f5c8951a94c679ab6fb5c947aa61e7385e2958c6e0736bd4a799954acdde787282a6a5c2f695438394eabc1c9b09a1969dac9c456683
6
+ metadata.gz: 10752a91ecb12fa3357153e636cb00085c9249d32dc20a3634d4742cce7d464879d0db21c45543e6aef52880fa6afcf0ef2366379edc6cdfdfc8b4a6c440a8fd
7
+ data.tar.gz: bbcd3faa70e11247052fdc3d56b35d0adf448ebff62977afdca80a2256be1fe6bbf132952dca7bdc6abe353955b7ec8a6f35c35c6752a370489a2e5ffec2b91d
@@ -0,0 +1,11 @@
1
+ version: 2
2
+
3
+ updates:
4
+ - package-ecosystem: bundler
5
+ directory: "/"
6
+ schedule:
7
+ interval: daily
8
+ time: "20:00"
9
+ timezone: Asia/Tokyo
10
+ commit-message:
11
+ prefix: chore
data/.gitignore CHANGED
@@ -19,3 +19,4 @@ tmp
19
19
  *.o
20
20
  *.a
21
21
  mkmf.log
22
+ /Gemfile.lock
@@ -6,9 +6,12 @@ require "logger"
6
6
  require "tempfile"
7
7
 
8
8
  require "thor"
9
- require "evernote_oauth"
10
9
  require "redcarpet"
11
10
 
11
+ require "evernote_oauth"
12
+ # workaround https://github.com/Evernote/evernote-sdk-ruby/pull/23
13
+ Fixnum = Integer if !defined?(Fixnum)
14
+
12
15
  class Synclenote::Command < Thor
13
16
  attr_accessor :logger
14
17
 
@@ -86,7 +89,7 @@ EOS
86
89
  logger.debug("loaded note_store.")
87
90
 
88
91
  local_top_path = Pathname(c.local.directory).expand_path
89
- last_sync_status = YAML.load_file(last_sync_path)
92
+ last_sync_status = load_yaml_path(last_sync_path)
90
93
  last_sync_datetime = last_sync_status[:last_sync_datetime]
91
94
  if Time.now - last_sync_datetime <= min_sync_interval
92
95
  allowed_sync_time = last_sync_datetime + min_sync_interval
@@ -106,7 +109,7 @@ EOS
106
109
  end
107
110
 
108
111
  # update note
109
- note_sync_status = YAML.load_file(note_sync_status_path)
112
+ note_sync_status = load_yaml_path(note_sync_status_path)
110
113
  if note_sync_status[:last_sync_datetime] < note_path.mtime
111
114
  update_remote_note(token, note_store, note_path, note_sync_status_path,
112
115
  note_sync_status[:guid])
@@ -144,6 +147,21 @@ EOS
144
147
  </en-note>
145
148
  EOS
146
149
 
150
+ TITLE_IF_EMPTY = "no title"
151
+
152
+ def load_yaml_path(path)
153
+ return YAML.safe_load(
154
+ path.read,
155
+ permitted_classes: [
156
+ Symbol,
157
+ Time,
158
+ ],
159
+ symbolize_names: true,
160
+ filename: path,
161
+ freeze: true,
162
+ )
163
+ end
164
+
147
165
  def profile_path
148
166
  return @profile_path ||= Pathname("~/.synclenote").expand_path
149
167
  end
@@ -202,6 +220,7 @@ EOS
202
220
  content = HEADER +
203
221
  html.gsub(/ class=\".*?\"/, "").gsub(/<(br|hr|img).*?>/, "\\&</\\1>") +
204
222
  FOOTER
223
+ title = TITLE_IF_EMPTY if /\A\s*\z/ === title
205
224
  o = options.merge(title: title, content: content, tagNames: tags)
206
225
  return Evernote::EDAM::Type::Note.new(o)
207
226
  end
@@ -229,7 +248,7 @@ EOS
229
248
  }.to_yaml)
230
249
  tmp_file.close
231
250
  path.parent.mkpath
232
- FileUtils.mv(tmp_file.path, path)
251
+ FileUtils.mv(tmp_file.path, path) if !Synclenote::DRY_RUN
233
252
  end
234
253
  end
235
254
 
@@ -241,7 +260,12 @@ EOS
241
260
  return
242
261
  end
243
262
  logger.debug("doing createNote: %s" % note_path)
244
- created_note = note_store.createNote(token, new_note)
263
+ created_note =
264
+ if Synclenote::DRY_RUN
265
+ Evernote::EDAM::Type::Note.new(guid: "created_note_dummy_guid")
266
+ else
267
+ note_store.createNote(token, new_note)
268
+ end
245
269
  logger.debug("done createNote.")
246
270
  create_note_sync_status_file(note_sync_status_path, created_note,
247
271
  Time.now)
@@ -257,20 +281,25 @@ EOS
257
281
  return
258
282
  end
259
283
  logger.debug("doing updateNote: %s %s" % [note_path, guid])
260
- updated_note = note_store.updateNote(token, new_note)
284
+ updated_note =
285
+ if Synclenote::DRY_RUN
286
+ Evernote::EDAM::Type::Note.new(guid: "updated_note_dummy_guid")
287
+ else
288
+ note_store.updateNote(token, new_note)
289
+ end
261
290
  logger.debug("done updateNote.")
262
291
  create_note_sync_status_file(note_sync_status_path, updated_note, Time.now)
263
292
  logger.debug("created: %s" % note_sync_status_path)
264
293
  end
265
294
 
266
295
  def remove_remote_note(token, note_store, note_sync_status_path)
267
- note_sync_status = YAML.load_file(note_sync_status_path)
296
+ note_sync_status = load_yaml_path(note_sync_status_path)
268
297
  guid = note_sync_status[:guid]
269
298
  logger.debug("doing deleteNote: %s" % guid)
270
- note_store.deleteNote(token, guid)
299
+ note_store.deleteNote(token, guid) if !Synclenote::DRY_RUN
271
300
  logger.debug("done deleteNote.")
272
301
 
273
- note_sync_status_path.delete
302
+ note_sync_status_path.delete if !Synclenote::DRY_RUN
274
303
  logger.debug("removed: %s" % note_sync_status_path)
275
304
  end
276
305
  end
@@ -1,3 +1,3 @@
1
1
  module Synclenote
2
- VERSION = "0.0.0"
2
+ VERSION = "0.1.0"
3
3
  end
data/lib/synclenote.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # This module is a namespace for this gem.
2
2
  module Synclenote
3
+ DRY_RUN = false
3
4
  autoload :VERSION, "synclenote/varsion"
4
5
 
5
6
  autoload :Command, "synclenote/command"
data/synclenote.gemspec CHANGED
@@ -1,6 +1,10 @@
1
1
  # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
2
+
3
+ require "pathname"
4
+
5
+ top_path = Pathname(__dir__).expand_path
6
+ lib_path = top_path / "lib"
7
+ $LOAD_PATH.unshift(lib_path)
4
8
  require 'synclenote/version'
5
9
 
6
10
  Gem::Specification.new do |spec|
@@ -8,20 +12,22 @@ Gem::Specification.new do |spec|
8
12
  spec.version = Synclenote::VERSION
9
13
  spec.authors = ["Yuya.Nishida."]
10
14
  spec.email = ["yuya@j96.org"]
11
- spec.summary = File.readlines(File.join(__dir__, "README.md"))
12
- .reject { |l| /\A\s*\z|\A\#/ === l }.first.chomp
15
+ spec.summary = (top_path / "README.md").each_line(chomp: true).lazy.
16
+ grep_v(/\A\s*\z|\A\#/).first
13
17
  spec.description = spec.summary
14
18
  spec.homepage = "https://github.com/nishidayuya/" + spec.name
15
19
  spec.license = "X11"
16
20
 
17
21
  spec.files = `git ls-files -z`.split("\x0")
18
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
22
+ spec.bindir = "exe"
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
24
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
25
  spec.require_paths = ["lib"]
21
26
 
22
- spec.add_runtime_dependency "thor"
23
27
  spec.add_runtime_dependency "evernote_oauth"
24
28
  spec.add_runtime_dependency "redcarpet"
29
+ spec.add_runtime_dependency "thor"
25
30
  spec.add_development_dependency "bundler"
31
+ spec.add_development_dependency "debug"
26
32
  spec.add_development_dependency "rake"
27
33
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: synclenote
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuya.Nishida.
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-25 00:00:00.000000000 Z
11
+ date: 2024-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: thor
14
+ name: evernote_oauth
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: evernote_oauth
28
+ name: redcarpet
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: redcarpet
42
+ name: thor
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: debug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rake
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -88,15 +102,15 @@ executables:
88
102
  extensions: []
89
103
  extra_rdoc_files: []
90
104
  files:
105
+ - ".github/dependabot.yml"
91
106
  - ".gitignore"
92
107
  - ".travis.yml"
93
108
  - Gemfile
94
- - Gemfile.lock
95
109
  - Guardfile
96
110
  - LICENSE.txt
97
111
  - README.md
98
112
  - Rakefile
99
- - bin/synclenote
113
+ - exe/synclenote
100
114
  - lib/synclenote.rb
101
115
  - lib/synclenote/command.rb
102
116
  - lib/synclenote/configuration.rb
@@ -121,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
135
  - !ruby/object:Gem::Version
122
136
  version: '0'
123
137
  requirements: []
124
- rubygems_version: 3.2.22
138
+ rubygems_version: 3.5.3
125
139
  signing_key:
126
140
  specification_version: 4
127
141
  summary: A synchronization tool for GFM (GitHub Flavored Markdown) files and Evernote.
data/Gemfile.lock DELETED
@@ -1,30 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- synclenote (0.0.0)
5
- evernote_oauth
6
- redcarpet
7
- thor
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- evernote-thrift (1.25.2)
13
- evernote_oauth (0.2.3)
14
- evernote-thrift
15
- oauth (>= 0.4.1)
16
- oauth (0.5.6)
17
- rake (13.0.6)
18
- redcarpet (3.5.1)
19
- thor (1.1.0)
20
-
21
- PLATFORMS
22
- x86_64-linux
23
-
24
- DEPENDENCIES
25
- bundler
26
- rake
27
- synclenote!
28
-
29
- BUNDLED WITH
30
- 2.2.23
File without changes