liste 1.0.0 → 2.0.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 +43 -18
- data/bin/liste +57 -120
- data/gems/liste-1.0.0.gem +0 -0
- data/lib/liste.rb +102 -0
- data/lib/liste/version.rb +2 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ca007b32ac7ec61eb742b2a184ad711f2a8b76d
|
4
|
+
data.tar.gz: 79db07ae0f9b180e9813869d2ebfb2bb69d34c36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54b5248dd3a276736823ae5a75f4c30ed73674b63eeda1441969d625ba3c6b426ee015ebbb875ace6bb5200f0bba6a2c58dfc94dad75512ce63e6ceb61006744
|
7
|
+
data.tar.gz: dc483c460f7236c30b03030a2ae0c6a24d4e2bc06697cac24dca049ad4207a74d409f26c10fa79afa364432698bbc01e592f6744cfceaee10389fd19fdd260e4
|
data/README.md
CHANGED
@@ -8,30 +8,55 @@ for your own system of notes and reminders.
|
|
8
8
|
|
9
9
|
## Installation
|
10
10
|
|
11
|
-
It doesn't get that much
|
11
|
+
It doesn't get that much easier than this:
|
12
12
|
|
13
|
-
+ `sudo gem install liste`
|
14
|
-
+ `printf "\nliste login" >> ~/.bashrc`
|
13
|
+
+ `sudo gem install liste` Download & install via RubyGems
|
14
|
+
+ `printf "\nliste login" >> ~/.bashrc` If you want the custom login messages option
|
15
|
+
+ `liste` Do this on first run to initialize the list file
|
15
16
|
|
16
17
|
## Usage
|
17
18
|
|
18
19
|
Liste is not hard to use either, running `liste` by itself will
|
19
|
-
display your todo list.
|
20
|
-
to your todo list. Add to your terminal login messages list with
|
21
|
-
`liste add login "CTRL + D logs you out of bash automatically"`.
|
20
|
+
display your todo list.
|
22
21
|
|
23
|
-
|
22
|
+
### Add to your todo list
|
23
|
+
`liste "Any content goes here"`
|
24
24
|
|
25
|
-
|
26
|
-
add list task : add 'task' to 'list'
|
27
|
-
disp list : display content of 'list'
|
28
|
-
login : show your login list
|
29
|
-
mark list done 1 : remove line 1 from list
|
30
|
-
edit list : open list in editor
|
31
|
-
rmi : interactively remove lists
|
32
|
-
rm list1 list2 etc : remove lists list1, list2, etc
|
25
|
+
Pretty simple huh? That will add "Any content goes here" to your todo list.
|
33
26
|
|
34
|
-
|
27
|
+
Important: *Be sure to have some sort of whitespace in the content, or it will not be added correctly.*
|
28
|
+
|
29
|
+
### Have custom login messages
|
30
|
+
Add to your terminal login messages list with:
|
31
|
+
|
32
|
+
`liste .login "My login reminder"`
|
33
|
+
|
34
|
+
As soon as you login (open a new terminal window), you will see this :
|
35
|
+
|
36
|
+
```
|
37
|
+
Your tasks...
|
38
|
+
|
39
|
+
• My login reminder
|
40
|
+
|
41
|
+
you@host:~$
|
42
|
+
```
|
43
|
+
|
44
|
+
### Create and add to any other list
|
45
|
+
If you think that a 'login' and 'todo' list isn't enough, you can make a new list:
|
46
|
+
|
47
|
+
`liste .anylistname "Content to add to your custom list"`
|
48
|
+
|
49
|
+
To view this new list (this is sort of important), you can use `disp` like so:
|
50
|
+
|
51
|
+
`liste .anylistname disp`
|
52
|
+
|
53
|
+
Note: Although it's possible to have spaces in your list name (`liste ".spaces in this list name" "This list has spaces"`),
|
54
|
+
you would have to put quotes around the name, so it's clumsy and not recommended.
|
55
|
+
|
56
|
+
### Other usage help
|
57
|
+
Run `liste help` for more complete usage instructions.
|
58
|
+
|
59
|
+
## Contribute
|
35
60
|
|
36
61
|
The feature you want isn't going to come out of nowhere
|
37
62
|
|
@@ -41,5 +66,5 @@ The feature you want isn't going to come out of nowhere
|
|
41
66
|
4. Push to the branch `git push origin my-new-feature`
|
42
67
|
5. Create a new Pull Request on github
|
43
68
|
|
44
|
-
+ [Daniel Ethridge](https://github.
|
45
|
-
+ [You](https://yourwebsite.com) - helped add...
|
69
|
+
+ [Daniel Ethridge](https://wlib.github.io) - author
|
70
|
+
+ [You](https://yourwebsite.com) - helped add...
|
data/bin/liste
CHANGED
@@ -2,67 +2,34 @@
|
|
2
2
|
# Liste - reminders, notes, ideas on the go
|
3
3
|
# Daniel Ethridge
|
4
4
|
|
5
|
-
require
|
5
|
+
require "liste"
|
6
|
+
include Liste
|
6
7
|
|
7
|
-
|
8
|
+
# 'argv' will be the lowercase version of 'ARGV', this helps for argument matching
|
9
|
+
argv = ARGV.map(&:downcase)
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
-
unless File.directory?("#{Dir.home}/.liste")
|
12
|
-
FileUtils.mkdir_p("#{Dir.home}/.liste")
|
13
|
-
end
|
14
|
-
File.open("#{Dir.home}/.liste/#{list}.list", "w")
|
15
|
-
puts "New list created in '#{Dir.home}/.liste/#{list}.list'\n"
|
16
|
-
end
|
11
|
+
help = "\nUsage : `liste` or `liste [arguments]` or
|
12
|
+
`liste .listname \"task\"` or `liste .listname [arguments]`
|
17
13
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
case style
|
22
|
-
when "bullet"
|
23
|
-
bullet = "\u2022"
|
24
|
-
File.foreach(list) do |line|
|
25
|
-
puts " #{bullet} #{line}"
|
26
|
-
end
|
27
|
-
when "check"
|
28
|
-
check = "\u2714"
|
29
|
-
File.foreach(list) do |line|
|
30
|
-
puts " #{check} #{line}"
|
31
|
-
end
|
32
|
-
when "number"
|
33
|
-
File.foreach(list).with_index do |line, i|
|
34
|
-
puts "#{i+1}. #{line}"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
print "\n"
|
38
|
-
end
|
14
|
+
Liste is for those who have short-term memory and
|
15
|
+
those who need constant reminders.
|
16
|
+
You should add the line 'liste login' to your .bashrc
|
39
17
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
18
|
+
When adding an item to a list, the content MUST contain whitespace to be
|
19
|
+
selected, this is accomplished by adding quotes around your list item :
|
20
|
+
`liste .list \"my content has whitespace\"` This is done to prevent the shell
|
21
|
+
from splitting your content into seperate arguments.
|
44
22
|
|
45
|
-
|
46
|
-
def rmi()
|
47
|
-
puts "Type which of these lists to remove, type `exit` when done\n\n"
|
48
|
-
dir = Dir["#{Dir.home}/.liste/*.list"].join("\n") rescue exit
|
49
|
-
puts dir.scan(/(?<=\.liste\/)(.*?)(?=\.list)/)
|
50
|
-
print "\nremove> "
|
51
|
-
input = $stdin.gets.chomp
|
52
|
-
if input == "exit"; exit; end
|
53
|
-
FileUtils.rm_r("#{Dir.home}/.liste/#{input}.list") rescue rmi()
|
54
|
-
puts "List '#{input}' removed"
|
55
|
-
end
|
23
|
+
--------------------------------------------------
|
56
24
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
end
|
25
|
+
\"task to do\" : add 'task' to the todo list
|
26
|
+
.login \"task to do\" : add 'task' to the login list
|
27
|
+
.anylist disp : display the contents of 'anylist'
|
28
|
+
|
29
|
+
--------------------------------------------------
|
30
|
+
|
31
|
+
If you find a bug, want extra features, or have a suggestion,
|
32
|
+
make a branch on github : https://github.com/wlib/liste\n\n"
|
66
33
|
|
67
34
|
# Just running `liste` (no arguments) will display content of the "todo" list
|
68
35
|
if ARGV.empty?
|
@@ -72,79 +39,49 @@ if ARGV.empty?
|
|
72
39
|
exit
|
73
40
|
end
|
74
41
|
|
75
|
-
|
76
|
-
case args[0]
|
42
|
+
case argv[0]
|
77
43
|
when "?", "h", "help", "-h", "--help"
|
78
|
-
puts
|
79
|
-
Liste is for those who have short-term memory and\n\
|
80
|
-
those who need constant reminders.\n\
|
81
|
-
You should add the line 'liste login' to your .bashrc\n\n\
|
82
|
-
do task : add 'task' to the todo list\n\
|
83
|
-
add list task : add 'task' to 'list'\n\
|
84
|
-
disp list : display content of 'list'\n\
|
85
|
-
login : show your login list\n\
|
86
|
-
mark list done 1 : remove line 1 from list\n\
|
87
|
-
edit list : open list in editor\n\
|
88
|
-
rmi : interactively remove lists\n\
|
89
|
-
rm list1 list2 etc : remove lists list1, list2, etc\n\n\
|
90
|
-
If you find a bug, want extra features, or have a suggestion, make a branch\n\
|
91
|
-
on github : https://github.com/wlib/liste\n\n"
|
92
|
-
# `liste do "my task"` adds "my task" to the "todo" list
|
93
|
-
when "do"
|
94
|
-
todo = File.open("#{Dir.home}/.liste/todo.list", "a") rescue
|
95
|
-
init("todo"); todo = File.open("#{Dir.home}/.liste/todo.list", "a")
|
96
|
-
todo << "#{ARGV[1..-1].join(' ')}\n"
|
97
|
-
exit
|
98
|
-
# `liste add login "my reminder"` adds a line to the list "login"
|
99
|
-
when "add"
|
100
|
-
list = File.open("#{Dir.home}/.liste/#{ARGV[1]}.list", "a") rescue
|
101
|
-
init("#{ARGV[1]}"); list = File.open("#{Dir.home}/.liste/#{ARGV[1]}.list", "a")
|
102
|
-
list << "#{ARGV[2..-1].join(' ')}\n"
|
103
|
-
exit
|
104
|
-
# Displays the content in any list
|
105
|
-
when "disp"
|
106
|
-
puts "Your list '#{ARGV[1]}'...\n\n"
|
107
|
-
disp("#{ARGV[1]}", "bullet") rescue
|
108
|
-
puts "...nothing here yet"; exit
|
44
|
+
puts help
|
109
45
|
exit
|
110
46
|
# This displays the "login" list
|
111
47
|
when "login"
|
112
48
|
puts "Your tasks...\n\n"
|
113
49
|
disp("login", "bullet") rescue
|
114
|
-
puts "...nothing here yet"; exit
|
50
|
+
puts "\n...nothing here yet"; exit
|
115
51
|
exit
|
116
|
-
# Marks a list or line in a list a certain way...
|
117
|
-
when "mark"
|
118
|
-
case args[2]
|
119
|
-
# Marks a line as done, removes from that list, adds to the "done" list
|
120
|
-
when "done"
|
121
|
-
listfile = File.open("#{Dir.home}/.liste/#{args[1]}.list", "r+") rescue exit
|
122
|
-
todo = listfile.readlines
|
123
|
-
listfile.close
|
124
|
-
done = File.open("#{Dir.home}/.liste/done.list", "a") rescue
|
125
|
-
done_init(); done = File.open("#{Dir.home}/.liste/done.list", "a")
|
126
|
-
line_index = args[3].to_i - 1
|
127
|
-
if line_index >= todo.length; puts "check line number"; exit end
|
128
|
-
done.puts todo[line_index]
|
129
|
-
todo.delete_at(line_index)
|
130
|
-
listfile = File.open("#{Dir.home}/.liste/#{args[1]}.list", "w")
|
131
|
-
listfile.puts todo
|
132
|
-
exit
|
133
|
-
else
|
134
|
-
puts "not sure what to mark... did you mean `liste mark [list] done [line #]`"
|
135
|
-
end
|
136
52
|
# Calls the edit shortcut
|
137
53
|
when "edit"
|
138
|
-
edit_list(
|
54
|
+
edit_list()
|
139
55
|
exit
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
56
|
+
end
|
57
|
+
|
58
|
+
# Parse shell input in the format `liste .listname ["content" / arguments]`
|
59
|
+
if argv[0].start_with?('.')
|
60
|
+
listname = ARGV[0][1..-1]
|
61
|
+
end
|
62
|
+
content = ARGV.select{ |e| e[/\s/] }.join(' ')
|
63
|
+
args = ARGV[1..-1].select{ |e| ! e[/\s/] }.map(&:downcase)
|
64
|
+
|
65
|
+
# Add content to the todo list, alternatively add to any other list
|
66
|
+
unless content.empty?
|
67
|
+
if ! listname.nil?
|
68
|
+
add(listname, content) rescue newlist(listname, content)
|
69
|
+
exit
|
70
|
+
elsif listname.nil?
|
71
|
+
add("todo", content) rescue newlist("todo", content)
|
72
|
+
exit
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# More than one list argument can be run at a time
|
77
|
+
case
|
78
|
+
# Displays the content in any list
|
79
|
+
when args.include?("disp")
|
80
|
+
puts "Your list '#{listname}'...\n\n"
|
81
|
+
disp("#{listname}", "bullet") rescue
|
82
|
+
puts "\n...nothing here yet"; exit
|
147
83
|
exit
|
148
|
-
|
149
|
-
|
150
|
-
|
84
|
+
end
|
85
|
+
|
86
|
+
# If nothing is caught then throw an error message
|
87
|
+
puts "Something went wrong, I'm not sure what you want me to do"; exit
|
Binary file
|
data/lib/liste.rb
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Functions used in liste
|
3
|
+
# Daniel Ethridge
|
4
|
+
|
5
|
+
module Liste
|
6
|
+
# Creates a new list
|
7
|
+
def init()
|
8
|
+
unless File.directory?("#{Dir.home}/.liste")
|
9
|
+
require 'fileutils'
|
10
|
+
FileUtils.mkdir_p("#{Dir.home}/.liste")
|
11
|
+
end
|
12
|
+
File.open("#{Dir.home}/.liste/main.list", "w")
|
13
|
+
puts "New list created in '#{Dir.home}/.liste/main.list'\n\n"
|
14
|
+
end
|
15
|
+
|
16
|
+
def newlistfile(listname, content, path)
|
17
|
+
hash = { :"#{listname}" => {:l0 => content} }
|
18
|
+
json = JSON.pretty_generate(hash)
|
19
|
+
file = File.open("#{path}", 'w')
|
20
|
+
file.puts json
|
21
|
+
file.close
|
22
|
+
puts "new list '#{listname}' created"
|
23
|
+
end
|
24
|
+
|
25
|
+
def newlist(listname, content="This is a placeholder", path="#{Dir.home}/.liste/main.list")
|
26
|
+
require 'json'
|
27
|
+
file = File.open("#{path}", 'r')
|
28
|
+
listfile = file.read
|
29
|
+
file.close
|
30
|
+
if listfile.nil? || listfile.empty?; newlistfile(listname, content, path); exit end
|
31
|
+
listhash = { :"#{listname}" => {:l0 => content } }
|
32
|
+
hash = JSON.parse(listfile)
|
33
|
+
newhash = hash.merge!(listhash)
|
34
|
+
json = JSON.pretty_generate(newhash)
|
35
|
+
file = File.open("#{path}", 'w')
|
36
|
+
file.puts json
|
37
|
+
file.close
|
38
|
+
end
|
39
|
+
|
40
|
+
# Make a list item and add to the json list file
|
41
|
+
def add(listname, content, path="#{Dir.home}/.liste/main.list")
|
42
|
+
require 'json'
|
43
|
+
file = File.open("#{path}", 'r')
|
44
|
+
listfile = file.read
|
45
|
+
file.close
|
46
|
+
listhash = JSON.parse(listfile)
|
47
|
+
if ! listhash.keys.include? listname; newlist(listname) end
|
48
|
+
listcontent = listhash[listname]
|
49
|
+
i = 0
|
50
|
+
while listcontent.keys.include? "l#{i}"
|
51
|
+
i += 1
|
52
|
+
end
|
53
|
+
newcontent = { "l#{i}" => content }
|
54
|
+
listcontent.merge!(newcontent)
|
55
|
+
newjson = JSON.pretty_generate(listhash)
|
56
|
+
file = File.open("#{path}", 'w')
|
57
|
+
file.puts newjson
|
58
|
+
file.close
|
59
|
+
end
|
60
|
+
|
61
|
+
def putlines(listname)
|
62
|
+
require 'json'
|
63
|
+
file = File.open("#{Dir.home}/.liste/main.list") rescue init()
|
64
|
+
listfile = file.read
|
65
|
+
listhash = JSON.parse(listfile)
|
66
|
+
linesout = []
|
67
|
+
i = 0
|
68
|
+
while i < listhash[listname].count
|
69
|
+
line = listhash[listname]["l#{i}"]
|
70
|
+
linesout << "#{line}"
|
71
|
+
i += 1
|
72
|
+
end
|
73
|
+
linesout
|
74
|
+
end
|
75
|
+
|
76
|
+
# Pretty-prints a list's contents
|
77
|
+
def disp(listname, style)
|
78
|
+
bullet = "\u2022"
|
79
|
+
check = "\u2714"
|
80
|
+
linesout = putlines(listname)
|
81
|
+
case style
|
82
|
+
when "bullet"
|
83
|
+
linesout.each do |line|
|
84
|
+
puts " #{bullet} #{line}"
|
85
|
+
end
|
86
|
+
when "check"
|
87
|
+
linesout.each do |line|
|
88
|
+
puts " #{check} #{line}"
|
89
|
+
end
|
90
|
+
when "number"
|
91
|
+
linesout.each.with_index do |line, i|
|
92
|
+
puts "#{i+1}. #{line}"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
print "\n"
|
96
|
+
end
|
97
|
+
|
98
|
+
# Shortcut the manually edit a list
|
99
|
+
def edit_list()
|
100
|
+
system "editor #{Dir.home}/.liste/main.list" rescue edit_list()
|
101
|
+
end
|
102
|
+
end
|
data/lib/liste/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module Liste
|
2
|
-
VERSION = "
|
3
|
-
end
|
2
|
+
VERSION = "2.0.0"
|
3
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: liste
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Ethridge
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,8 @@ files:
|
|
52
52
|
- Rakefile
|
53
53
|
- bin/liste
|
54
54
|
- bin/setup
|
55
|
+
- gems/liste-1.0.0.gem
|
56
|
+
- lib/liste.rb
|
55
57
|
- lib/liste/version.rb
|
56
58
|
- liste.gemspec
|
57
59
|
homepage: https://github.com/wlib/liste
|