dooby 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1,51 +1,50 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  require 'rubygems'
3
- require 'rake'
3
+ require 'bundler'
4
4
 
5
5
  begin
6
- require 'jeweler'
7
- Jeweler::Tasks.new do |gem|
8
- gem.name = "dooby"
9
- gem.summary = %Q{A very simplistic command-line to-do list manager in Ruby}
10
- gem.description = %Q{With Dooby you can handle your to-do list or your notes in a simple way and through the command-line.}
11
- gem.email = "raf.magana@gmail.com"
12
- gem.homepage = "http://github.com/rafmagana/dooby"
13
- gem.authors = ["Rafael Magaña"]
14
- gem.add_development_dependency "shoulda", ">= 2.11.3"
15
- gem.add_development_dependency "mocha", ">= 0.9.8"
16
- gem.add_runtime_dependency('main', ">= 4.2.0")
17
- gem.add_runtime_dependency('colored', ">= 1.2")
18
- gem.add_runtime_dependency('highline', ">= 1.6.1")
19
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
20
- end
21
- Jeweler::GemcutterTasks.new
22
- rescue LoadError
23
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
24
11
  end
12
+ require 'rake'
25
13
 
26
- require 'rake/testtask'
27
- Rake::TestTask.new(:test) do |test|
28
- test.libs << 'lib' << 'test'
29
- test.pattern = 'test/**/test_*.rb'
30
- test.verbose = true
14
+ require 'jeweler'
15
+
16
+ Jeweler::Tasks.new do |gem|
17
+ gem.name = "dooby"
18
+ gem.summary = %Q{A very simplistic command-line to-do list manager in Ruby}
19
+ gem.description = %Q{Handle your to-do/notes list through the command line}
20
+ gem.email = "raf.magana@gmail.com"
21
+ gem.homepage = "http://github.com/rafmagana/dooby"
22
+ gem.authors = ["Rafael Magaña"]
23
+
24
+ gem.add_runtime_dependency('main', ">= 4.2.0")
25
+ gem.add_runtime_dependency('colored', ">= 1.2")
26
+ gem.add_runtime_dependency('highline', ">= 1.6.1")
27
+ gem.add_runtime_dependency('chronic', ">= 0.3.0")
28
+
29
+ gem.add_development_dependency "rspec", ">= 2.0.1"
30
+ gem.add_development_dependency "bundler", "~> 1.0.0"
31
+ gem.add_development_dependency "jeweler", "~> 1.5.0.pre5"
32
+ gem.add_development_dependency "rcov", ">= 0"
31
33
  end
34
+ Jeweler::RubygemsDotOrgTasks.new
32
35
 
33
- begin
34
- require 'rcov/rcovtask'
35
- Rcov::RcovTask.new do |test|
36
- test.libs << 'test'
37
- test.pattern = 'test/**/test_*.rb'
38
- test.verbose = true
39
- end
40
- rescue LoadError
41
- task :rcov do
42
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
43
- end
36
+ require 'rspec/core'
37
+ require 'rspec/core/rake_task'
38
+ RSpec::Core::RakeTask.new(:spec) do |spec|
39
+ spec.pattern = FileList['spec/**/*_spec.rb']
44
40
  end
45
41
 
46
- task :test => :check_dependencies
42
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
43
+ spec.pattern = 'spec/**/*_spec.rb'
44
+ spec.rcov = true
45
+ end
47
46
 
48
- task :default => :test
47
+ task :default => :spec
49
48
 
50
49
  require 'rake/rdoctask'
51
50
  Rake::RDocTask.new do |rdoc|
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
data/bin/dooby CHANGED
@@ -14,7 +14,7 @@ Main {
14
14
 
15
15
  ########################## DEFAULT #############################
16
16
  def run
17
- list = Dooby.current_list.list.tasks_by_tag(*Dooby::SPLITTABLE_TAGS)
17
+ list = Dooby.current_list.find.tasks_by_tag(*Dooby::SPLITTABLE_TAGS)
18
18
  if list
19
19
  say 'Showing all items...'.blue_on_white.bold
20
20
  puts list
@@ -34,15 +34,14 @@ Main {
34
34
 
35
35
  ########################## ADD #################################
36
36
  mode 'add' do
37
- description 'Creates a new task and adds it to the current todo list'
37
+ description 'Creates a new item and adds it to the current todo list'
38
38
  argument 'task_text'
39
39
  def run
40
40
  Dooby.current_list.add do |t|
41
41
  t.todo = params[:task_text].value
42
- t.hold!
43
42
  end
44
43
 
45
- puts 'Task added!'
44
+ puts 'Item added!'
46
45
  end
47
46
  end
48
47
 
@@ -50,18 +49,19 @@ Main {
50
49
  mode 'ilist' do
51
50
  description "Interactive Listing"
52
51
  def run
52
+ autocomp = Dooby.current_list.all_tags
53
53
  say "input #hashtag, @person, %project, :status or simple text"
54
54
 
55
- Dooby.cli_helper.keep_asking "> " do |what_to_show|
55
+ Dooby.cli_helper.keep_asking "> ", autocomp do |what_to_show|
56
56
  puts
57
- puts Dooby.current_list.list(what_to_show.split(' ')).tasks_by_tag(*Dooby::SPLITTABLE_TAGS)
57
+ puts Dooby.current_list.find(what_to_show.split(' ')).tasks_by_tag(*Dooby::SPLITTABLE_TAGS)
58
58
  puts
59
59
  end
60
60
  end
61
61
  end
62
62
 
63
63
  mode 'list' do
64
- description 'Lists @people, #tags, %projects or tasks (default)'
64
+ description 'Lists @people, #tags, %projects or items (default)'
65
65
 
66
66
  argument('what_to_show'){
67
67
  arity -1 # zero or more arguments
@@ -69,7 +69,7 @@ Main {
69
69
 
70
70
  def run
71
71
  what_to_show = params[:what_to_show].values
72
- list = Dooby.current_list.list(what_to_show).tasks_by_tag(*Dooby::SPLITTABLE_TAGS)
72
+ list = Dooby.current_list.find(what_to_show).tasks_by_tag(*Dooby::SPLITTABLE_TAGS)
73
73
  if list
74
74
  if what_to_show.empty?
75
75
  say 'Showing all items...'.blue_on_white.bold
@@ -102,7 +102,7 @@ Main {
102
102
  end
103
103
 
104
104
  def handle_tag_lists(tag, error_message)
105
- list = Dooby.current_list.list tag
105
+ list = Dooby.current_list.find tag
106
106
  if list
107
107
  puts list
108
108
  else
@@ -112,11 +112,11 @@ Main {
112
112
 
113
113
  ########################## DELETE ###############################
114
114
  mode 'flush' do
115
- description 'Deletes all the tasks'
115
+ description 'Deletes all the items'
116
116
  def run
117
117
  if Dooby.cli_helper.flush?
118
118
  Dooby.current_list.flush!
119
- say "All the task were deleted!".red.bold
119
+ say "All the items were deleted!".red.bold
120
120
  else
121
121
  say "Keep doing things!".green.bold
122
122
  end
@@ -138,12 +138,12 @@ Main {
138
138
  mode 'delete' do
139
139
  def run
140
140
  unless Dooby.current_list.tasks?
141
- puts 'No tasks to delete'.red
141
+ puts 'No items to delete'.red
142
142
  exit
143
143
  end
144
144
 
145
145
  autocomp = Dooby.current_list.tasks.keys
146
- question = 'Tasky ID '.red.bold + '> '
146
+ question = 'Item ID '.red.bold + '> '
147
147
 
148
148
  Dooby.cli_helper.keep_asking question, autocomp do |task_id|
149
149
 
@@ -151,7 +151,7 @@ Main {
151
151
  say task_id + ' deleted...'
152
152
  exit
153
153
  else
154
- say "Don't try to fool #{'Dooby'.red}, she knows such task doesn't exists"
154
+ say "Don't try to fool #{'Dooby'.red}, she knows such item doesn't exists"
155
155
  end
156
156
 
157
157
  end
@@ -160,16 +160,16 @@ Main {
160
160
  end
161
161
 
162
162
  mode 'bulkdelete' do
163
- description "Deletes all the tasks that contains the specified tags.\n $ dooby bulkdelete %mypage @jim \n It will only delete by tag, not by plain text"
163
+ description "Deletes all the items that contains the specified tags.\n $ dooby bulkdelete %mypage @jim \n It will only delete by tag, not by plain text"
164
164
  def run
165
165
 
166
166
  unless Dooby.current_list.tasks?
167
- puts 'No tasks to delete'.red
167
+ puts 'No items to delete'.red
168
168
  exit
169
169
  end
170
170
 
171
171
  autocomp = Dooby.current_list.all_tags
172
- question = "What do you want to bulk delete? (#{Dooby::SPECIAL_TAGS.join(', ')} allowed) \n> "
172
+ question = "What do you want to bulk delete?\n> "
173
173
 
174
174
  Dooby.cli_helper.keep_asking question, autocomp do |tags|
175
175
  unless tags.empty?
@@ -186,7 +186,7 @@ Main {
186
186
  def run
187
187
 
188
188
  autocomp = Dooby.current_list.tasks.keys
189
- question = 'Tasky ID '.blue.bold + '> '
189
+ question = 'Item ID '.blue.bold + '> '
190
190
 
191
191
  current_task_id = ''
192
192
 
@@ -198,7 +198,7 @@ Main {
198
198
  autocomp = [todo_to_edit]
199
199
  break
200
200
  else
201
- puts "Task doesn't exist".red.bold
201
+ puts "Item doesn't exist".red.bold
202
202
  exit
203
203
  end
204
204
 
@@ -219,5 +219,21 @@ Main {
219
219
 
220
220
  end
221
221
  end
222
-
222
+
223
+ ########################## GIT #################################
224
+ mode 'commit' do
225
+ current_item = Dooby.current_list.current_item
226
+ if current_item
227
+ result = %x[git commit -m "#{current_item}"]
228
+ if result.include? current_item
229
+ puts "The commit message was #{current_item.yellow}".blue
230
+ else
231
+ puts 'Nothing added to commit'.red if result.include? 'added to commit'
232
+ end
233
+ exit
234
+ else
235
+ puts "First you have to tag an item with #{Dooby::CURRENT_ITEM_TAG.magenta}".red
236
+ exit
237
+ end
238
+ end
223
239
  }
@@ -5,49 +5,59 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{dooby}
8
- s.version = "0.2.0"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Rafael Maga\303\261a"]
12
- s.date = %q{2010-10-28}
12
+ s.date = %q{2010-11-06}
13
13
  s.default_executable = %q{dooby}
14
- s.description = %q{With Dooby you can handle your to-do list or your notes in a simple way and through the command-line.}
14
+ s.description = %q{Handle your to-do/notes list through the command line}
15
15
  s.email = %q{raf.magana@gmail.com}
16
16
  s.executables = ["dooby"]
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE",
19
- "README.md"
19
+ "README.md"
20
20
  ]
21
21
  s.files = [
22
22
  ".document",
23
- ".gitignore",
24
- "Gemfile",
25
- "Gemfile.lock",
26
- "LICENSE",
27
- "README.md",
28
- "Rakefile",
29
- "VERSION",
30
- "bin/dooby",
31
- "dooby.gemspec",
32
- "lib/dooby.rb",
33
- "lib/dooby/base.rb",
34
- "lib/dooby/cli_helper.rb",
35
- "lib/dooby/core_ext.rb",
36
- "lib/dooby/exceptions.rb",
37
- "lib/dooby/formatter.rb",
38
- "lib/dooby/list.rb",
39
- "lib/dooby/task.rb",
40
- "test/helper.rb",
41
- "test/test_dooby.rb"
23
+ ".rspec",
24
+ "CHANGELOG.md",
25
+ "Gemfile",
26
+ "Gemfile.lock",
27
+ "LICENSE",
28
+ "README.md",
29
+ "Rakefile",
30
+ "VERSION",
31
+ "bin/dooby",
32
+ "dooby.gemspec",
33
+ "lib/dooby.rb",
34
+ "lib/dooby/base.rb",
35
+ "lib/dooby/cli_helper.rb",
36
+ "lib/dooby/config.rb",
37
+ "lib/dooby/core_ext.rb",
38
+ "lib/dooby/dates_helper.rb",
39
+ "lib/dooby/exceptions.rb",
40
+ "lib/dooby/list.rb",
41
+ "lib/dooby/status_generator.rb",
42
+ "lib/dooby/task.rb",
43
+ "spec/dooby_module_spec.rb",
44
+ "spec/list_spec.rb",
45
+ "spec/spec_helper.rb",
46
+ "spec/task_spec.rb",
47
+ "test/helper.rb",
48
+ "test/test_dooby.rb"
42
49
  ]
43
50
  s.homepage = %q{http://github.com/rafmagana/dooby}
44
- s.rdoc_options = ["--charset=UTF-8"]
45
51
  s.require_paths = ["lib"]
46
52
  s.rubygems_version = %q{1.3.7}
47
53
  s.summary = %q{A very simplistic command-line to-do list manager in Ruby}
48
54
  s.test_files = [
55
+ "spec/dooby_module_spec.rb",
56
+ "spec/list_spec.rb",
57
+ "spec/spec_helper.rb",
58
+ "spec/task_spec.rb",
49
59
  "test/helper.rb",
50
- "test/test_dooby.rb"
60
+ "test/test_dooby.rb"
51
61
  ]
52
62
 
53
63
  if s.respond_to? :specification_version then
@@ -55,24 +65,45 @@ Gem::Specification.new do |s|
55
65
  s.specification_version = 3
56
66
 
57
67
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
58
- s.add_development_dependency(%q<shoulda>, [">= 2.11.3"])
59
- s.add_development_dependency(%q<mocha>, [">= 0.9.8"])
68
+ s.add_development_dependency(%q<rspec>, ["~> 2.0.0"])
69
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
70
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.0.pre5"])
71
+ s.add_development_dependency(%q<rcov>, [">= 0"])
60
72
  s.add_runtime_dependency(%q<main>, [">= 4.2.0"])
61
73
  s.add_runtime_dependency(%q<colored>, [">= 1.2"])
62
74
  s.add_runtime_dependency(%q<highline>, [">= 1.6.1"])
75
+ s.add_runtime_dependency(%q<chronic>, [">= 0.3.0"])
76
+ s.add_development_dependency(%q<rspec>, [">= 2.0.1"])
77
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
78
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.0.pre5"])
79
+ s.add_development_dependency(%q<rcov>, [">= 0"])
63
80
  else
64
- s.add_dependency(%q<shoulda>, [">= 2.11.3"])
65
- s.add_dependency(%q<mocha>, [">= 0.9.8"])
81
+ s.add_dependency(%q<rspec>, ["~> 2.0.0"])
82
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
83
+ s.add_dependency(%q<jeweler>, ["~> 1.5.0.pre5"])
84
+ s.add_dependency(%q<rcov>, [">= 0"])
66
85
  s.add_dependency(%q<main>, [">= 4.2.0"])
67
86
  s.add_dependency(%q<colored>, [">= 1.2"])
68
87
  s.add_dependency(%q<highline>, [">= 1.6.1"])
88
+ s.add_dependency(%q<chronic>, [">= 0.3.0"])
89
+ s.add_dependency(%q<rspec>, [">= 2.0.1"])
90
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
91
+ s.add_dependency(%q<jeweler>, ["~> 1.5.0.pre5"])
92
+ s.add_dependency(%q<rcov>, [">= 0"])
69
93
  end
70
94
  else
71
- s.add_dependency(%q<shoulda>, [">= 2.11.3"])
72
- s.add_dependency(%q<mocha>, [">= 0.9.8"])
95
+ s.add_dependency(%q<rspec>, ["~> 2.0.0"])
96
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
97
+ s.add_dependency(%q<jeweler>, ["~> 1.5.0.pre5"])
98
+ s.add_dependency(%q<rcov>, [">= 0"])
73
99
  s.add_dependency(%q<main>, [">= 4.2.0"])
74
100
  s.add_dependency(%q<colored>, [">= 1.2"])
75
101
  s.add_dependency(%q<highline>, [">= 1.6.1"])
102
+ s.add_dependency(%q<chronic>, [">= 0.3.0"])
103
+ s.add_dependency(%q<rspec>, [">= 2.0.1"])
104
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
105
+ s.add_dependency(%q<jeweler>, ["~> 1.5.0.pre5"])
106
+ s.add_dependency(%q<rcov>, [">= 0"])
76
107
  end
77
108
  end
78
109
 
@@ -1,26 +1,25 @@
1
1
  $:.unshift(File.dirname(__FILE__))
2
2
 
3
- %w[fileutils digest/sha1 colored readline highline/import].each { |f| require "#{f}" }
3
+ #dependencies
4
+ %w[fileutils
5
+ digest/sha1
6
+ colored
7
+ readline
8
+ highline/import
9
+ chronic].each { |f| require "#{f}" }
4
10
 
5
- %w[exceptions
11
+ #dooby
12
+ %w[config
13
+ exceptions
6
14
  core_ext
7
15
  base
16
+ dates_helper
8
17
  list
9
- formatter
18
+ status_generator
10
19
  task
11
20
  cli_helper].each { |f| require "dooby/#{f}" }
12
21
 
13
22
  module Dooby
14
-
15
- DOOBY_DIR = '.dooby'
16
- CURRENT_TODO_LIST_FILE = "#{DOOBY_DIR}/list.yml"
17
-
18
- DEFAULT_STATUS = :hold
19
-
20
- AVAILABLE_STATUSES = [:hold, :doing, :done]
21
- SPECIAL_TAGS = %w[@ # %]
22
- SPLITTABLE_TAGS = %w[#today #urgent]
23
-
24
23
  def self.init
25
24
  unless File.exist? CURRENT_TODO_LIST_FILE
26
25
  FileUtils.mkdir DOOBY_DIR
@@ -1,7 +1,7 @@
1
1
  module Dooby
2
2
  class CLIHelper
3
3
 
4
- DEL_TASKS = "Sure you want to delete all the taks???".red_on_white.bold
4
+ DEL_TASKS = "Sure you want to delete all the items???".red_on_white.bold
5
5
  TRASH = "Sure you want to delete the .dooby directory???".red_on_white.bold
6
6
 
7
7
  def self.flush?
@@ -12,13 +12,16 @@ module Dooby
12
12
  agree TRASH, true
13
13
  end
14
14
 
15
- def self.keep_asking(question, autocompletion = nil)
15
+ def self.keep_asking(question, autocompletion = [])
16
+ Readline.basic_word_break_characters =
17
+ Readline.basic_word_break_characters.delete("@")
16
18
  Readline.completion_append_character = " "
17
19
  Readline.completion_proc = proc { |s| autocompletion.grep( /^#{Regexp.escape(s)}/ ) }
18
20
 
19
21
  stty_save = `stty -g`.chomp
20
22
 
21
23
  while value = Readline.readline(question, true)
24
+ exit if value == 'q'
22
25
  yield value.chomp.strip
23
26
  end
24
27