cnote 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 +7 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +12 -0
- data/LICENSE.txt +21 -0
- data/README.md +192 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/cnote.gemspec +30 -0
- data/exe/cnote +3 -0
- data/lib/cnote.rb +14 -0
- data/lib/cnote/version.rb +3 -0
- metadata +128 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9df0e76707bb7a63ff3b121e9e0b4fa6143b66c7
|
4
|
+
data.tar.gz: 9950e8a6fff2d2c7de76fc9883a211b65312696e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ee7ab59688e6773eb02255983795aca1c3957f6bd49ffc8fada57862017121d833cff46d974eef1b937bb92c806878d1b755bef8e4a7365bb7ac876c813b1d84
|
7
|
+
data.tar.gz: 26d390e8ac70d6179dd256f6fa0e37a262fc1ff4dc26ee956c88c98b87a48b75066b04f37c37792d5edf3d13bb8e585a1f886410a4f1277c1902f8a6b691f877
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
4
|
+
|
5
|
+
# Added at 2017-09-09 01:27:23 -0700 by tony:
|
6
|
+
gem "awesome_print", "~> 1.8"
|
7
|
+
|
8
|
+
# Added at 2017-09-09 03:13:22 -0700 by tony:
|
9
|
+
gem "colorize", "~> 0.8.1"
|
10
|
+
|
11
|
+
# Specify your gem's dependencies in cnote.gemspec
|
12
|
+
gemspec
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2017 Tony McCoy
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,192 @@
|
|
1
|
+
# CNote
|
2
|
+
> CLI notes app for Linux (and probably macOS) ((and maybe Windows Subsystem for Linux)) written in Ruby
|
3
|
+
|
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`mish single-letter commands.
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
|
8
|
+
First of all, make sure you have a recent version of Ruby installed (including RubyGems). I'm using 2.4.0. Then run:
|
9
|
+
|
10
|
+
$ gem install cnote
|
11
|
+
|
12
|
+
## Usage
|
13
|
+
|
14
|
+
CNote will be installed as a command on your machine. To get started, run `cnote`. The first time you run `cnote`, you'll be walked through the basic setup process which will produce a `.cnote.yaml` file within your `$HOME` directory. To skip this, just create the file yourself. Valid options for this file are covered [here](#).
|
15
|
+
|
16
|
+
```
|
17
|
+
$ cnote
|
18
|
+
|
19
|
+
Hello, new user!
|
20
|
+
Enter the path to the folder where you would like to store your notes: _
|
21
|
+
```
|
22
|
+
|
23
|
+
Running `cnote` again will drop you into a REPL interface where you can type in commands to interact with your notes. `help` will show the complete list while the program is running.
|
24
|
+
|
25
|
+
```
|
26
|
+
$ cnote
|
27
|
+
|
28
|
+
Welcome to CNote! Type 'help' or 'h' to see a list of available commands.
|
29
|
+
> _
|
30
|
+
```
|
31
|
+
|
32
|
+
Here are the available commands:
|
33
|
+
|
34
|
+
### Commands
|
35
|
+
|
36
|
+
Keywords surrounded by `<these>` are placeholders. You would enter the real value yourself.
|
37
|
+
|
38
|
+
#### `list`
|
39
|
+
> Aliases: `l`, `ls`
|
40
|
+
|
41
|
+
Lists *every single* note in your notes directory (recursively). This might be a lot of notes. To search for something specific, you would use the `find` command.
|
42
|
+
|
43
|
+
```bash
|
44
|
+
> list
|
45
|
+
|
46
|
+
All Notes
|
47
|
+
---------
|
48
|
+
|
49
|
+
1. Note Title
|
50
|
+
/subfolder/some-note.md
|
51
|
+
tags: [pickle] [fish]
|
52
|
+
|
53
|
+
2. Note Title
|
54
|
+
/whatever.md
|
55
|
+
<no tags>
|
56
|
+
|
57
|
+
3. ...
|
58
|
+
|
59
|
+
Listed 27 Notes
|
60
|
+
```
|
61
|
+
|
62
|
+
#### `new <file_name>`
|
63
|
+
> Aliases: `create`, `n`, `c`
|
64
|
+
|
65
|
+
Creates a new note with the given filename. If you pass in a nested directory, the directory will be created relative to your `note_path` value from the configuration file.
|
66
|
+
|
67
|
+
```bash
|
68
|
+
> new general/whatever.md
|
69
|
+
#=> creates file at '$note_path/general/whatever.md'
|
70
|
+
|
71
|
+
> create note.jpg
|
72
|
+
#=> creates file at '$note_path/note.md'
|
73
|
+
#=> (File extension is ignored. All notes are markdown.)
|
74
|
+
|
75
|
+
> c note.md
|
76
|
+
> n note.md
|
77
|
+
#=> All aliases do the same thing.
|
78
|
+
```
|
79
|
+
|
80
|
+
#### `edit <note_number>`
|
81
|
+
> Aliases: `open`, `o`, `e`
|
82
|
+
|
83
|
+
Opens the note file in your editor of choice, first looking for the `editor` property in your `.cnote.yaml` config file, and if that fails, uses the `EDITOR` environment variable.
|
84
|
+
|
85
|
+
#### `delete <note_number(s)>`
|
86
|
+
> Aliases: `d`, `rm`
|
87
|
+
|
88
|
+
Deletes the note(s) specified by their numbers. The numbers will be whatever number appeared next to that note the last time the notes were listed.
|
89
|
+
|
90
|
+
```bash
|
91
|
+
> delete 12
|
92
|
+
|
93
|
+
Are you sure you want to delete note number 12 with title 'Some Title Here'? [y/n] y
|
94
|
+
Deleted!
|
95
|
+
|
96
|
+
> _
|
97
|
+
```
|
98
|
+
|
99
|
+
#### `find <search_term>`
|
100
|
+
> Aliases: `search`, `s`, `f`
|
101
|
+
|
102
|
+
Searches and returns a list of all notes whose title or contents contain the search term.
|
103
|
+
|
104
|
+
```bash
|
105
|
+
> find cnote
|
106
|
+
#=> Returns a list of notes whose titles or content match the given term.
|
107
|
+
#=> Sample output:
|
108
|
+
|
109
|
+
Found 2 Notes
|
110
|
+
-------------
|
111
|
+
|
112
|
+
1. CNote Commands
|
113
|
+
/cnote/commands.md
|
114
|
+
tags: [cnote] [programming]
|
115
|
+
|
116
|
+
2. CNote Sync Backends
|
117
|
+
/cnote/cnote-sync.md
|
118
|
+
<no tags>
|
119
|
+
|
120
|
+
Listed 2 Notes
|
121
|
+
|
122
|
+
> find +t cnote
|
123
|
+
#=> Returns a list of notes that include the tag 'cnote'
|
124
|
+
#=> Sample output:
|
125
|
+
|
126
|
+
Found 1 Note
|
127
|
+
------------
|
128
|
+
|
129
|
+
1. CNote Commands
|
130
|
+
/cnote/commands.md
|
131
|
+
tags: [cnote] [programming]
|
132
|
+
|
133
|
+
Listed 1 Note
|
134
|
+
|
135
|
+
> find -t cnote
|
136
|
+
#=> Returns a list of notes that DO NOT contain the tag 'cnote'
|
137
|
+
|
138
|
+
> f project +t cnote
|
139
|
+
#=> Returns a list of notes that both match the text 'project' AND contain the tag 'cnote'
|
140
|
+
```
|
141
|
+
|
142
|
+
#### `peek <note_number`
|
143
|
+
|
144
|
+
Shows a short preview of the note, just to make sure it's the one you're looking for before you commit to editing, tagging, etc.
|
145
|
+
|
146
|
+
```bash
|
147
|
+
> peek 10
|
148
|
+
> p 10
|
149
|
+
#=> Shows the first 15 lines of note number 10
|
150
|
+
```
|
151
|
+
|
152
|
+
#### `tag <note_number(s)> <tag> <tag> <tag> ...`
|
153
|
+
> Aliases: `t`
|
154
|
+
|
155
|
+
Adds a space separated list of tags to the note specified by its list number.
|
156
|
+
|
157
|
+
```bash
|
158
|
+
> tag 15 pizza charcoal fishness
|
159
|
+
#=> Adds ['pizza', 'charcoal', 'fishness'] to the tag list of note number 15
|
160
|
+
|
161
|
+
> tag 4,17 double_tag
|
162
|
+
#=> Adds 'double_tag' to the tag lists of BOTH notes 4 and 17.
|
163
|
+
```
|
164
|
+
|
165
|
+
#### `untag <note_number(s)> <tag> <tag> ...`
|
166
|
+
> Aliases: `ut`
|
167
|
+
|
168
|
+
Removes the space separated list of tags from the note specified by its list number. Works exactly the same as `tag`, but in reverse.
|
169
|
+
|
170
|
+
## Configuration
|
171
|
+
|
172
|
+
CNote uses a YAML file called `.cnote.yaml` to store your preferences. The file is stored in your home directory and is editable in any text editor. Here are the options:
|
173
|
+
|
174
|
+
```yaml
|
175
|
+
# note_path is the only required property.
|
176
|
+
# This is the root directory for your notes folder.
|
177
|
+
note_path: ~/Documents/Notes
|
178
|
+
|
179
|
+
# Optionally, you can provide an editor that CNote will
|
180
|
+
# open your notes in. This can be any editor that handles
|
181
|
+
# markdown files: vscode, gedit, emacs, etc...
|
182
|
+
editor: vim
|
183
|
+
|
184
|
+
# prompt can be any string. This will show up just
|
185
|
+
# before your cursor whenever CNote is waiting for you to
|
186
|
+
# type something.
|
187
|
+
prompt: "=> uLtR4Hax <=(🌭)>>"
|
188
|
+
```
|
189
|
+
|
190
|
+
## License
|
191
|
+
|
192
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "cnote"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
data/cnote.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "cnote/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "cnote"
|
8
|
+
spec.version = Cnote::VERSION
|
9
|
+
spec.authors = ["Tony McCoy"]
|
10
|
+
spec.email = ["tony@ratwizard.io"]
|
11
|
+
|
12
|
+
spec.summary = %q{Console notes!}
|
13
|
+
spec.description = %q{Take notes with a fast and efficient CLI}
|
14
|
+
spec.homepage = "https://www.tonymccoy.me/cnote"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
|
+
f.match(%r{^(test|spec|features)/})
|
19
|
+
end
|
20
|
+
spec.bindir = "exe"
|
21
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
|
+
spec.require_paths = ["lib"]
|
23
|
+
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.15"
|
25
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
26
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
27
|
+
|
28
|
+
spec.add_runtime_dependency "awesome_print", "~> 1.8"
|
29
|
+
spec.add_runtime_dependency "colorize", "~> 0.8.1"
|
30
|
+
end
|
data/exe/cnote
ADDED
data/lib/cnote.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require "colorize"
|
2
|
+
require_relative "cnote/config"
|
3
|
+
require_relative "cnote/notes"
|
4
|
+
require_relative "cnote/version"
|
5
|
+
|
6
|
+
# module Cnote
|
7
|
+
# Your code goes here...
|
8
|
+
# end
|
9
|
+
|
10
|
+
config = Config.new("~/.cnote.yaml")
|
11
|
+
|
12
|
+
# Start REPL
|
13
|
+
notes = Notes.new(config)
|
14
|
+
notes.await_command("\nWelcome to CNote! Type #{'help'.white} or #{'h'.white} to see a list of available commands.")
|
metadata
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cnote
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tony McCoy
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-09-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.15'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.15'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: awesome_print
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.8'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.8'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: colorize
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.8.1
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.8.1
|
83
|
+
description: Take notes with a fast and efficient CLI
|
84
|
+
email:
|
85
|
+
- tony@ratwizard.io
|
86
|
+
executables:
|
87
|
+
- cnote
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- ".gitignore"
|
92
|
+
- ".rspec"
|
93
|
+
- ".travis.yml"
|
94
|
+
- Gemfile
|
95
|
+
- LICENSE.txt
|
96
|
+
- README.md
|
97
|
+
- Rakefile
|
98
|
+
- bin/console
|
99
|
+
- bin/setup
|
100
|
+
- cnote.gemspec
|
101
|
+
- exe/cnote
|
102
|
+
- lib/cnote.rb
|
103
|
+
- lib/cnote/version.rb
|
104
|
+
homepage: https://www.tonymccoy.me/cnote
|
105
|
+
licenses:
|
106
|
+
- MIT
|
107
|
+
metadata: {}
|
108
|
+
post_install_message:
|
109
|
+
rdoc_options: []
|
110
|
+
require_paths:
|
111
|
+
- lib
|
112
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
117
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - ">="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
requirements: []
|
123
|
+
rubyforge_project:
|
124
|
+
rubygems_version: 2.6.12
|
125
|
+
signing_key:
|
126
|
+
specification_version: 4
|
127
|
+
summary: Console notes!
|
128
|
+
test_files: []
|