tudu 0.0.3 → 0.0.4
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.
- data/README.md +23 -1
- data/bin/tudu +13 -6
- data/lib/tasks.rb +15 -0
- data/lib/tudu/version.rb +1 -1
- data/lib/tudu_core.rb +7 -0
- data/spec/tasks_spec.rb +62 -0
- metadata +12 -12
data/README.md
CHANGED
@@ -140,6 +140,16 @@ one
|
|
140
140
|
two
|
141
141
|
~~~
|
142
142
|
|
143
|
+
### done. from doing to done and from first todos to doing with progress option.
|
144
|
+
* done -p
|
145
|
+
|
146
|
+
~~~
|
147
|
+
$ tudu add one two three
|
148
|
+
$ tudu choose one
|
149
|
+
$ tudu done -p
|
150
|
+
1/3|===> |33%
|
151
|
+
~~~
|
152
|
+
|
143
153
|
### tasks show all tasks from [todos, doings, dones].
|
144
154
|
* tudu tasks
|
145
155
|
|
@@ -225,13 +235,25 @@ hoge
|
|
225
235
|
### dones 'search word' show specific dones tasks.
|
226
236
|
same as 'tasks search_word' case
|
227
237
|
|
238
|
+
### progress show tasks progress.
|
239
|
+
* tudu progress
|
240
|
+
|
241
|
+
~~~
|
242
|
+
$ tudu add a b c
|
243
|
+
$ tudu choose a
|
244
|
+
$ tudu done
|
245
|
+
$ tudu progress
|
246
|
+
1/3|===> |33%
|
247
|
+
~~~
|
248
|
+
|
228
249
|
### Notes
|
229
250
|
if you want to do other operation, edit [todos, doings, dones] directly.
|
230
251
|
|
231
252
|
it's only plain text, so you can edit freely.
|
232
253
|
|
233
254
|
## History
|
234
|
-
* version 0.0.
|
255
|
+
* version 0.0.4 : add 'progress'. add progress option to 'done'.
|
256
|
+
* version 0.0.3 : add categorized option to 'tasks'.
|
235
257
|
* version 0.0.2 : after execute 'done', if there is no todos and doings, display celebration message.
|
236
258
|
* version 0.0.2 : if 'choose' no args. choose first tudu.
|
237
259
|
* version 0.0.1 : first release.
|
data/bin/tudu
CHANGED
@@ -33,36 +33,43 @@ module Tudu
|
|
33
33
|
end
|
34
34
|
|
35
35
|
desc "done", "done tasks from doings to dones file. and choose task from todos's top task to doings"
|
36
|
+
option :progress, :type => :boolean, :aliases => '-p', :desc => "display tasks progress"
|
36
37
|
def done
|
37
38
|
Tudu::Core.new.done
|
39
|
+
progress if options[:progress]
|
38
40
|
end
|
39
41
|
|
40
|
-
desc "tasks", "
|
41
|
-
option :category, :type => :boolean, :aliases => '-c', :desc => "
|
42
|
+
desc "tasks", "search tasks from todos,doings,dones file. no args => get all tasks. set search word args, you get hit tasks"
|
43
|
+
option :category, :type => :boolean, :aliases => '-c', :desc => "display categorized tasks"
|
42
44
|
def tasks(*args)
|
43
45
|
puts Tudu::Core.new.tasks args.first, options
|
44
46
|
end
|
45
47
|
|
46
|
-
desc "todos", "
|
48
|
+
desc "todos", "search tasks from todos file. no args => get all tasks. set search word args, you get hit tasks"
|
47
49
|
def todos(*args)
|
48
50
|
puts Tudu::Core.new.todos args.first
|
49
51
|
end
|
50
52
|
|
51
|
-
desc "doings", "
|
53
|
+
desc "doings", "search tasks from doings file. no args => get all tasks. set search word args, you get hit tasks"
|
52
54
|
def doings(*args)
|
53
55
|
puts Tudu::Core.new.doings args.first
|
54
56
|
end
|
55
57
|
|
56
|
-
desc "now", "
|
58
|
+
desc "now", "search tasks from doings file. no args => get all tasks. set search word args, you get hit tasks"
|
57
59
|
def now(*args)
|
58
60
|
puts Tudu::Core.new.now args.first
|
59
61
|
end
|
60
62
|
|
61
|
-
desc "dones", "
|
63
|
+
desc "dones", "search tasks from dones file. no args => get all tasks. set search word args, you get hit tasks"
|
62
64
|
def dones(*args)
|
63
65
|
puts Tudu::Core.new.dones args.first
|
64
66
|
end
|
65
67
|
|
68
|
+
desc "progress", "display tasks progress"
|
69
|
+
def progress
|
70
|
+
puts Tudu::Core.new.progress
|
71
|
+
end
|
72
|
+
|
66
73
|
desc "version", "version"
|
67
74
|
def version
|
68
75
|
p Tudu::VERSION
|
data/lib/tasks.rb
CHANGED
@@ -207,6 +207,21 @@ module Tudu
|
|
207
207
|
tasks.select {|task|task.name == task_name}.first
|
208
208
|
end
|
209
209
|
|
210
|
+
#== display tasks progress
|
211
|
+
#=== Returns
|
212
|
+
# return progress
|
213
|
+
def progress
|
214
|
+
total_count = get_tasks.size
|
215
|
+
dones_count = get_dones.size
|
216
|
+
percent = total_count == 0 ? 0 : (dones_count.to_f / total_count.to_f * 100).round
|
217
|
+
prefix = "#{dones_count}/#{total_count}|"
|
218
|
+
done_bar = "="*(percent/10)
|
219
|
+
rest_bar = " "*(10-(percent/10))
|
220
|
+
progress_bar = "#{done_bar}>#{rest_bar}"
|
221
|
+
sufix = "|#{percent}%"
|
222
|
+
"#{prefix}#{progress_bar}#{sufix}"
|
223
|
+
end
|
224
|
+
|
210
225
|
private
|
211
226
|
def get_first_todo_name_if_nil_or_empty(task_name)
|
212
227
|
(task_name.nil? || task_name.empty?) ? get_todos.first.name : task_name
|
data/lib/tudu/version.rb
CHANGED
data/lib/tudu_core.rb
CHANGED
@@ -71,6 +71,13 @@ module Tudu
|
|
71
71
|
Tudu::Tasks.filter_tasks(Tudu::Tasks.get_dones, search_word).map(&:name)
|
72
72
|
end
|
73
73
|
|
74
|
+
#== display tasks progress
|
75
|
+
#=== Returns
|
76
|
+
# return progress
|
77
|
+
def progress
|
78
|
+
Tudu::Tasks.progress
|
79
|
+
end
|
80
|
+
|
74
81
|
def categorized_tasks(tasks, search_word)
|
75
82
|
ret = []
|
76
83
|
tasks = Tudu::Tasks.filter_tasks(Tudu::Tasks.get_tasks, search_word)
|
data/spec/tasks_spec.rb
CHANGED
@@ -796,4 +796,66 @@ describe Tudu::Tasks do
|
|
796
796
|
end
|
797
797
|
end
|
798
798
|
end
|
799
|
+
|
800
|
+
context :progress do
|
801
|
+
cases = [
|
802
|
+
{
|
803
|
+
case_no: 1,
|
804
|
+
case_title: "display progress",
|
805
|
+
todos: ["task5", "task6"],
|
806
|
+
doings: ["task3", "task4"],
|
807
|
+
dones: ["task1", "task2"],
|
808
|
+
expected: "2/6|===> |33%",
|
809
|
+
},
|
810
|
+
{
|
811
|
+
case_no: 2,
|
812
|
+
case_title: "display none progress",
|
813
|
+
todos: ["task3", "task4"],
|
814
|
+
doings: ["task1", "task2"],
|
815
|
+
dones: [],
|
816
|
+
expected: "0/4|> |0%",
|
817
|
+
},
|
818
|
+
{
|
819
|
+
case_no: 3,
|
820
|
+
case_title: "display complete progress",
|
821
|
+
todos: [],
|
822
|
+
doings: [],
|
823
|
+
dones: ["task1", "task2"],
|
824
|
+
expected: "2/2|==========>|100%",
|
825
|
+
},
|
826
|
+
]
|
827
|
+
|
828
|
+
cases.each do |c|
|
829
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
830
|
+
begin
|
831
|
+
case_before c
|
832
|
+
|
833
|
+
# -- given --
|
834
|
+
# nothing
|
835
|
+
|
836
|
+
# -- when --
|
837
|
+
actual = Tudu::Tasks.progress
|
838
|
+
|
839
|
+
# -- then --
|
840
|
+
ret = expect(actual).to eq(c[:expected])
|
841
|
+
ensure
|
842
|
+
case_after c
|
843
|
+
end
|
844
|
+
end
|
845
|
+
|
846
|
+
def case_before(c)
|
847
|
+
# implement each case before
|
848
|
+
Tudu::Core.new.init
|
849
|
+
File.open("./#{Tudu::Tasks::TUDU_DIR}/todos", "w") {|f|f.puts c[:todos].join("\n")}
|
850
|
+
File.open("./#{Tudu::Tasks::TUDU_DIR}/doings", "w") {|f|f.puts c[:doings].join("\n")}
|
851
|
+
File.open("./#{Tudu::Tasks::TUDU_DIR}/dones", "w") {|f|f.puts c[:dones].join("\n")}
|
852
|
+
end
|
853
|
+
|
854
|
+
def case_after(c)
|
855
|
+
# implement each case after
|
856
|
+
return unless File.exists? Tudu::Tasks::TUDU_DIR
|
857
|
+
FileUtils.rm_rf(Tudu::Tasks::TUDU_DIR)
|
858
|
+
end
|
859
|
+
end
|
860
|
+
end
|
799
861
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tudu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-12-
|
12
|
+
date: 2013-12-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
16
|
-
requirement: &
|
16
|
+
requirement: &21802584 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.18.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *21802584
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &21802272 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 2.14.1
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *21802272
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: simplecov
|
38
|
-
requirement: &
|
38
|
+
requirement: &21801960 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.8.2
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *21801960
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &21801684 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '1.3'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *21801684
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &21801456 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *21801456
|
69
69
|
description: Single person's minimum unit of task manager
|
70
70
|
email:
|
71
71
|
- tbpgr@tbpgr.jp
|