notenote 0.0.12 → 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 +4 -4
- data/lib/note/cli.rb +38 -38
- data/lib/note/config.json.template +2 -1
- data/lib/note/helpers.rb +59 -0
- data/lib/note/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c1d8aaf090a602327ca4668ddf2302f8f44c0d9b8214b6b5ee5ef3e4708a4df
|
4
|
+
data.tar.gz: 430c780ce77443c2d35e59df835c700b4083ead5277cda6fd5e0a6b2835aeb5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
@@ -116,31 +138,33 @@ module Note
|
|
116
138
|
end
|
117
139
|
|
118
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
|
+
|
119
148
|
config_template = File.read(File.join(File.dirname(__FILE__), "config.json.template"))
|
120
149
|
|
121
|
-
config =
|
150
|
+
config = hash_format(config_template, {
|
122
151
|
notes_folder: notes_folder
|
123
152
|
})
|
124
153
|
|
125
|
-
config_file = File.join(Dir.home, ".notenote")
|
126
|
-
|
127
154
|
File.open(config_file, "w") do |f|
|
128
155
|
f.puts(config)
|
129
156
|
end
|
130
157
|
end
|
131
158
|
|
132
|
-
def create_note_file(note_name:
|
159
|
+
def create_note_file(note_name: notenote_config["default_note_file_name"])
|
133
160
|
notes_folder = notenote_config["notes_folder"]
|
134
161
|
|
135
162
|
today_folder = File.join(notes_folder, formatted_todays_date)
|
136
163
|
|
137
164
|
Dir.mkdir(today_folder) unless Dir.exist?(today_folder)
|
138
165
|
|
139
|
-
file_name = note_name
|
140
|
-
|
141
|
-
gsub(/\A\_+/, "").
|
142
|
-
gsub(/\_+\z/, "").
|
143
|
-
concat(".md")
|
166
|
+
file_name = markdown_file_name(note_name: note_name)
|
167
|
+
|
144
168
|
note_file = File.join(today_folder, file_name)
|
145
169
|
|
146
170
|
if File.exist?(note_file)
|
@@ -148,7 +172,7 @@ module Note
|
|
148
172
|
else
|
149
173
|
File.open(note_file, "w") do |file|
|
150
174
|
file.puts unindent <<-TEXT
|
151
|
-
# #{note_name
|
175
|
+
# #{upcate_first(note_name)}
|
152
176
|
|
153
177
|
|
154
178
|
TEXT
|
@@ -159,7 +183,7 @@ module Note
|
|
159
183
|
end
|
160
184
|
|
161
185
|
def notenote_config
|
162
|
-
config_file = File.join(Dir.home,
|
186
|
+
config_file = File.join(Dir.home, CONFIG_FILE_NAME)
|
163
187
|
|
164
188
|
JSON.parse(File.read(config_file))
|
165
189
|
end
|
@@ -170,18 +194,6 @@ module Note
|
|
170
194
|
system("#{editor_command} #{path}")
|
171
195
|
end
|
172
196
|
|
173
|
-
def mac?
|
174
|
-
RbConfig::CONFIG["host_os"] =~ /darwin/
|
175
|
-
end
|
176
|
-
|
177
|
-
def osascript(script)
|
178
|
-
system "osascript", *unindent(script).split(/\n/).map { |line| ['-e', line] }.flatten
|
179
|
-
end
|
180
|
-
|
181
|
-
def unindent(str)
|
182
|
-
str.gsub(/^#{str.scan(/^[ \t]+(?=\S)/).min}/, "")
|
183
|
-
end
|
184
|
-
|
185
197
|
# This function parses the output of diffstat:
|
186
198
|
#
|
187
199
|
# git diff HEAD | diffstat -Cm
|
@@ -237,18 +249,6 @@ module Note
|
|
237
249
|
system "git pull --ff-only"
|
238
250
|
end
|
239
251
|
|
240
|
-
# A custom string format method to avoid type
|
241
|
-
# errors when using str % hash.
|
242
|
-
def safe_tt(str, hash)
|
243
|
-
str_copy = str
|
244
|
-
|
245
|
-
hash.each do |key, value|
|
246
|
-
str_copy.gsub!("%{#{key}}", value.to_s)
|
247
|
-
end
|
248
|
-
|
249
|
-
str_copy
|
250
|
-
end
|
251
|
-
|
252
252
|
def formatted_todays_date
|
253
253
|
date_format = notenote_config["date_format"]
|
254
254
|
|
data/lib/note/helpers.rb
ADDED
@@ -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
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.
|
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-
|
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:
|