tdoo 0.0.2 → 0.0.3

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
  SHA1:
3
- metadata.gz: 5c4ea10f20869c412048938a3237066857457729
4
- data.tar.gz: 10b23ca1aaab053ab1f98a4ba147d74f8edc5348
3
+ metadata.gz: 04db06e81be29428459a1aa908d21a4783b77f65
4
+ data.tar.gz: a34ac90f6f22a9df5c745caf62a700f2d91be4dc
5
5
  SHA512:
6
- metadata.gz: c2660439f97a7e8405c8fa1c45677f510ce162a1df0fe2648b68ec81d5871065a8ed7983947182edf42090decb93e05b0cc6e061c5c8d9ee224c68df2eae1037
7
- data.tar.gz: ed9623b62a829cce62b68392eb2dfc368f1495f7435ca467ac1aea17125c0cc29916f6e61da218b5deeb07b3fe8d014516ae70a07a41b4605211b880f282b088
6
+ metadata.gz: 340abbfc995671672af1350ad246e0d9af0bc2d8f19983eb079600b6a9826192440593803560e11a3f1e58da3ff75229c5511ac31c8d19a05c438e1b58843a6b
7
+ data.tar.gz: 3feb257ed75227c0c014f0f3033127aef259124af28774d88b6b88afeb36b546f8ffda0caa249f5dc52c708869cf516fc9e67501f8321129f65964cc0a90ab2e
data/bin/tdoo CHANGED
@@ -1,10 +1,13 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'gli'
3
- require 'rainbow'
3
+ require 'tdoo'
4
4
 
5
5
  include GLI::App
6
+
6
7
  program_desc 'A mini todo command-line application'
7
8
 
9
+ version Tdoo::VERSION
10
+
8
11
  desc 'Path to the todo file'
9
12
  default_value '~/.tdoo.txt'
10
13
  arg_name 'todo_file'
@@ -12,8 +15,8 @@ flag [:f,:filename]
12
15
 
13
16
  desc 'Create a new task in the task list'
14
17
  long_desc "
15
- A task has a name and a priority. By default, new tasks has the lowest
16
- priority, though this can be overridden
18
+ A task has a name and belongs to a project that you need to specify.
19
+ e.g. tdoo new -p today \"Happy coding!\"
17
20
  "
18
21
  arg_name 'task'
19
22
  command [:new, :n] do |c|
@@ -21,9 +24,6 @@ command [:new, :n] do |c|
21
24
  c.arg_name 'project'
22
25
  c.flag [:p, :project]
23
26
 
24
- c.desc 'put the new task first in the task list'
25
- c.switch :f
26
-
27
27
  c.action do |global_options,options,task_names|
28
28
  data = File.expand_path(global_options[:filename])
29
29
  unless File.exist?(data)
@@ -31,8 +31,9 @@ command [:new, :n] do |c|
31
31
  File.new(data, 'w+')
32
32
  end
33
33
 
34
+ formatter = Tdoo::Format::Pretty.new
34
35
  File.open(data, 'a+') do |todo_file|
35
- raise "You must specify the project's name that new tasks belong to" if options[:p].nil?
36
+ raise "You must specify the project's name that new tasks belong to... 'tdoo new -h' for help!" if options[:p].nil?
36
37
 
37
38
  if task_names.empty?
38
39
  puts "Reading new tasks from stdin..."
@@ -49,80 +50,100 @@ command [:new, :n] do |c|
49
50
  task_names.each_with_index do |task, index|
50
51
  t = Time.now.strftime("%Y-%m-%d %H:%M:%S")
51
52
  todo_file.puts [project, index+tasks, task, t].join(',')
52
- puts [project, index+tasks, task, ].join(',')
53
+ formatter.format_todo(project, index+tasks, task, t)
53
54
  end
55
+
56
+ formatter.after
54
57
  end
55
58
  end
56
59
  end
57
60
 
58
61
  desc 'List all tasks'
62
+ long_desc "
63
+ By default, the format of the output is pretty. A task has two status, todo and done, that will be
64
+ different colors. Red is for todo tasks and green is for done tasks instead.
65
+ e.g. tdoo list -p today
66
+ "
59
67
  command [:list, :ls] do |c|
60
- c.desc 'Format of the output (pretty for TTY, csv otherwise)'
61
- c.arg_name 'csv|pretty'
62
- c.flag :format
63
68
 
64
69
  c.desc 'List all tasks belong to a certain project'
65
70
  c.arg_name 'project'
66
71
  c.flag [:p, :project]
67
72
 
68
73
  c.action do |global_options,options,args|
69
- if options[:format].nil?
70
- options[:format] = STDOUT.tty? ? 'pretty' : 'csv'
71
- end
72
74
 
75
+ formatter = Tdoo::Format::Pretty.new
76
+ project_flag = options[:p].nil? ? false : true
73
77
  data = File.read(File.expand_path(global_options[:filename]))
74
- if options[:p].nil?
75
- data.each_line do |line|
76
- completed = line.chomp.split(',').count
78
+ data.each_line do |line|
79
+ field = line.chomp.split(',')
80
+ project = field[0]
81
+ completed = field.count
82
+ if project_flag
83
+ if (completed == 4) && (project == options[:p])
84
+ formatter.format_todo(field[0], field[1], field[2], field[3])
85
+ elsif project == options[:p]
86
+ formatter.format_done(field[0], field[1], field[2], field[3], field[4])
87
+ end
88
+ else
77
89
  if completed == 4
78
- puts line.color(:red)
90
+ formatter.format_todo(field[0], field[1], field[2], field[3])
79
91
  else
80
- puts line.color(:green)
81
- end
82
- end
83
- else
84
- data.each_line do |line|
85
- project = line.chomp.split(',')[0]
86
- completed = line.chomp.split(',').count
87
- if project == options[:p]
88
- if completed == 4
89
- puts line.color(:red)
90
- else
91
- puts line.color(:green)
92
- end
92
+ formatter.format_done(field[0], field[1], field[2], field[3], field[4])
93
93
  end
94
94
  end
95
95
  end
96
+
97
+ formatter.after
96
98
  end
97
99
  end
98
100
 
99
101
  desc 'Complete a task'
100
102
  arg_name 'task_number'
103
+ long_desc "
104
+ Done tasks will be added the completed time after the end of task.
105
+ However, done tasks will be deleted permanently if you turn the delete switch on.
106
+ e.g. tdoo done -d -p today 0
107
+ "
101
108
  command [:done, :d] do |c|
102
109
  c.desc 'specify the project\'s name that done tasks belong to'
103
110
  c.arg_name 'project'
104
111
  c.flag [:p, :project]
105
112
 
113
+ c.desc 'delete the done tasks'
114
+ c.switch [:d, :delete]
115
+
106
116
  c.action do |global_options,options,task_number|
107
117
  old_file = File.expand_path(global_options[:filename])
108
118
  new_file = old_file + '.new'
119
+ delete_switch = options[:d] ? true : false
109
120
 
121
+ formatter = Tdoo::Format::Pretty.new
110
122
  File.open(old_file, 'r') do |todo_file|
111
- raise "You must specify the project's name that done tasks belong to" if options[:p].nil?
123
+ raise "You must specify the project's name that done tasks belong to...'tdoo done -h' for help!" if options[:p].nil?
124
+ raise "you must point the done task number out...'tdoo done -h' for help!" if task_number.empty?
112
125
 
126
+ # Open a new file and write into tasks which meet some conditions.
127
+ # A done task can be split up into 5 pieces.
113
128
  File.open(new_file, 'w+') do |new_todo_file|
114
129
  todo_file.readlines.each do |line|
115
130
  field = line.chomp.split(',')
116
131
  project, number = field[0], field[1]
117
132
  if (project == options[:p]) && (field[1] == task_number.first) && (field.count == 4)
118
133
  t = Time.now.strftime("%Y-%m-%d %H:%M:%S")
119
- new_todo_file.puts("#{line.chomp}"+",#{t}")
134
+ new_todo_file.puts("#{line.chomp}"+",#{t}") unless delete_switch
135
+ formatter.format_done(field[0], field[1], field[2], field[3], t)
136
+ elsif (project == options[:p]) && (field[1] == task_number.first) && (field.count == 5)
137
+ new_todo_file.puts(line) unless delete_switch
138
+ formatter.format_done(field[0], field[1], field[2], field[3], field[4])
120
139
  else
121
140
  new_todo_file.puts(line)
122
141
  end
123
142
  end
124
143
  end
125
144
  end
145
+
146
+ formatter.after
126
147
  `rm #{old_file} && mv #{new_file} #{old_file}`
127
148
  end
128
149
  end
data/lib/tdoo.rb CHANGED
@@ -1 +1,2 @@
1
- require 'tdoo/version.rb'
1
+ require 'tdoo/version.rb'
2
+ require 'tdoo/format/pretty'
@@ -0,0 +1,42 @@
1
+ require 'terminal-table'
2
+ require 'rainbow'
3
+ require 'time'
4
+
5
+ module Tdoo
6
+ module Format
7
+ class Pretty
8
+ def initialize
9
+ @table = Terminal::Table.new headings: %w(project id name created completed)
10
+ end
11
+
12
+ def format_todo(project, index, task, created)
13
+ row = []
14
+ row << project.color(:blue)
15
+ row << index
16
+ row << task.color(:red)
17
+ row << as_date(created).color(:red)
18
+ row << ''
19
+ @table << row
20
+ end
21
+
22
+ def format_done(project, index, task, created, completed)
23
+ row = []
24
+ row << project.color(:blue)
25
+ row << index
26
+ row << task.color(:green)
27
+ row << as_date(created).color(:green)
28
+ row << as_date(completed).color(:green)
29
+ @table << row
30
+ end
31
+
32
+ def after
33
+ puts @table.to_s
34
+ end
35
+
36
+ private
37
+ def as_date(string)
38
+ Time.parse(string).strftime("%Y-%m-%d %H:%M:%S")
39
+ end
40
+ end
41
+ end
42
+ end
data/lib/tdoo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Tdoo
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tdoo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - v4lour
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-11 00:00:00.000000000 Z
11
+ date: 2013-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -80,30 +80,37 @@ dependencies:
80
80
  - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- description:
83
+ - !ruby/object:Gem::Dependency
84
+ name: terminal-table
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: You can create, list and check tasks via this simple gem.
84
98
  email: v4lour@gmail.com
85
99
  executables:
86
100
  - tdoo
87
101
  extensions: []
88
- extra_rdoc_files:
89
- - README.rdoc
90
- - tdoo.rdoc
102
+ extra_rdoc_files: []
91
103
  files:
92
104
  - bin/tdoo
93
105
  - lib/tdoo/version.rb
106
+ - lib/tdoo/format/pretty.rb
94
107
  - lib/tdoo.rb
95
- - README.rdoc
96
- - tdoo.rdoc
97
- homepage: http://schil.me/
108
+ homepage: https://github.com/v4lour/tdoo.git
98
109
  licenses:
99
110
  - MIT
100
111
  metadata: {}
101
112
  post_install_message:
102
- rdoc_options:
103
- - --title
104
- - tdoo
105
- - --main
106
- - README.rdoc
113
+ rdoc_options: []
107
114
  require_paths:
108
115
  - lib
109
116
  - lib
data/README.rdoc DELETED
@@ -1 +0,0 @@
1
- A mini todo command-line app
data/tdoo.rdoc DELETED
@@ -1,5 +0,0 @@
1
- = tdoo
2
-
3
- Generate this with
4
- tdoo rdoc
5
- After you have described your command line interface