cnote 0.1.3 → 0.2.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 +4 -4
- data/README.md +8 -0
- data/cnote.gemspec +1 -0
- data/lib/cnote/config.rb +51 -18
- data/lib/cnote/notes.rb +56 -9
- data/lib/cnote/version.rb +1 -1
- data/lib/cnote.rb +6 -3
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b85c6a02284c2120ce8daaf4582f3bcba9b54bc
|
4
|
+
data.tar.gz: 7b0c3e88353e7f46e295f6232253eb98d0b6008a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98bda843720a6789a57e1c0d075f4e29e9aace16f8ea97a0572999f58ad0db28d52f6bf110cec241bd629d13f367b31a1049b7c6c7e42f57a28bd5f097c8ec5f
|
7
|
+
data.tar.gz: f3eea2df867c25f9414ad2dbd7ac7f8a4d40ed5bba9aa2251e914092eb25d89b0110ce51659cd4d8983b001dcf9dd53eed12c6defcca25f03d820577814b37f3
|
data/README.md
CHANGED
@@ -3,6 +3,14 @@
|
|
3
3
|
|
4
4
|
CNote is my personal system for managing notes. I wanted something snappy and lightweight that would let me search, tag and edit a folder full of markdown files using just my keyboard and some `vim`-ish single-letter commands.
|
5
5
|
|
6
|
+
## Changelog
|
7
|
+
|
8
|
+
### 0.2.0
|
9
|
+
- Added `config` command to adjust configuration within CNote. Try: `config set prompt >>>` or `config get editor`, or even just `config` to edit the file directly. Current config properties are `prompt`, `editor`, and `note_path`.
|
10
|
+
|
11
|
+
### 0.1.3 and lower
|
12
|
+
- Trial and error gem publishing-related fixes.
|
13
|
+
|
6
14
|
## Installation
|
7
15
|
|
8
16
|
First of all, make sure you have a recent version of Ruby installed (including RubyGems). I'm using 2.4.0. Then run:
|
data/cnote.gemspec
CHANGED
data/lib/cnote/config.rb
CHANGED
@@ -1,28 +1,22 @@
|
|
1
1
|
require "yaml"
|
2
2
|
require "fileutils"
|
3
|
+
require "ap"
|
3
4
|
|
4
5
|
class Config
|
5
|
-
attr_reader :note_path
|
6
|
+
attr_reader :note_path, :path
|
7
|
+
attr_writer :prompt, :editor
|
6
8
|
|
7
9
|
def initialize(path)
|
8
|
-
path = File.expand_path
|
10
|
+
@path = File.expand_path(path)
|
9
11
|
|
10
|
-
if !File.exists?
|
12
|
+
if !File.exists?(@path)
|
11
13
|
puts "Welcome, new user!"
|
12
14
|
|
13
15
|
@note_path = get_note_path
|
14
|
-
|
15
|
-
File.open(path, "w") do |file|
|
16
|
-
file.write(YAML.dump(to_hash))
|
17
|
-
end
|
18
|
-
|
16
|
+
save
|
19
17
|
puts "Okay, we're ready to go!"
|
20
18
|
else
|
21
|
-
|
22
|
-
|
23
|
-
@note_path = conf["note_path"]
|
24
|
-
@editor = conf["editor"]
|
25
|
-
@cursor = conf["prompt"]
|
19
|
+
load
|
26
20
|
end
|
27
21
|
end
|
28
22
|
|
@@ -57,13 +51,52 @@ class Config
|
|
57
51
|
@editor || ENV["EDITOR"]
|
58
52
|
end
|
59
53
|
|
60
|
-
def
|
61
|
-
@
|
54
|
+
def prompt
|
55
|
+
@prompt || ">"
|
56
|
+
end
|
57
|
+
|
58
|
+
def set(key, val)
|
59
|
+
case key.downcase
|
60
|
+
when 'editor'
|
61
|
+
@editor = val
|
62
|
+
when 'prompt'
|
63
|
+
@prompt = val
|
64
|
+
end
|
65
|
+
save
|
66
|
+
end
|
67
|
+
|
68
|
+
def get(key)
|
69
|
+
case key.downcase
|
70
|
+
when 'editor'
|
71
|
+
editor
|
72
|
+
when 'prompt'
|
73
|
+
prompt
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def save
|
78
|
+
File.open(@path, "w") do |file|
|
79
|
+
file.write(YAML.dump(to_hash))
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def load
|
84
|
+
conf = YAML.load(File.read(@path))
|
85
|
+
|
86
|
+
@note_path = conf["note_path"]
|
87
|
+
@editor = conf["editor"]
|
88
|
+
@prompt = conf["prompt"]
|
89
|
+
end
|
90
|
+
|
91
|
+
def print
|
92
|
+
ap to_hash
|
62
93
|
end
|
63
94
|
|
64
95
|
def to_hash
|
65
|
-
|
66
|
-
|
67
|
-
|
96
|
+
hash = Hash.new
|
97
|
+
hash["note_path"] = @note_path if @note_path
|
98
|
+
hash["editor"] = @editor if @editor
|
99
|
+
hash["prompt"] = @prompt if @prompt
|
100
|
+
return hash
|
68
101
|
end
|
69
102
|
end
|
data/lib/cnote/notes.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "colorize"
|
2
2
|
require "fileutils"
|
3
3
|
require "time"
|
4
|
+
require "ap"
|
4
5
|
require "cnote/note"
|
5
6
|
|
6
7
|
class Notes
|
@@ -16,7 +17,7 @@ class Notes
|
|
16
17
|
|
17
18
|
def await_command(message = nil)
|
18
19
|
puts message if message
|
19
|
-
print "#{@config.
|
20
|
+
print "#{@config.prompt} ".magenta
|
20
21
|
input = STDIN.gets.chomp
|
21
22
|
|
22
23
|
# Strip and process
|
@@ -44,6 +45,8 @@ class Notes
|
|
44
45
|
list
|
45
46
|
when "help", "h"
|
46
47
|
help
|
48
|
+
when "config", "conf"
|
49
|
+
config(params)
|
47
50
|
when "quit", "exit", "close", "q"
|
48
51
|
exit
|
49
52
|
else
|
@@ -123,19 +126,26 @@ class Notes
|
|
123
126
|
else
|
124
127
|
return
|
125
128
|
end
|
129
|
+
else
|
130
|
+
# Make sure the directory actually exists.
|
131
|
+
FileUtils.mkdir_p(File.join(@config.note_path, rel_path))
|
126
132
|
end
|
127
133
|
|
128
134
|
system "#{@config.editor} '#{full_path}'"
|
129
135
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
136
|
+
if File.exists?(full_path)
|
137
|
+
note = Note.new(full_path)
|
138
|
+
note.add_tags(tags) if tags.length > 0
|
139
|
+
note.created = Time.new
|
140
|
+
note.update
|
134
141
|
|
135
|
-
|
142
|
+
@notes << Note.new(full_path)
|
136
143
|
|
137
|
-
|
138
|
-
|
144
|
+
print_list("Created", [note])
|
145
|
+
@filtered = [note]
|
146
|
+
else
|
147
|
+
puts "Scrapped the blank note..."
|
148
|
+
end
|
139
149
|
else
|
140
150
|
puts "Please enter a filename as the first parameter"
|
141
151
|
end
|
@@ -172,6 +182,10 @@ class Notes
|
|
172
182
|
end
|
173
183
|
|
174
184
|
def peek(params)
|
185
|
+
if params&.first&.downcase == 'config'
|
186
|
+
return @config.print
|
187
|
+
end
|
188
|
+
|
175
189
|
note = @filtered[params.first.to_i - 1]
|
176
190
|
if note
|
177
191
|
lines = note.content.lines
|
@@ -220,10 +234,42 @@ class Notes
|
|
220
234
|
puts "Removed #{params.length - 1} tag#{"s" if params.length != 2} from #{notes.length} note#{"s" if notes.length != 1}."
|
221
235
|
end
|
222
236
|
|
237
|
+
def config(params = [])
|
238
|
+
if params.length == 0
|
239
|
+
system "#{@config.editor} #{@config.path}"
|
240
|
+
@config.load
|
241
|
+
return
|
242
|
+
end
|
243
|
+
|
244
|
+
action, key, *value = params
|
245
|
+
value = value.join(" ")
|
246
|
+
|
247
|
+
if action == "get"
|
248
|
+
if key
|
249
|
+
puts "#{key}: \"#{@config.get(key)}\""
|
250
|
+
else
|
251
|
+
@config.print
|
252
|
+
end
|
253
|
+
elsif action == "set"
|
254
|
+
if key
|
255
|
+
if value
|
256
|
+
puts "Config: #{key} changed from '#{@config.get(key)}' to '#{value}'"
|
257
|
+
@config.set(key, value)
|
258
|
+
else
|
259
|
+
puts "Can't set a key to a value if no value is given."
|
260
|
+
end
|
261
|
+
else
|
262
|
+
puts "Can't set a key if one wasn't given."
|
263
|
+
end
|
264
|
+
else
|
265
|
+
puts "Invalid action: #{action}"
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
223
269
|
def help
|
224
270
|
puts
|
225
271
|
puts "Enter a command with the structure:"
|
226
|
-
puts " #{@config.
|
272
|
+
puts " #{@config.prompt} action parameter(s)"
|
227
273
|
puts
|
228
274
|
puts "Actions:"
|
229
275
|
puts " - #{"new".bold.white} #{"filename".italic}"
|
@@ -234,6 +280,7 @@ class Notes
|
|
234
280
|
puts " - #{"untag".bold.white} #{"note_number".italic}"
|
235
281
|
puts " - #{"search".bold.white} #{"search_term".italic}"
|
236
282
|
puts " - #{"list".bold.white}"
|
283
|
+
puts " - #{"config".bold.white} #{"(set/get)".italic} #{"key".italic} [#{"value".italic}]"
|
237
284
|
puts " - #{"exit".bold.white}"
|
238
285
|
puts " - #{"help".bold.white}"
|
239
286
|
puts
|
data/lib/cnote/version.rb
CHANGED
data/lib/cnote.rb
CHANGED
@@ -4,7 +4,10 @@ require "cnote/notes"
|
|
4
4
|
require "cnote/version"
|
5
5
|
|
6
6
|
config = Config.new("~/.cnote.yaml")
|
7
|
-
|
8
|
-
# Start REPL
|
9
7
|
notes = Notes.new(config)
|
10
|
-
|
8
|
+
|
9
|
+
if ARGV[0]
|
10
|
+
notes.run_command(ARGV.shift, ARGV)
|
11
|
+
else
|
12
|
+
notes.await_command("\nWelcome to CNote! Type #{'help'.white} or #{'h'.white} to see a list of available commands.")
|
13
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cnote
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony McCoy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-18 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: 0.8.1
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: awesome_print
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
description: Take notes with a fast and efficient CLI
|
70
84
|
email:
|
71
85
|
- tony@ratwizard.io
|