notenote 0.0.11 → 0.0.18

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: 5d2ca9ac9b7e3fcdabdd2220dcd873c7b89f66d7c11b45a1b8d185896a88cd31
4
- data.tar.gz: 06ee75f466f902f8410a69dbea73922ab388b1d5312e70e05659f26b317aea6d
3
+ metadata.gz: 2c1d8aaf090a602327ca4668ddf2302f8f44c0d9b8214b6b5ee5ef3e4708a4df
4
+ data.tar.gz: 430c780ce77443c2d35e59df835c700b4083ead5277cda6fd5e0a6b2835aeb5f
5
5
  SHA512:
6
- metadata.gz: bd59e18ea0114467337e2ecd78073f13cb5ab064e949d607f0a72c70c1e1143031bf046f18020acffbfca69188b2ee6720ebaa736e56494483693d716bc6e9f9
7
- data.tar.gz: bacd3fded636daea0f74957a4e8015c589e34c48b722d8a0632c9bc8022119f250c8b8c047de26e1a322edffaef4dc7085ccf1a35cd1997cf1e194195f4f371d
6
+ metadata.gz: 7d2813c76e15f4752700371fbbbc7d3d8ceb369f4591cacb541437c577f91d94df6dd43d50e8f65f7984df240bab6bafec268d41f40afaffc4aa8fc7b5dacf80
7
+ data.tar.gz: ab3916c6b9b49da5ac7861f6687eeba44528e46b523c1f965d53c58af031140ed25d8f17a8fce07905cb915a29014c74d8aa02fdc561db13927ed53ec227fb6c
data/lib/note/cli.rb CHANGED
@@ -3,15 +3,18 @@
3
3
  require "optparse"
4
4
  require "json"
5
5
  require "date"
6
+ require_relative "helpers"
6
7
 
7
8
  $LOAD_PATH << File.expand_path(__dir__)
8
9
 
9
10
  module Note
10
11
  class CLI
12
+ include Helpers
13
+
14
+ CONFIG_FILE_NAME = ".notenote"
15
+
11
16
  def run(args = [])
12
17
  if args.first == "init"
13
- require "fileutils"
14
-
15
18
  notes_folder = args[1]
16
19
 
17
20
  if notes_folder.nil?
@@ -26,13 +29,32 @@ module Note
26
29
  Dir.mkdir(notes_folder)
27
30
  end
28
31
 
32
+ vscode_config_folder = File.join(notes_folder, ".vscode")
33
+ unless Dir.exists?(vscode_config_folder)
34
+ Dir.mkdir(vscode_config_folder)
35
+ end
36
+
37
+ vscode_settings_file = File.join(vscode_config_folder, "settings.json")
38
+ if File.exist?(vscode_settings_file)
39
+ vscode_settings = JSON.parse(File.read(vscode_settings_file))
40
+
41
+ vscode_settings["markdown.editor.drop.enabled"] = false
42
+
43
+ File.open(vscode_settings_file, "w") do |f|
44
+ f.puts(JSON.pretty_generate(vscode_settings))
45
+ end
46
+ else
47
+ File.open(vscode_settings_file, "w") do |f|
48
+ f.puts(JSON.pretty_generate({ "markdown.editor.drop.enabled": false }))
49
+ end
50
+ end
51
+
29
52
  notes_folder_full_path = File.join(Dir.pwd, notes_folder)
30
53
 
31
54
  create_config_file(notes_folder: notes_folder_full_path)
32
55
  create_readme_file
33
56
  create_note_file
34
57
 
35
-
36
58
  puts %(Your note folder "#{notes_folder}" and the first log file are created. You're ready to go! 🚀)
37
59
 
38
60
  0
@@ -74,6 +96,10 @@ module Note
74
96
  elsif args.first == "push!"
75
97
  push_notes(force: true)
76
98
 
99
+ 0
100
+ elsif args.first == "version"
101
+ puts Note::VERSION
102
+
77
103
  0
78
104
  elsif args.size == 0
79
105
  notes_folder = notenote_config["notes_folder"]
@@ -90,6 +116,8 @@ module Note
90
116
  0
91
117
  else
92
118
  puts "Hm, looks like there's no such command. 🤔"
119
+
120
+ 0
93
121
  end
94
122
  end
95
123
 
@@ -110,31 +138,33 @@ module Note
110
138
  end
111
139
 
112
140
  def create_config_file(notes_folder:)
141
+ config_file = File.join(Dir.home, CONFIG_FILE_NAME)
142
+
143
+ if File.exist?(config_file)
144
+ puts "📢 You already have a config file: ~/#{CONFIG_FILE_NAME}"
145
+ return
146
+ end
147
+
113
148
  config_template = File.read(File.join(File.dirname(__FILE__), "config.json.template"))
114
149
 
115
- config = safe_tt(config_template, {
150
+ config = hash_format(config_template, {
116
151
  notes_folder: notes_folder
117
152
  })
118
153
 
119
- config_file = File.join(Dir.home, ".notenote")
120
-
121
154
  File.open(config_file, "w") do |f|
122
155
  f.puts(config)
123
156
  end
124
157
  end
125
158
 
126
- def create_note_file(note_name: "#{notenote_config["default_note_file_name"]}.md")
159
+ def create_note_file(note_name: notenote_config["default_note_file_name"])
127
160
  notes_folder = notenote_config["notes_folder"]
128
161
 
129
162
  today_folder = File.join(notes_folder, formatted_todays_date)
130
163
 
131
164
  Dir.mkdir(today_folder) unless Dir.exist?(today_folder)
132
165
 
133
- file_name = note_name.strip.downcase.
134
- gsub(/[^a-z0-9\-]+/, "_").
135
- gsub(/\A\_+/, "").
136
- gsub(/\_+\z/, "").
137
- concat(".md")
166
+ file_name = markdown_file_name(note_name: note_name)
167
+
138
168
  note_file = File.join(today_folder, file_name)
139
169
 
140
170
  if File.exist?(note_file)
@@ -142,7 +172,7 @@ module Note
142
172
  else
143
173
  File.open(note_file, "w") do |file|
144
174
  file.puts unindent <<-TEXT
145
- # #{note_name.capitalize}
175
+ # #{upcate_first(note_name)}
146
176
 
147
177
 
148
178
  TEXT
@@ -153,7 +183,7 @@ module Note
153
183
  end
154
184
 
155
185
  def notenote_config
156
- config_file = File.join(Dir.home, ".notenote")
186
+ config_file = File.join(Dir.home, CONFIG_FILE_NAME)
157
187
 
158
188
  JSON.parse(File.read(config_file))
159
189
  end
@@ -164,18 +194,6 @@ module Note
164
194
  system("#{editor_command} #{path}")
165
195
  end
166
196
 
167
- def mac?
168
- RbConfig::CONFIG["host_os"] =~ /darwin/
169
- end
170
-
171
- def osascript(script)
172
- system "osascript", *unindent(script).split(/\n/).map { |line| ['-e', line] }.flatten
173
- end
174
-
175
- def unindent(str)
176
- str.gsub(/^#{str.scan(/^[ \t]+(?=\S)/).min}/, "")
177
- end
178
-
179
197
  # This function parses the output of diffstat:
180
198
  #
181
199
  # git diff HEAD | diffstat -Cm
@@ -231,18 +249,6 @@ module Note
231
249
  system "git pull --ff-only"
232
250
  end
233
251
 
234
- # A custom string format method to avoid type
235
- # errors when using str % hash.
236
- def safe_tt(str, hash)
237
- str_copy = str
238
-
239
- hash.each do |key, value|
240
- str_copy.gsub!("%{#{key}}", value.to_s)
241
- end
242
-
243
- str_copy
244
- end
245
-
246
252
  def formatted_todays_date
247
253
  date_format = notenote_config["date_format"]
248
254
 
@@ -1,7 +1,8 @@
1
1
  {
2
+ "version": 1,
2
3
  "notes_folder": "%{notes_folder}",
3
4
  "date_format": "%d-%m-%Y",
4
- "default_note_file_name: "notes",
5
+ "default_note_file_name": "today",
5
6
  "editor_command": "code",
6
7
  "commit_message": "Added new notes"
7
8
  }
@@ -0,0 +1,59 @@
1
+ module Helpers
2
+ private
3
+
4
+ def markdown_file_name(note_name:)
5
+ note_name.strip.downcase.
6
+ gsub(/[^a-z0-9]+/, "_").
7
+ gsub(/\A\_+/, "").
8
+ gsub(/\_+\z/, "").
9
+ concat(".md")
10
+ end
11
+
12
+ def upcate_first(str)
13
+ return if str.nil?
14
+ return "" if str.empty?
15
+
16
+ str.dup.tap { |s| s[0] = s[0].upcase }
17
+ end
18
+
19
+ # A custom string format method to avoid type
20
+ # errors when using str % hash.
21
+ def hash_format(str, hash)
22
+ return if str.nil?
23
+
24
+ str_copy = str.dup
25
+
26
+ hash.each do |key, value|
27
+ str_copy.gsub!("%{#{key}}", value.to_s)
28
+ end
29
+
30
+ str_copy
31
+ end
32
+
33
+ def unindent(str)
34
+ return if str.nil?
35
+
36
+ str_copy = str.dup
37
+ lines = str_copy.split("\n")
38
+
39
+ first_char = str_copy[0]
40
+
41
+ while lines.all? { |l| l.start_with?(first_char) } &&
42
+ (first_char == " " || first_char == "\t")
43
+
44
+ lines.map! { |l| l[1..-1] }
45
+
46
+ first_char = lines.first[0]
47
+ end
48
+
49
+ return lines.join("\n")
50
+ end
51
+
52
+ def mac?
53
+ RbConfig::CONFIG["host_os"] =~ /darwin/
54
+ end
55
+
56
+ def osascript(script)
57
+ system "osascript", *unindent(script).split(/\n/).map { |line| ["-e", line] }.flatten
58
+ end
59
+ end
data/lib/note/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Note
2
- VERSION = "0.0.11".freeze
2
+ VERSION = "0.0.18".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notenote
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anatoli Makarevich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-07 00:00:00.000000000 Z
11
+ date: 2022-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
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
  description: CLI tool to keep daily notes.
70
84
  email:
71
85
  - makaroni4@gmail.com
@@ -79,6 +93,7 @@ files:
79
93
  - lib/note.rb
80
94
  - lib/note/cli.rb
81
95
  - lib/note/config.json.template
96
+ - lib/note/helpers.rb
82
97
  - lib/note/version.rb
83
98
  homepage: https://github.com/makaroni4/note
84
99
  licenses: