ineedto 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/ineedto +55 -0
- data/lib/cmd.rb +14 -0
- data/lib/cmd/clean.rb +39 -0
- data/lib/cmd/complete.rb +48 -0
- data/lib/cmd/completed.rb +46 -0
- data/lib/cmd/list.rb +46 -0
- data/lib/cmd/new.rb +88 -0
- data/lib/cmd/pending.rb +47 -0
- data/lib/cmd/root.rb +33 -0
- data/lib/cmd/search.rb +53 -0
- data/lib/cmd/today.rb +46 -0
- metadata +110 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8eb0030ac1307cc4a2bab127d24df4c1c597807e66c46aba53aa1954a038d58b
|
4
|
+
data.tar.gz: 6fbe9187814d46efd74fee99cee557062161bfb6aecd759459a202ba9d76c5da
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b2052b6f4a010b475cc52f7e026f3352c6e9fd16d731d3e8573f9783b7731051d79279495131c0ff3af150f7773e8278eab9291faa91b4d43612f197805be793
|
7
|
+
data.tar.gz: d9a2a9bb02121fd4200a3d4cf36bd4ff79629f998ea3c601f0d0d598be4573705aee5f14bab8c673e6293c1628e1f28eb723e29704afa20f79e4ab3738764294
|
data/bin/ineedto
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'logger'
|
3
|
+
require 'sequel'
|
4
|
+
|
5
|
+
require File.expand_path('../../lib/cmd', __FILE__)
|
6
|
+
|
7
|
+
logger = Logger.new(STDOUT)
|
8
|
+
logger.level = Logger::DEBUG
|
9
|
+
|
10
|
+
at_exit do
|
11
|
+
logger.close
|
12
|
+
end
|
13
|
+
|
14
|
+
DB = Sequel.sqlite "#{ENV['HOME']}/.ineedtodb"
|
15
|
+
|
16
|
+
DB.create_table(:todos) do
|
17
|
+
primary_key :id
|
18
|
+
Integer :priority
|
19
|
+
String :name
|
20
|
+
TrueClass :done
|
21
|
+
DateTime :due_date
|
22
|
+
DateTime :completed_on
|
23
|
+
end unless DB.table_exists?(:todos)
|
24
|
+
|
25
|
+
|
26
|
+
cmd = case ARGV.first
|
27
|
+
when "new"
|
28
|
+
ARGV.shift
|
29
|
+
Cmd::NewTask.new(DB, logger, STDOUT, STDERR)
|
30
|
+
when "complete"
|
31
|
+
ARGV.shift
|
32
|
+
Cmd::CompleteTask.new(DB, logger, STDOUT, STDERR)
|
33
|
+
when "list"
|
34
|
+
ARGV.shift
|
35
|
+
Cmd::ListTasks.new(DB, logger, STDOUT, STDERR)
|
36
|
+
when "pending"
|
37
|
+
ARGV.shift
|
38
|
+
Cmd::PendingTasks.new(DB, logger, STDOUT, STDERR)
|
39
|
+
when "completed"
|
40
|
+
ARGV.shift
|
41
|
+
Cmd::CompletedTasks.new(DB, logger, STDOUT, STDERR)
|
42
|
+
when "search"
|
43
|
+
ARGV.shift
|
44
|
+
Cmd::SearchTasks.new(DB, logger, STDOUT, STDERR)
|
45
|
+
when "today"
|
46
|
+
ARGV.shift
|
47
|
+
Cmd::TodayTasks.new(DB, logger, STDOUT, STDERR)
|
48
|
+
when "clean"
|
49
|
+
ARGV.shift
|
50
|
+
Cmd::CleanTasks.new(DB, logger, STDOUT, STDERR)
|
51
|
+
else
|
52
|
+
Cmd::Root.new(logger, STDOUT, STDERR)
|
53
|
+
end
|
54
|
+
|
55
|
+
cmd.(ARGV)
|
data/lib/cmd.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative 'cmd/root'
|
2
|
+
require_relative 'cmd/new'
|
3
|
+
require_relative 'cmd/list'
|
4
|
+
require_relative 'cmd/complete'
|
5
|
+
require_relative 'cmd/pending'
|
6
|
+
require_relative 'cmd/completed'
|
7
|
+
require_relative 'cmd/search'
|
8
|
+
require_relative 'cmd/today'
|
9
|
+
require_relative 'cmd/clean'
|
10
|
+
|
11
|
+
module Cmd
|
12
|
+
VERSION = "0.0.1"
|
13
|
+
DATE_FORMAT = "%Y-%m-%d"
|
14
|
+
end
|
data/lib/cmd/clean.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'terminal-table'
|
3
|
+
|
4
|
+
module Cmd
|
5
|
+
class CleanTasks
|
6
|
+
def initialize(db, logger, stdout, stderr)
|
7
|
+
@db = db
|
8
|
+
@logger = logger
|
9
|
+
@stdout = stdout
|
10
|
+
@stderr = stderr
|
11
|
+
end
|
12
|
+
|
13
|
+
def call(argv)
|
14
|
+
_ = parse(argv)
|
15
|
+
todos = @db[:todos].delete
|
16
|
+
@stdout.puts("Tasks cleaned up succesffully")
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def parse(args)
|
22
|
+
options = {}
|
23
|
+
parser = OptionParser.new do |opts|
|
24
|
+
opts.banner = "Usage: ineedto clean"
|
25
|
+
|
26
|
+
opts.on("-h", "--help", "Show help and exit") do
|
27
|
+
@stdout.puts opts
|
28
|
+
exit(0)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
parser.parse!(args)
|
32
|
+
options
|
33
|
+
rescue => e
|
34
|
+
@stderr.puts e.message
|
35
|
+
@stderr.puts parser
|
36
|
+
exit(1)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/cmd/complete.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
|
4
|
+
module Cmd
|
5
|
+
class CompleteTask
|
6
|
+
def initialize(db, logger, stdout, stderr)
|
7
|
+
@db = db
|
8
|
+
@logger = logger
|
9
|
+
@stdout = stdout
|
10
|
+
@stderr = stderr
|
11
|
+
end
|
12
|
+
|
13
|
+
def call(args)
|
14
|
+
options = parse(args)
|
15
|
+
todo = @db[:todos].where(id: options[:id]).first
|
16
|
+
if todo.nil?
|
17
|
+
@stderr.puts "Not found"
|
18
|
+
exit(1)
|
19
|
+
end
|
20
|
+
@db[:todos].where(id: options[:id]).update(done: true, completed_on: Date.today)
|
21
|
+
@stdout.puts "Task completed"
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def parse(args)
|
27
|
+
options = {}
|
28
|
+
parser = OptionParser.new do |opts|
|
29
|
+
opts.banner = "Usage: ineedto complete"
|
30
|
+
|
31
|
+
opts.on("--h", "--help", "Show this help and exit") do
|
32
|
+
@stdout.puts opts
|
33
|
+
exit(0)
|
34
|
+
end
|
35
|
+
|
36
|
+
opts.on("-t ID", "--task ID", Integer, "Task to complete") do |id|
|
37
|
+
options[:id] = id
|
38
|
+
end
|
39
|
+
end
|
40
|
+
parser.parse!(args)
|
41
|
+
options
|
42
|
+
rescue => e
|
43
|
+
@stderr.puts e.message
|
44
|
+
@stderr.puts parser
|
45
|
+
exit(1)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'terminal-table'
|
3
|
+
|
4
|
+
module Cmd
|
5
|
+
class CompletedTasks
|
6
|
+
def initialize(db, logger, stdout, stderr)
|
7
|
+
@db = db
|
8
|
+
@logger = logger
|
9
|
+
@stdout = stdout
|
10
|
+
@stderr = stderr
|
11
|
+
end
|
12
|
+
|
13
|
+
def call(argv)
|
14
|
+
_ = parse(argv)
|
15
|
+
todos = @db[:todos].where(done: true).all
|
16
|
+
table = Terminal::Table.new do |t|
|
17
|
+
t.headings = ["ID", "Priority", "Name", "Done", "Due Date", "Completed On"]
|
18
|
+
todos.each do |todo|
|
19
|
+
t.add_row [todo[:id], todo[:priority], todo[:name], todo[:done], todo[:due_date].strftime(DATE_FORMAT), todo[:completed_on].strftime(DATE_FORMAT)]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
@stdout.puts(table)
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def parse(args)
|
29
|
+
options = {}
|
30
|
+
parser = OptionParser.new do |opts|
|
31
|
+
opts.banner = "Usage: todo completed"
|
32
|
+
|
33
|
+
opts.on("-h", "--help", "Show help and exit") do
|
34
|
+
@stdout.puts opts
|
35
|
+
exit(0)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
parser.parse!(args)
|
39
|
+
options
|
40
|
+
rescue => e
|
41
|
+
@stderr.puts e.message
|
42
|
+
@stderr.puts parser
|
43
|
+
exit(1)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/cmd/list.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'terminal-table'
|
3
|
+
|
4
|
+
module Cmd
|
5
|
+
class ListTasks
|
6
|
+
def initialize(db, logger, stdout, stderr)
|
7
|
+
@db = db
|
8
|
+
@logger = logger
|
9
|
+
@stdout = stdout
|
10
|
+
@stderr = stderr
|
11
|
+
end
|
12
|
+
|
13
|
+
def call(argv)
|
14
|
+
_ = parse(argv)
|
15
|
+
todos = @db[:todos].all
|
16
|
+
table = Terminal::Table.new do |t|
|
17
|
+
t.headings = ["ID", "Priority", "Name", "Done", "Due Date", "Completed On"]
|
18
|
+
todos.each do |todo|
|
19
|
+
t.add_row [todo[:id], todo[:priority], todo[:name], todo[:done], todo[:due_date].strftime(DATE_FORMAT), todo[:completed_on] && todo[:completed_on].strftime(DATE_FORMAT)]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
@stdout.puts(table)
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def parse(args)
|
29
|
+
options = {}
|
30
|
+
parser = OptionParser.new do |opts|
|
31
|
+
opts.banner = "Usage: ineedto list"
|
32
|
+
|
33
|
+
opts.on("-h", "--help", "Show help and exit") do
|
34
|
+
@stdout.puts opts
|
35
|
+
exit(0)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
parser.parse!(args)
|
39
|
+
options
|
40
|
+
rescue => e
|
41
|
+
@stderr.puts e.message
|
42
|
+
@stderr.puts parser
|
43
|
+
exit(1)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/cmd/new.rb
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'json'
|
3
|
+
require 'date'
|
4
|
+
|
5
|
+
require 'dry-validation'
|
6
|
+
|
7
|
+
module Cmd
|
8
|
+
class NewTaskContract < Dry::Validation::Contract
|
9
|
+
schema do
|
10
|
+
required(:name).filled(:string, size?: 1..255)
|
11
|
+
required(:priority).filled(:integer, gt?: 0)
|
12
|
+
required(:due_date).filled(:date)
|
13
|
+
end
|
14
|
+
|
15
|
+
rule(:due_date) do
|
16
|
+
key.failure("Cannot be in the past :)") if value < Date.today
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class NewTask
|
21
|
+
def initialize(db, logger, stdout, stderr)
|
22
|
+
@db = db
|
23
|
+
@logger = logger
|
24
|
+
@stdout = stdout
|
25
|
+
@stderr = stderr
|
26
|
+
@contract = NewTaskContract.new
|
27
|
+
end
|
28
|
+
|
29
|
+
def call(args)
|
30
|
+
options = parse(args)
|
31
|
+
errors = @contract.(options).errors(full: true).to_h
|
32
|
+
unless errors.empty?
|
33
|
+
table = Terminal::Table.new do |t|
|
34
|
+
errors.each do |field, errors|
|
35
|
+
row = []
|
36
|
+
row.push(field)
|
37
|
+
errors.each do |err|
|
38
|
+
row.push(err)
|
39
|
+
end
|
40
|
+
t.add_row(row)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
@stderr.puts "Failed to create task"
|
44
|
+
@stderr.puts table
|
45
|
+
return
|
46
|
+
end
|
47
|
+
options[:done] = false
|
48
|
+
@db[:todos].insert(options)
|
49
|
+
@stdout.puts "Task added successfully"
|
50
|
+
rescue => e
|
51
|
+
@stderr.puts e.message
|
52
|
+
@stderr.puts parser
|
53
|
+
exit(1)
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def parse(args)
|
59
|
+
options = {}
|
60
|
+
parser = OptionParser.new do |opts|
|
61
|
+
opts.banner = "Usage: ineedto new"
|
62
|
+
|
63
|
+
opts.on("-h", "--help", "Prints this help") do
|
64
|
+
puts opts
|
65
|
+
exit
|
66
|
+
end
|
67
|
+
|
68
|
+
opts.on("-n", "--name NAME", "Task Name") do |name|
|
69
|
+
options[:name] = name
|
70
|
+
end
|
71
|
+
|
72
|
+
opts.on("-p", "--priority [N]", Integer, "Priority") do |priority|
|
73
|
+
options[:priority] = priority || 1
|
74
|
+
end
|
75
|
+
|
76
|
+
opts.on("-d", "--due-date DUE_DATE", "Due date with format YYYY-MM-DD") do |due_date|
|
77
|
+
options[:due_date] = Date.strptime(due_date, DATE_FORMAT)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
parser.parse(args)
|
81
|
+
options
|
82
|
+
rescue => e
|
83
|
+
@stderr.puts("Failed to parse arguments")
|
84
|
+
@logger.debug(e.message)
|
85
|
+
exit(1)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
data/lib/cmd/pending.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
|
2
|
+
require 'optparse'
|
3
|
+
require 'terminal-table'
|
4
|
+
|
5
|
+
module Cmd
|
6
|
+
class PendingTasks
|
7
|
+
def initialize(db, logger, stdout, stderr)
|
8
|
+
@db = db
|
9
|
+
@logger = logger
|
10
|
+
@stdout = stdout
|
11
|
+
@stderr = stderr
|
12
|
+
end
|
13
|
+
|
14
|
+
def call(argv)
|
15
|
+
_ = parse(argv)
|
16
|
+
todos = @db[:todos].where(done: false).all
|
17
|
+
table = Terminal::Table.new do |t|
|
18
|
+
t.headings = ["ID", "Priority", "Name", "Done", "Due Date"]
|
19
|
+
todos.each do |todo|
|
20
|
+
t.add_row [todo[:id], todo[:priority], todo[:name], todo[:done], todo[:due_date].strftime(DATE_FORMAT)]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
@stdout.puts(table)
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def parse(args)
|
30
|
+
options = {}
|
31
|
+
parser = OptionParser.new do |opts|
|
32
|
+
opts.banner = "Usage: ineedto pending"
|
33
|
+
|
34
|
+
opts.on("-h", "--help", "Show help and exit") do
|
35
|
+
puts opts
|
36
|
+
exit(0)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
parser.parse!(args)
|
40
|
+
options
|
41
|
+
rescue => e
|
42
|
+
@stderr.puts e.message
|
43
|
+
@stderr.puts parser
|
44
|
+
exit(1)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/cmd/root.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
module Cmd
|
4
|
+
class Root
|
5
|
+
def initialize(logger, stdout, stderr)
|
6
|
+
@logger = logger
|
7
|
+
@stdout = stdout
|
8
|
+
@stderr = stderr
|
9
|
+
end
|
10
|
+
|
11
|
+
def call(args)
|
12
|
+
parser = OptionParser.new do |opts|
|
13
|
+
opts.banner = "Usage: ineedto [new|complete|list|pending|completed|today|search]"
|
14
|
+
|
15
|
+
opts.on("-h", "--help", "Prints this help") do
|
16
|
+
@stdout.opts
|
17
|
+
exit
|
18
|
+
end
|
19
|
+
|
20
|
+
opts.on("-v", "--version", "Prints version") do
|
21
|
+
@stdout.puts VERSION
|
22
|
+
exit
|
23
|
+
end
|
24
|
+
end
|
25
|
+
parser.parse!(args)
|
26
|
+
@stdout.puts parser
|
27
|
+
rescue => e
|
28
|
+
@stderr.puts e.message
|
29
|
+
@stderr.puts parser
|
30
|
+
exit(1)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/cmd/search.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'terminal-table'
|
3
|
+
|
4
|
+
require 'sequel'
|
5
|
+
|
6
|
+
module Cmd
|
7
|
+
class SearchTasks
|
8
|
+
def initialize(db, logger, stdout, stderr)
|
9
|
+
@db = db
|
10
|
+
@logger = logger
|
11
|
+
@stdout = stdout
|
12
|
+
@stderr = stderr
|
13
|
+
end
|
14
|
+
|
15
|
+
def call(argv)
|
16
|
+
options = parse(argv)
|
17
|
+
todos = @db[:todos].where(Sequel.ilike(:name, "%#{options[:q]}%")).all
|
18
|
+
table = Terminal::Table.new do |t|
|
19
|
+
t.headings = ["ID", "Priority", "Name", "Done", "Due Date", "Completed On"]
|
20
|
+
todos.each do |todo|
|
21
|
+
t.add_row [todo[:id], todo[:priority], todo[:name], todo[:done], todo[:due_date].strftime(DATE_FORMAT), todo[:completed_on] && todo[:completed_on].strftime(DATE_FORMAT)]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
@stdout.puts(table)
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def parse(args)
|
31
|
+
options = {}
|
32
|
+
parser = OptionParser.new do |opts|
|
33
|
+
opts.banner = "Usage: ineedto search"
|
34
|
+
|
35
|
+
opts.on("-h", "--help", "Show help and exit") do
|
36
|
+
@stdout.puts opts
|
37
|
+
exit(0)
|
38
|
+
end
|
39
|
+
|
40
|
+
opts.on("-q", "--query [QUERY]", "Search tasks using q") do |q|
|
41
|
+
options[:q] = q || ""
|
42
|
+
end
|
43
|
+
end
|
44
|
+
parser.parse!(args)
|
45
|
+
options
|
46
|
+
rescue => e
|
47
|
+
@stderr.puts e.message
|
48
|
+
@stderr.puts parser
|
49
|
+
exit(1)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
data/lib/cmd/today.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'terminal-table'
|
3
|
+
|
4
|
+
module Cmd
|
5
|
+
class TodayTasks
|
6
|
+
def initialize(db, logger, stdout, stderr)
|
7
|
+
@db = db
|
8
|
+
@logger = logger
|
9
|
+
@stdout = stdout
|
10
|
+
@stderr = stderr
|
11
|
+
end
|
12
|
+
|
13
|
+
def call(argv)
|
14
|
+
_ = parse(argv)
|
15
|
+
todos = @db[:todos].where(due_date: Date.today).all
|
16
|
+
table = Terminal::Table.new do |t|
|
17
|
+
t.headings = ["ID", "Priority", "Name", "Done", "Due Date", "Completed On"]
|
18
|
+
todos.each do |todo|
|
19
|
+
t.add_row [todo[:id], todo[:priority], todo[:name], todo[:done], todo[:due_date].strftime(DATE_FORMAT), todo[:completed_on] && todo[:completed_on].strftime(DATE_FORMAT)]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
@stdout.puts(table)
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def parse(args)
|
29
|
+
options = {}
|
30
|
+
parser = OptionParser.new do |opts|
|
31
|
+
opts.banner = "Usage: ineedto today"
|
32
|
+
|
33
|
+
opts.on("-h", "--help", "Show help and exit") do
|
34
|
+
@stdout.puts opts
|
35
|
+
exit(0)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
parser.parse!(args)
|
39
|
+
options
|
40
|
+
rescue => e
|
41
|
+
@stderr.puts e.message
|
42
|
+
@stderr.puts parser
|
43
|
+
exit(1)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
metadata
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ineedto
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Filip Kostovski
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-06-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: dry-validation
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.5.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.5.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sequel
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 5.33.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 5.33.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: sqlite3
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.4.2
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.4.2
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: terminal-table
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.8.0
|
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.0
|
69
|
+
description: Manages tasks by providing interface to crud and search for tasks
|
70
|
+
email: github.sirfilip@gmail.com
|
71
|
+
executables:
|
72
|
+
- ineedto
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- bin/ineedto
|
77
|
+
- lib/cmd.rb
|
78
|
+
- lib/cmd/clean.rb
|
79
|
+
- lib/cmd/complete.rb
|
80
|
+
- lib/cmd/completed.rb
|
81
|
+
- lib/cmd/list.rb
|
82
|
+
- lib/cmd/new.rb
|
83
|
+
- lib/cmd/pending.rb
|
84
|
+
- lib/cmd/root.rb
|
85
|
+
- lib/cmd/search.rb
|
86
|
+
- lib/cmd/today.rb
|
87
|
+
homepage: https://rubygems.org/gems/ineedto
|
88
|
+
licenses:
|
89
|
+
- MIT
|
90
|
+
metadata: {}
|
91
|
+
post_install_message:
|
92
|
+
rdoc_options: []
|
93
|
+
require_paths:
|
94
|
+
- lib
|
95
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
requirements: []
|
106
|
+
rubygems_version: 3.1.2
|
107
|
+
signing_key:
|
108
|
+
specification_version: 4
|
109
|
+
summary: Simple cmd task organizer
|
110
|
+
test_files: []
|