ineedto 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8eb0030ac1307cc4a2bab127d24df4c1c597807e66c46aba53aa1954a038d58b
4
- data.tar.gz: 6fbe9187814d46efd74fee99cee557062161bfb6aecd759459a202ba9d76c5da
3
+ metadata.gz: b82885942b51f481340652730bee824d8e6a2ab92a8fea6fe96e11e5b7a68dc4
4
+ data.tar.gz: 20b160d9ff7726c1b779e6f6cde1e0a99065d0853eb095aea70e8b98c409c479
5
5
  SHA512:
6
- metadata.gz: b2052b6f4a010b475cc52f7e026f3352c6e9fd16d731d3e8573f9783b7731051d79279495131c0ff3af150f7773e8278eab9291faa91b4d43612f197805be793
7
- data.tar.gz: d9a2a9bb02121fd4200a3d4cf36bd4ff79629f998ea3c601f0d0d598be4573705aee5f14bab8c673e6293c1628e1f28eb723e29704afa20f79e4ab3738764294
6
+ metadata.gz: b4bbc32083fb398c11366c0c2765d556a37efdab9eebb693eab926f85f2b7202902d8cd649f9e9ab302ac97d7ddfed00406e7c4b128372fe884f6ffa79bcde3e
7
+ data.tar.gz: 8e44ecf516f1e426a535ff11458471371ff57c0391ee73d9bbace5ec8fc4a07577d577ea21a21685164b30e7840c869854872d82b7b1935167be8ee08d1ef442
@@ -26,30 +26,40 @@ end unless DB.table_exists?(:todos)
26
26
  cmd = case ARGV.first
27
27
  when "new"
28
28
  ARGV.shift
29
- Cmd::NewTask.new(DB, logger, STDOUT, STDERR)
29
+ Cmd::NewTask.new(DB)
30
30
  when "complete"
31
31
  ARGV.shift
32
- Cmd::CompleteTask.new(DB, logger, STDOUT, STDERR)
32
+ Cmd::CompleteTask.new(DB)
33
33
  when "list"
34
34
  ARGV.shift
35
- Cmd::ListTasks.new(DB, logger, STDOUT, STDERR)
35
+ Cmd::ListTasks.new(DB)
36
36
  when "pending"
37
37
  ARGV.shift
38
- Cmd::PendingTasks.new(DB, logger, STDOUT, STDERR)
38
+ Cmd::PendingTasks.new(DB)
39
39
  when "completed"
40
40
  ARGV.shift
41
- Cmd::CompletedTasks.new(DB, logger, STDOUT, STDERR)
41
+ Cmd::CompletedTasks.new(DB)
42
42
  when "search"
43
43
  ARGV.shift
44
- Cmd::SearchTasks.new(DB, logger, STDOUT, STDERR)
44
+ Cmd::SearchTasks.new(DB)
45
45
  when "today"
46
46
  ARGV.shift
47
- Cmd::TodayTasks.new(DB, logger, STDOUT, STDERR)
47
+ Cmd::TodayTasks.new(DB)
48
48
  when "clean"
49
49
  ARGV.shift
50
- Cmd::CleanTasks.new(DB, logger, STDOUT, STDERR)
50
+ Cmd::CleanTasks.new(DB)
51
51
  else
52
- Cmd::Root.new(logger, STDOUT, STDERR)
52
+ Cmd::Root.new
53
+ end
54
+
55
+ begin
56
+ puts cmd.(ARGV)
57
+ rescue Cmd::CmdError => e
58
+ puts e.message
59
+ exit(1)
60
+ rescue => e
61
+ puts "Failed to execute cmd"
62
+ puts e
63
+ exit(1)
53
64
  end
54
65
 
55
- cmd.(ARGV)
data/lib/cmd.rb CHANGED
@@ -9,6 +9,8 @@ require_relative 'cmd/today'
9
9
  require_relative 'cmd/clean'
10
10
 
11
11
  module Cmd
12
- VERSION = "0.0.1"
12
+ class CmdError < StandardError; end
13
+
14
+ VERSION = "0.0.2"
13
15
  DATE_FORMAT = "%Y-%m-%d"
14
16
  end
@@ -3,37 +3,31 @@ require 'terminal-table'
3
3
 
4
4
  module Cmd
5
5
  class CleanTasks
6
- def initialize(db, logger, stdout, stderr)
6
+ def initialize(db)
7
7
  @db = db
8
- @logger = logger
9
- @stdout = stdout
10
- @stderr = stderr
11
8
  end
12
9
 
13
10
  def call(argv)
14
- _ = parse(argv)
15
- todos = @db[:todos].delete
16
- @stdout.puts("Tasks cleaned up succesffully")
11
+ parse(argv)
12
+ @out || begin
13
+ todos = @db[:todos].delete
14
+ "Tasks cleaned up succesffully"
15
+ end
17
16
  end
18
17
 
19
18
  private
20
19
 
21
20
  def parse(args)
22
- options = {}
23
21
  parser = OptionParser.new do |opts|
24
22
  opts.banner = "Usage: ineedto clean"
25
23
 
26
24
  opts.on("-h", "--help", "Show help and exit") do
27
- @stdout.puts opts
28
- exit(0)
25
+ @out = opts.help
29
26
  end
30
27
  end
31
28
  parser.parse!(args)
32
- options
33
- rescue => e
34
- @stderr.puts e.message
35
- @stderr.puts parser
36
- exit(1)
29
+ rescue OptionParser::ParseError => e
30
+ raise CmdError, e.message
37
31
  end
38
32
  end
39
33
  end
@@ -3,22 +3,21 @@ require 'optparse'
3
3
 
4
4
  module Cmd
5
5
  class CompleteTask
6
- def initialize(db, logger, stdout, stderr)
6
+ def initialize(db)
7
7
  @db = db
8
- @logger = logger
9
- @stdout = stdout
10
- @stderr = stderr
11
8
  end
12
9
 
13
10
  def call(args)
14
11
  options = parse(args)
15
- todo = @db[:todos].where(id: options[:id]).first
16
- if todo.nil?
17
- @stderr.puts "Not found"
18
- exit(1)
12
+ @out || begin
13
+ todo = @db[:todos].where(id: options[:id]).first
14
+ if todo.nil?
15
+ "Not found"
16
+ else
17
+ @db[:todos].where(id: options[:id]).update(done: true, completed_on: Date.today)
18
+ "Task completed"
19
+ end
19
20
  end
20
- @db[:todos].where(id: options[:id]).update(done: true, completed_on: Date.today)
21
- @stdout.puts "Task completed"
22
21
  end
23
22
 
24
23
  private
@@ -29,8 +28,7 @@ module Cmd
29
28
  opts.banner = "Usage: ineedto complete"
30
29
 
31
30
  opts.on("--h", "--help", "Show this help and exit") do
32
- @stdout.puts opts
33
- exit(0)
31
+ @out = opts.help
34
32
  end
35
33
 
36
34
  opts.on("-t ID", "--task ID", Integer, "Task to complete") do |id|
@@ -39,10 +37,8 @@ module Cmd
39
37
  end
40
38
  parser.parse!(args)
41
39
  options
42
- rescue => e
43
- @stderr.puts e.message
44
- @stderr.puts parser
45
- exit(1)
40
+ rescue OptionParser::ParseError => e
41
+ raise CmdError, e.message
46
42
  end
47
43
  end
48
44
  end
@@ -3,24 +3,22 @@ require 'terminal-table'
3
3
 
4
4
  module Cmd
5
5
  class CompletedTasks
6
- def initialize(db, logger, stdout, stderr)
6
+ def initialize(db)
7
7
  @db = db
8
- @logger = logger
9
- @stdout = stdout
10
- @stderr = stderr
11
8
  end
12
9
 
13
10
  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)]
11
+ parse(argv)
12
+ @out || begin
13
+ todos = @db[:todos].where(done: true).all
14
+ table = Terminal::Table.new do |t|
15
+ t.headings = ["ID", "Priority", "Name", "Done", "Due Date", "Completed On"]
16
+ todos.each do |todo|
17
+ t.add_row [todo[:id], todo[:priority], todo[:name], todo[:done], todo[:due_date].strftime(DATE_FORMAT), todo[:completed_on].strftime(DATE_FORMAT)]
18
+ end
20
19
  end
20
+ table
21
21
  end
22
-
23
- @stdout.puts(table)
24
22
  end
25
23
 
26
24
  private
@@ -31,16 +29,13 @@ module Cmd
31
29
  opts.banner = "Usage: todo completed"
32
30
 
33
31
  opts.on("-h", "--help", "Show help and exit") do
34
- @stdout.puts opts
35
- exit(0)
32
+ @out = opts.help
36
33
  end
37
34
  end
38
35
  parser.parse!(args)
39
36
  options
40
- rescue => e
41
- @stderr.puts e.message
42
- @stderr.puts parser
43
- exit(1)
37
+ rescue OptionParser::ParseError => e
38
+ raise CmdError, e.message
44
39
  end
45
40
  end
46
41
  end
@@ -3,44 +3,38 @@ require 'terminal-table'
3
3
 
4
4
  module Cmd
5
5
  class ListTasks
6
- def initialize(db, logger, stdout, stderr)
6
+ def initialize(db)
7
7
  @db = db
8
- @logger = logger
9
- @stdout = stdout
10
- @stderr = stderr
11
8
  end
12
9
 
13
10
  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)]
11
+ parse(argv)
12
+ @out || begin
13
+ todos = @db[:todos].all
14
+ table = Terminal::Table.new do |t|
15
+ t.headings = ["ID", "Priority", "Name", "Done", "Due Date", "Completed On"]
16
+ todos.each do |todo|
17
+ 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)]
18
+ end
20
19
  end
21
- end
22
20
 
23
- @stdout.puts(table)
21
+ table
22
+ end
24
23
  end
25
24
 
26
25
  private
27
26
 
28
27
  def parse(args)
29
- options = {}
30
28
  parser = OptionParser.new do |opts|
31
29
  opts.banner = "Usage: ineedto list"
32
30
 
33
31
  opts.on("-h", "--help", "Show help and exit") do
34
- @stdout.puts opts
35
- exit(0)
32
+ @out = opts.help
36
33
  end
37
34
  end
38
35
  parser.parse!(args)
39
- options
40
36
  rescue => e
41
- @stderr.puts e.message
42
- @stderr.puts parser
43
- exit(1)
37
+ raise CmdError, e.message
44
38
  end
45
39
  end
46
40
  end
@@ -18,39 +18,36 @@ module Cmd
18
18
  end
19
19
 
20
20
  class NewTask
21
- def initialize(db, logger, stdout, stderr)
21
+ def initialize(db)
22
22
  @db = db
23
- @logger = logger
24
- @stdout = stdout
25
- @stderr = stderr
26
23
  @contract = NewTaskContract.new
24
+ @out = nil
27
25
  end
28
26
 
29
27
  def call(args)
30
28
  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)
29
+ @out || begin
30
+ errors = @contract.(options).errors(full: true).to_h
31
+ unless errors.empty?
32
+ table = Terminal::Table.new do |t|
33
+ errors.each do |field, errors|
34
+ row = []
35
+ row.push(field)
36
+ errors.each do |err|
37
+ row.push(err)
38
+ end
39
+ t.add_row(row)
39
40
  end
40
- t.add_row(row)
41
41
  end
42
+ "Failed to create task\n" + table.to_s
43
+ else
44
+ options[:done] = false
45
+ @db[:todos].insert(options)
46
+ "Task added successfully"
42
47
  end
43
- @stderr.puts "Failed to create task"
44
- @stderr.puts table
45
- return
46
48
  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)
49
+ rescue OptionParser::ParseError => e
50
+ raise CmdError, e.message
54
51
  end
55
52
 
56
53
  private
@@ -61,8 +58,7 @@ module Cmd
61
58
  opts.banner = "Usage: ineedto new"
62
59
 
63
60
  opts.on("-h", "--help", "Prints this help") do
64
- puts opts
65
- exit
61
+ @out = opts.help
66
62
  end
67
63
 
68
64
  opts.on("-n", "--name NAME", "Task Name") do |name|
@@ -79,10 +75,8 @@ module Cmd
79
75
  end
80
76
  parser.parse(args)
81
77
  options
82
- rescue => e
83
- @stderr.puts("Failed to parse arguments")
84
- @logger.debug(e.message)
85
- exit(1)
78
+ rescue OptionParser::ParseError => e
79
+ raise CmdError, e.message
86
80
  end
87
81
  end
88
82
  end
@@ -4,44 +4,38 @@ require 'terminal-table'
4
4
 
5
5
  module Cmd
6
6
  class PendingTasks
7
- def initialize(db, logger, stdout, stderr)
7
+ def initialize(db)
8
8
  @db = db
9
- @logger = logger
10
- @stdout = stdout
11
- @stderr = stderr
12
9
  end
13
10
 
14
11
  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)]
12
+ parse(argv)
13
+ @out || begin
14
+ todos = @db[:todos].where(done: false).all
15
+ table = Terminal::Table.new do |t|
16
+ t.headings = ["ID", "Priority", "Name", "Done", "Due Date"]
17
+ todos.each do |todo|
18
+ t.add_row [todo[:id], todo[:priority], todo[:name], todo[:done], todo[:due_date].strftime(DATE_FORMAT)]
19
+ end
21
20
  end
22
- end
23
21
 
24
- @stdout.puts(table)
22
+ table
23
+ end
25
24
  end
26
25
 
27
26
  private
28
27
 
29
28
  def parse(args)
30
- options = {}
31
29
  parser = OptionParser.new do |opts|
32
30
  opts.banner = "Usage: ineedto pending"
33
31
 
34
32
  opts.on("-h", "--help", "Show help and exit") do
35
- puts opts
36
- exit(0)
33
+ @out = opts.help
37
34
  end
38
35
  end
39
36
  parser.parse!(args)
40
- options
41
- rescue => e
42
- @stderr.puts e.message
43
- @stderr.puts parser
44
- exit(1)
37
+ rescue OptionParser::ParseError => e
38
+ raise CmdError, e.message
45
39
  end
46
40
  end
47
41
  end
@@ -2,32 +2,22 @@ require 'optparse'
2
2
 
3
3
  module Cmd
4
4
  class Root
5
- def initialize(logger, stdout, stderr)
6
- @logger = logger
7
- @stdout = stdout
8
- @stderr = stderr
9
- end
10
-
11
5
  def call(args)
12
6
  parser = OptionParser.new do |opts|
13
7
  opts.banner = "Usage: ineedto [new|complete|list|pending|completed|today|search]"
14
8
 
15
9
  opts.on("-h", "--help", "Prints this help") do
16
- @stdout.opts
17
- exit
10
+ @out = opts.help
18
11
  end
19
12
 
20
13
  opts.on("-v", "--version", "Prints version") do
21
- @stdout.puts VERSION
22
- exit
14
+ @out = VERSION
23
15
  end
24
16
  end
25
17
  parser.parse!(args)
26
- @stdout.puts parser
27
- rescue => e
28
- @stderr.puts e.message
29
- @stderr.puts parser
30
- exit(1)
18
+ @out || parser.help
19
+ rescue OptionParser::ParseError => e
20
+ raise CmdError, e.message
31
21
  end
32
22
  end
33
23
  end
@@ -5,24 +5,23 @@ require 'sequel'
5
5
 
6
6
  module Cmd
7
7
  class SearchTasks
8
- def initialize(db, logger, stdout, stderr)
8
+ def initialize(db)
9
9
  @db = db
10
- @logger = logger
11
- @stdout = stdout
12
- @stderr = stderr
13
10
  end
14
11
 
15
12
  def call(argv)
16
13
  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)]
14
+ @out || begin
15
+ todos = @db[:todos].where(Sequel.ilike(:name, "%#{options[:q]}%")).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
22
21
  end
23
- end
24
22
 
25
- @stdout.puts(table)
23
+ table
24
+ end
26
25
  end
27
26
 
28
27
  private
@@ -33,8 +32,7 @@ module Cmd
33
32
  opts.banner = "Usage: ineedto search"
34
33
 
35
34
  opts.on("-h", "--help", "Show help and exit") do
36
- @stdout.puts opts
37
- exit(0)
35
+ @out = opts.help
38
36
  end
39
37
 
40
38
  opts.on("-q", "--query [QUERY]", "Search tasks using q") do |q|
@@ -43,10 +41,8 @@ module Cmd
43
41
  end
44
42
  parser.parse!(args)
45
43
  options
46
- rescue => e
47
- @stderr.puts e.message
48
- @stderr.puts parser
49
- exit(1)
44
+ rescue OptionParser::ParseError => e
45
+ raise CmdError, e.message
50
46
  end
51
47
  end
52
48
  end
@@ -3,44 +3,38 @@ require 'terminal-table'
3
3
 
4
4
  module Cmd
5
5
  class TodayTasks
6
- def initialize(db, logger, stdout, stderr)
6
+ def initialize(db)
7
7
  @db = db
8
- @logger = logger
9
- @stdout = stdout
10
- @stderr = stderr
11
8
  end
12
9
 
13
10
  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)]
11
+ parse(argv)
12
+ @out || begin
13
+ todos = @db[:todos].where(due_date: Date.today).all
14
+ table = Terminal::Table.new do |t|
15
+ t.headings = ["ID", "Priority", "Name", "Done", "Due Date", "Completed On"]
16
+ todos.each do |todo|
17
+ 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)]
18
+ end
20
19
  end
21
- end
22
20
 
23
- @stdout.puts(table)
21
+ table
22
+ end
24
23
  end
25
24
 
26
25
  private
27
26
 
28
27
  def parse(args)
29
- options = {}
30
28
  parser = OptionParser.new do |opts|
31
29
  opts.banner = "Usage: ineedto today"
32
30
 
33
31
  opts.on("-h", "--help", "Show help and exit") do
34
- @stdout.puts opts
35
- exit(0)
32
+ @out = opts.help
36
33
  end
37
34
  end
38
35
  parser.parse!(args)
39
- options
40
- rescue => e
41
- @stderr.puts e.message
42
- @stderr.puts parser
43
- exit(1)
36
+ rescue OptionParser::ParseError => e
37
+ raise CmdError, e.message
44
38
  end
45
39
  end
46
40
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ineedto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Filip Kostovski