to-do 1.2.4 → 1.2.5

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/Gemfile CHANGED
@@ -6,7 +6,7 @@ source "http://rubygems.org"
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  gem "shoulda", ">= 0"
9
- gem "sqlite3", ">=0"
9
+ gem "sequel", ">=3.12"
10
10
  gem "bundler", ">= 1.0.0"
11
11
  gem "jeweler", "~> 1.8.4"
12
12
  gem "simplecov", ">= 0"
data/README.md CHANGED
@@ -1,16 +1,17 @@
1
- #to-do 1.2.4
1
+ #to-do 1.2.5
2
2
 
3
3
  A simple command line todo application written in Ruby.
4
4
 
5
- ##What's new 1.2.4
6
- * Switch from yaml to sqlite for data persistence
7
- * Layout uptdates
5
+ ##What's new 1.2.5
6
+ * Cleaned up the code by using the gem Sequel for the sqlite things
8
7
  * Bug Fixes
9
8
 
10
9
  ##What's new in 1.2
11
10
  * Remove a list
12
11
  * Better usage messages
13
12
  * Better documentation using YARD
13
+ * Better layout
14
+ * SQlite backend
14
15
 
15
16
  ##Install
16
17
  gem install to-do
@@ -101,7 +102,6 @@ A simple command line todo application written in Ruby.
101
102
  * Tags
102
103
  * Due Dates
103
104
  * Tab Completion
104
- * SQLite Backend
105
105
  * Sorting
106
106
  * Priorites
107
107
  * Reorganizing
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.4
1
+ 1.2.5
data/bin/todo CHANGED
@@ -1,9 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- if File.symlink? __FILE__
4
- require File.join(File.dirname(File.readlink(__FILE__)),'..','lib','to-do')
3
+ current_directory = if File.symlink? __FILE__
4
+ File.dirname File.readlink __FILE__
5
5
  else
6
- require File.join(File.dirname(__FILE__),'..','lib','to-do')
6
+ File.dirname __FILE__
7
7
  end
8
8
 
9
+ require File.join(File.expand_path('..',current_directory),'lib','to-do')
10
+
9
11
  Todo::CLI.parse
data/lib/to-do/cli.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  require 'optparse'
2
2
  require 'yaml'
3
3
  require 'colorize'
4
- require 'sqlite3'
5
4
 
6
5
  module Todo
7
6
  # CLI is the module that contains the methods to display the list as well as
@@ -10,7 +9,7 @@ module Todo
10
9
  extend self
11
10
 
12
11
  # The database
13
- DATABASE = SQLite3::Database.new(Todo::Config[:task_database])
12
+ DATABASE = Sequel.sqlite Todo::Config[:task_database]
14
13
 
15
14
  # The option flags
16
15
  OPTIONS = {
@@ -32,17 +31,15 @@ module Todo
32
31
  # Completed: 2/4
33
32
  # 3. Task 3
34
33
  # 4. Task 4
35
- #
36
- # @param [List] list the list you want to display.
37
- def display list = []
38
- tasks = DATABASE.execute "SELECT Task_number, Name, Completed FROM Tasks WHERE Id IN
39
- (SELECT Task_id FROM Task_list WHERE List_id IN
40
- (SELECT Id FROM Lists Where Lists.Name='" + Config[:working_list_name]+"'))"
41
- tasks.sort!{|x, y| x[0] <=> y[0]}
42
- list = DATABASE.execute("SELECT Total FROM Lists WHERE Name = '" + Config[:working_list_name] + "'")
43
- count = list[0] ? list[0][0] : 0
44
- completed_count = 0
45
- Config[:width].times do
34
+ def display
35
+ tasks = DATABASE[:Tasks].join(:Task_list, :Tasks__id => :Task_list__Task_id).join(
36
+ :Lists, :Lists__id => :Task_list__List_id).select(:Tasks__Task_number, :Tasks__Name,
37
+ :Tasks__Completed).filter(:Lists__Name => Config[:working_list_name])
38
+ tasks = tasks.order(:Task_number)
39
+ list = DATABASE[:Lists][:Name=>Config[:working_list_name]]
40
+ count = list.nil? ? 0 : list[:Total]
41
+ completed_count = tasks.filter(:Completed=>1).count
42
+ Config[:width].times do
46
43
  print "*".colorize(:light_red)
47
44
  end
48
45
  puts
@@ -50,20 +47,16 @@ module Todo
50
47
  split_name.each do |line|
51
48
  puts line.center(Config[:width]).colorize(:light_cyan)
52
49
  end
53
- completed_count = 0
54
- Config[:width].times do
50
+ Config[:width].times do
55
51
  print "*".colorize(:light_red)
56
52
  end
57
53
  puts
58
54
  puts
59
55
  puts "Todo:".colorize(:light_green)
60
56
  tasks.each do |task|
61
- if task[2] == 1
62
- completed_count +=1
63
- next
64
- end
65
- printf "%4d. ".to_s.colorize(:light_yellow), task[0]
66
- split_v = split task[1], Config[:width] - 6
57
+ next if task[:Completed] == 1
58
+ printf "%4d. ".to_s.colorize(:light_yellow), task[:Task_number]
59
+ split_v = split task[:Name], Config[:width] - 6
67
60
  puts split_v[0]
68
61
  split_v.shift
69
62
  split_v.each do |line|
@@ -73,9 +66,9 @@ module Todo
73
66
  print "\nCompleted:".colorize(:light_green)
74
67
  printf "%#{Config[:width]+4}s\n", "#{completed_count}/#{count}".colorize(:light_cyan)
75
68
  tasks.each do |task|
76
- next if task[2] == 0
77
- printf "%4d. ".to_s.colorize(:light_yellow), task[0]
78
- split_v = split task[1], Config[:width]-6
69
+ next if task[:Completed] == 0
70
+ printf "%4d. ".to_s.colorize(:light_yellow), task[:Task_number]
71
+ split_v = split task[:Name], Config[:width]-6
79
72
  puts split_v[0]
80
73
  split_v.shift
81
74
  split_v.each do |line|
@@ -183,6 +176,8 @@ module Todo
183
176
  when "remove", "r"
184
177
  if ARGV.count > 1
185
178
  Tasks.clear true, ARGV[1..-1].map{|word| word.capitalize}.join(' ')
179
+ else
180
+ puts "Usage todo remove <list name>"
186
181
  end
187
182
  else
188
183
  puts "Invalid command. See todo -h for help."
@@ -245,3 +240,4 @@ module Todo
245
240
 
246
241
  end
247
242
  end
243
+
@@ -0,0 +1,50 @@
1
+ require 'sequel'
2
+
3
+ Sequel.migration do
4
+ up do
5
+ if !table_exists? :Tasks
6
+ create_table :Tasks do
7
+ primary_key :Id
8
+ Integer :Task_number
9
+ String :Text
10
+ Integer :Completed
11
+ end
12
+ end
13
+ if !table_exists? :Lists
14
+ create_table :Lists do
15
+ primary_key :Id
16
+ String :Name
17
+ Integer :Total
18
+ end
19
+ end
20
+ if !table_exists? :Task_list
21
+ create_table :Task_list do
22
+ Integer :Task_id
23
+ Intager :List_id
24
+ end
25
+ end
26
+ end
27
+ down do
28
+ if table_exists? :Tasks
29
+ create_table :Tasks do
30
+ primary_key :Id
31
+ Integer :Task_number
32
+ String :Text
33
+ Integer :Completed
34
+ end
35
+ end
36
+ if table_exists? :Lists
37
+ create_table :Lists do
38
+ primary_key :Id
39
+ String :Name
40
+ Integer :Total
41
+ end
42
+ end
43
+ if table_exists? :Task_list
44
+ create_table :Task_list do
45
+ Integer :Task_id
46
+ Intager :List_id
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,160 @@
1
+ require 'yaml'
2
+ require 'fileutils'
3
+ module Todo
4
+
5
+ # The Class that represents a list of tasks
6
+ class List
7
+ attr_accessor :tasks, :completed_tasks, :count, :completed_count, :name
8
+
9
+ # Creates a new list and sets it to be the working list
10
+ #
11
+ # @param [String] name the name of the list
12
+ def initialize name
13
+ @tasks = Hash.new
14
+ @completed_tasks = Hash.new
15
+ @count = 0
16
+ @completed_count = 0
17
+ @name = name
18
+ if !File.exists? Config[:lists_directory]
19
+ Dir.mkdir(Config[:lists_directory])
20
+ end
21
+ update
22
+ Config[:working_list_name] = name.downcase.gsub(/ /, '_')
23
+ Config[:working_list_exists] = true
24
+ Config.write
25
+ puts "Created List #{name}."
26
+ end
27
+
28
+ # Updates the yaml file
29
+ def update
30
+ path = File.join(Config[:lists_directory], @name.downcase.gsub(/ /, '_') +'.yml')
31
+ File.open(path, 'w') do |fh|
32
+ fh.puts(self.to_yaml)
33
+ end
34
+ end
35
+
36
+ # Adds the tast to the list
37
+ #
38
+ # @param [String] task the task to add to the list
39
+ def add task
40
+ @count+=1
41
+ @tasks[@count] = task
42
+ puts "Added task #{task}."
43
+ update
44
+ end
45
+
46
+ # finish the task. task is either a case insensitive task on the list or
47
+ # the task number. Prints out either the task is not in the list or that i
48
+ # succesfully finished the task
49
+ #
50
+ # @param task either a task number or task name to finish
51
+ # @param [Bool] is_num if the task param represents the task number, true.
52
+ # false if it is the task name
53
+ def finish task, is_num
54
+ if is_num
55
+ if !@tasks[task.to_i].nil?
56
+ @completed_tasks[task.to_i] = @tasks[task.to_i]
57
+ @tasks.delete(task.to_i)
58
+ @completed_count+=1
59
+ @completed_tasks = Hash[@completed_tasks.sort]
60
+ puts "Finished #{@completed_tasks[task.to_i]}."
61
+ else
62
+ puts "Task \##{task} not in list."
63
+ end
64
+ else
65
+ hash = Hash.new
66
+ @tasks.each do |k,v|
67
+ hash[k] = v.downcase
68
+ end
69
+ if hash.value?(task.downcase)
70
+ num = hash.key(task.downcase)
71
+ @completed_tasks[num] = @tasks[num]
72
+ @tasks.delete(num)
73
+ @completed_count+=1
74
+ @completed_tasks = Hash[@completed_tasks.sort]
75
+ puts "Finished #{@completed_tasks[num]}."
76
+ else
77
+ puts "Task #{task} is not in list."
78
+ end
79
+ end
80
+ update
81
+ end
82
+
83
+ # undos finishing a task. task is either a case insensitive task on the list or
84
+ # the task number. Prints out either the task is not in the list or that i
85
+ # succesfully undoed finished the task
86
+ #
87
+ # @param task either a task number or task name to finish
88
+ # @param [Bool] is_num if the task param represents the task number, true.
89
+ # false if it is the task name
90
+ def undo task, is_num
91
+ if is_num
92
+ if !@completed_tasks[task.to_i].nil?
93
+ @tasks[task.to_i] = @completed_tasks[task.to_i]
94
+ @completed_tasks.delete(task.to_i)
95
+ @completed_count-=1
96
+ @tasks = Hash[@tasks.sort]
97
+ puts "Undo completeing #{@tasks[task.to_i]}."
98
+ else
99
+ puts "Task \##{task} not in list."
100
+ end
101
+ else
102
+ hash = Hash.new
103
+ @completed_tasks.each do |k,v|
104
+ hash[k] = v.downcase
105
+ end
106
+ if hash.value?(task.downcase)
107
+ num = hash.key(task.downcase)
108
+ @tasks[num] = @completed_tasks[num]
109
+ @completed_tasks.delete(num)
110
+ @completed_count-=1
111
+ @tasks = Hash[@tasks.sort]
112
+ puts "Undo completeing #{@tasks[num]}."
113
+ else
114
+ puts "Task #{task} is not in list."
115
+ end
116
+ end
117
+ update
118
+ end
119
+
120
+ # clears just the completed tasks
121
+ def clear_completed
122
+ @completed_tasks = Hash.new
123
+ update
124
+ end
125
+
126
+ # clears the task in the list
127
+ #
128
+ # @param [Bool] clear_all if true, clears all completed and uncompleted tasks
129
+ # and resets the count. if false, just clears the completed tasks
130
+ def clear clear_all
131
+ clear_completed
132
+ if clear_all
133
+ @tasks = Hash.new
134
+ @completed_count = 0
135
+ @count = 0
136
+ puts "Cleared list."
137
+ else
138
+ puts "Cleared completed tasks."
139
+ end
140
+ update
141
+ end
142
+
143
+ # Class method that removes a list from the your lists.
144
+ #
145
+ # @param [string] name name of the list that you are trying to remove
146
+ def self.remove name
147
+ underscore_name = name.downcase.gsub(/ /, '_')
148
+ begin
149
+ FileUtils.rm File.join(Config[:lists_directory], underscore_name +'.yml')
150
+ puts "Removed list #{name}"
151
+ rescue
152
+ puts "List doesn't exist"
153
+ end
154
+ if underscore_name == Config[:working_list_name]
155
+ Config[:working_list_exists] = false
156
+ end
157
+ end
158
+ end
159
+ end
160
+
data/lib/to-do/tasks.rb CHANGED
@@ -1,27 +1,25 @@
1
- require File.join(File.dirname(__FILE__), 'config')
2
- require 'fileutils'
3
- require 'sqlite3'
4
1
  module Todo
5
2
 
6
3
  # The module that contains methods for manipulating the database
7
4
  module Tasks
8
5
  extend self
9
- DATABASE = SQLite3::Database.new(Todo::Config[:task_database])
6
+ DATABASE = Sequel.sqlite Todo::Config[:task_database]
10
7
 
11
8
  # Adds the tast to the list
12
9
  #
13
10
  # @param [String] task the task to add to the list
14
11
  def add task
15
- list = DATABASE.execute("SELECT Total, Id FROM Lists WHERE Name = '" + Config[:working_list_name] + "'")
12
+ list = DATABASE[:Lists].select(:Total, :Id)[:Name=>Todo::Config[:working_list_name]]
16
13
  if !list
17
- Database.execute("INSERT INTO Lists (Name, Total) VALUES('" + Config[:working_list_name] + "', 0)")
14
+ DATABASE[:Lists] << {:Name => Config[:working_list_name], :Total => 0}
15
+ list = DATABASE[:Lists].select(:Total, :Id)[:Name=>Todo::Config[:working_list_name]]
18
16
  end
19
- count = list ? list[0][0]+1 : 1
20
- DATABASE.execute "INSERT INTO Tasks (Task_number, Name, Completed) VALUES('" + count.to_s + "', '" + task + "', 0)"
21
- list_id = list[0][1]
22
- task_id = DATABASE.last_insert_row_id
23
- DATABASE.execute "INSERT INTO Task_list VALUES(" + task_id.to_s + ", " + list_id.to_s + ")"
24
- DATABASE.execute "UPDATE Lists SET Total="+ count.to_s + " WHERE Id = " + list_id.to_s
17
+ count = list[:Total]+1
18
+ DATABASE[:Tasks] << {:Task_number => count, :Name => task, :Completed => 0}
19
+ list_id = list[:Id]
20
+ task_id = DATABASE[:Tasks][:Name=>task][:Id]
21
+ DATABASE[:Task_list] << {:Task_id => task_id, :List_id => list_id}
22
+ DATABASE[:Lists].filter(:Id => list_id).update(:Total => count)
25
23
  end
26
24
 
27
25
  # finish the task. task is either a case insensitive task on the list or
@@ -51,12 +49,12 @@ module Todo
51
49
  # @param completed [Integer] 1 if clearing completed tasks, 0 if clearing
52
50
  # Uncompleted tasks
53
51
  def clear_each completed ,list_name
54
- tasks = DATABASE.execute("SELECT Id from Tasks WHERE Id IN
55
- (SELECT Task_ID FROM Task_list WHERE List_Id IN
56
- (SELECT Id FROM Lists WHERE Name='"+list_name+"' AND Tasks.Completed ="+ completed.to_s+ "))")
52
+ tasks = DATABASE[:Tasks].join(:Task_list, :Tasks__id => :Task_list__Task_id).join(
53
+ :Lists, :Lists__id => :Task_list__List_id).select(:Tasks__Id).filter(
54
+ :Lists__Name => Config[:working_list_name]).filter(:Tasks__Completed => completed)
57
55
  tasks.each do |task|
58
- DATABASE.execute("DELETE FROM Task_list WHERE Task_id=" + task[0].to_s)
59
- DATABASE.execute("DELETE FROM Tasks WHERE Id=" + task[0].to_s)
56
+ DATABASE[:Task_list].filter(:Task_id => task[:Id]).delete
57
+ DATABASE[:Tasks].filter(:Id => task[:Id]).delete
60
58
  end
61
59
  end
62
60
 
@@ -68,8 +66,8 @@ module Todo
68
66
  clear_each 1, list_name
69
67
  if clear_all
70
68
  clear_each 0, list_name
71
- DATABASE.execute("UPDATE Lists SET Total = 0 WHERE Name = '" + list_name +"'")
72
- DATABASE.execute("DELETE FROM Lists WHERE Name = '" + list_name + "'")
69
+ DATABASE[:Lists].filter(:Name => list_name).update(:Total => 0)
70
+ DATABASE[:Lists].filter(:Name => list_name).delete
73
71
  puts "Cleared all tasks in #{list_name}"
74
72
  else
75
73
  puts "Cleared completed tasks in #{Config[:working_list_name]}"
@@ -84,26 +82,26 @@ module Todo
84
82
  # @param initial [Integer] 0 if you are finishing a task, 1 if you are undoing a task
85
83
  # @param final [Integer] 1 if you are finishing a task, 0 if you ara undoing a task
86
84
  def finish_undo task , is_num, initial, final
87
- list = DATABASE.execute("SELECT Id FROM Lists WHERE Name = '" + Config[:working_list_name] + "'")
88
- list_id = list[0][0]
89
- names = DATABASE.execute("SELECT * from Tasks WHERE Id IN
90
- (SELECT Task_ID FROM Task_list WHERE List_Id IN
91
- (SELECT Id FROM Lists WHERE Name='"+Config[:working_list_name]+"' AND Tasks.Completed ="+ initial.to_s+"))")
85
+ list_id = DATABASE[:Lists][:Name => Config[:working_list_name]][:Id]
86
+ names =DATABASE[:Tasks].join(:Task_list, :Tasks__Id => :Task_list__Task_Id).join(
87
+ :Lists, :Lists__Id => :Task_list__List_id).select(:Tasks__Id, :Tasks__Task_number,
88
+ :Tasks__Name).filter(:Lists__Name => Config[:working_list_name]).filter(
89
+ :Tasks__Completed => initial)
92
90
  if is_num
93
- if names.map{|t| t[1]}.include? task.to_i
94
- task_array = names.find{|t| t[1] == task.to_i}
95
- DATABASE.execute "Update Tasks SET Completed="+final.to_s+ " WHERE Id=" + task_array[0].to_s
91
+ found_task = names[:Task_number => task]
92
+ if found_task
93
+ DATABASE[:Tasks].filter(:Id => found_task[:Id]).update(:Completed => final)
96
94
  else
97
95
  puts "Task ##{task} is not in the list."
98
96
  end
99
97
  else
100
- if names.map{|t| t[2].downcase}.include? task.downcase
101
- task_array = names.find{|t| t[2].downcase == task.downcase}
102
- DATABASE.execute "Update Tasks SET Completed="+final.to_s+ " WHERE Id=" + task_array[0].to_s
98
+ found_task = names[:Tasks__Name.downcase => task.downcase]
99
+ if found_task
100
+ DATABASE[:Tasks].filter(:Id => found_task[:Id]).update(:Completed => final)
103
101
  else
104
- puts "Task #{task} is not in the list."
102
+ puts "Task '#{task}' is not in the list."
105
103
  end
106
104
  end
107
105
  end
108
106
  end
109
- end
107
+ end
data/lib/to-do.rb CHANGED
@@ -1,42 +1,40 @@
1
- require 'sqlite3'
1
+ require 'sequel'
2
+ require 'sequel/extensions/migration'
2
3
  require File.join(File.dirname(__FILE__), 'to-do', 'config')
4
+ require File.join(File.dirname(__FILE__), 'to-do', 'old', 'list')
3
5
  if !File.exists?(File.join(ENV['HOME'], '.to-do'))
4
6
  Dir.mkdir(File.join(ENV['HOME'], '.to-do'))
5
7
  Todo::Config.write
6
8
  end
7
9
 
8
- # If the Database doesn't exist, create it
9
- if !File.exists?(Todo::Config[:task_database])
10
- Todo::Config.write
11
- database = SQLite3::Database.new(Todo::Config[:task_database])
12
- database.execute "CREATE TABLE Tasks(Id INTEGER PRIMARY KEY, Task_number INTEGER, Name TEXT, Completed INTEGER)"
13
- database.execute "CREATE TABLE Lists(Id INTEGER PRIMARY KEY, Name TEXT, Total INTEGER)"
14
- database.execute "CREATE TABLE Task_list(Task_id INTEGER, List_id INTEGER)"
10
+ database = Sequel.sqlite Todo::Config[:task_database]
11
+
12
+ # Migrate the database to the latest version
13
+ Sequel::Migrator.apply(database, File.join(File.dirname(__FILE__),'to-do', 'dbmigrations'))
15
14
 
16
- # If you have existing lists from earlier versions stored in YAML, stick them
17
- # in the sqlite database
18
- if File.exists?(File.join(ENV['HOME'], '.to-do', 'lists'))
19
- Dir.chdir(File.join(ENV['HOME'], '.to-do', 'lists')) do
20
- lists = Dir.entries "."
21
- lists.each do |file|
22
- next if file == "." or file == ".."
23
- list_object = YAML.load_file(file)
24
- database.execute "INSERT INTO Lists (Name, Total) VALUES('" + list_object.name + "', " + list_object.count.to_s + ")"
25
- list_id = database.last_insert_row_id
26
- list_object.tasks.each do |num, task|
27
- database.execute "INSERT INTO Tasks (Task_number, Name, Completed) VALUES('" + num.to_s + "', '" + task + "', 0)"
28
- task_id = database.last_insert_row_id
29
- database.execute "INSERT INTO Task_list VALUES(" + task_id.to_s + ", " + list_id.to_s + ")"
30
- end
31
- list_object.completed_tasks.each do |num, task|
32
- database.execute "INSERT INTO Tasks (Task_number, Name, Completed) VALUES('" + num.to_s + "', '" + task + "', 1)"
33
- task_id = database.last_insert_row_id
34
- database.execute "INSERT INTO Task_list VALUES(" + task_id.to_s + ", " + list_id.to_s + ")"
35
- end
15
+ # If a lists file exists from back when we were using YAML populate the database with that information
16
+ if File.exists?(File.join(ENV['HOME'], '.to-do', 'lists')) && database[:Lists].empty?
17
+ Dir.chdir(File.join(ENV['HOME'], '.to-do', 'lists')) do
18
+ lists = Dir.entries "."
19
+ lists.each do |file|
20
+ next if file == "." or file == ".."
21
+ list_object = YAML.load_file(file)
22
+ database[:Lists].insert(:Name => list_object.name, :Total => list_object.count)
23
+ list_id = database[:Lists].count
24
+ list_object.tasks.each do |num, task|
25
+ database[:Tasks].insert(:Task_number => num.to_s, :Name => task, :Completed => 0)
26
+ task_id = database[:Tasks].count
27
+ database[:Task_list].insert(:Task_id => task_id, :List_id => list_id)
28
+ end
29
+ list_object.completed_tasks.each do |num, task|
30
+ database[:Tasks].insert(:Task_number => num.to_s, :Name => task, :Completed => 1)
31
+ task_id = database[:Tasks].count
32
+ database[:Task_list].insert(:Task_id => task_id, :List_id => list_id)
36
33
  end
37
34
  end
38
35
  end
39
36
  end
37
+
40
38
  require File.join(File.dirname(__FILE__), 'to-do', 'tasks')
41
39
  require File.join(File.dirname(__FILE__), 'to-do', 'cli')
42
40
 
data/to-do.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "to-do"
8
- s.version = "1.2.4"
8
+ s.version = "1.2.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kristen Mills"]
12
- s.date = "2012-07-19"
12
+ s.date = "2012-07-23"
13
13
  s.description = "A simple command line todo application"
14
14
  s.email = "kristen@kristen-mills.com"
15
15
  s.executables = ["todo"]
@@ -28,6 +28,8 @@ Gem::Specification.new do |s|
28
28
  "lib/to-do.rb",
29
29
  "lib/to-do/cli.rb",
30
30
  "lib/to-do/config.rb",
31
+ "lib/to-do/dbmigrations/001_create_tables.rb",
32
+ "lib/to-do/old/list.rb",
31
33
  "lib/to-do/tasks.rb",
32
34
  "test/helper.rb",
33
35
  "test/test_to-do.rb",
@@ -44,7 +46,7 @@ Gem::Specification.new do |s|
44
46
 
45
47
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
46
48
  s.add_runtime_dependency(%q<shoulda>, [">= 0"])
47
- s.add_runtime_dependency(%q<sqlite3>, [">= 0"])
49
+ s.add_runtime_dependency(%q<sequel>, [">= 3.12"])
48
50
  s.add_runtime_dependency(%q<bundler>, [">= 1.0.0"])
49
51
  s.add_runtime_dependency(%q<jeweler>, ["~> 1.8.4"])
50
52
  s.add_runtime_dependency(%q<simplecov>, [">= 0"])
@@ -52,7 +54,7 @@ Gem::Specification.new do |s|
52
54
  s.add_development_dependency(%q<yard>, [">= 0"])
53
55
  else
54
56
  s.add_dependency(%q<shoulda>, [">= 0"])
55
- s.add_dependency(%q<sqlite3>, [">= 0"])
57
+ s.add_dependency(%q<sequel>, [">= 3.12"])
56
58
  s.add_dependency(%q<bundler>, [">= 1.0.0"])
57
59
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
58
60
  s.add_dependency(%q<simplecov>, [">= 0"])
@@ -61,7 +63,7 @@ Gem::Specification.new do |s|
61
63
  end
62
64
  else
63
65
  s.add_dependency(%q<shoulda>, [">= 0"])
64
- s.add_dependency(%q<sqlite3>, [">= 0"])
66
+ s.add_dependency(%q<sequel>, [">= 3.12"])
65
67
  s.add_dependency(%q<bundler>, [">= 1.0.0"])
66
68
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
67
69
  s.add_dependency(%q<simplecov>, [">= 0"])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: to-do
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.2.5
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: 2012-07-19 00:00:00.000000000 Z
12
+ date: 2012-07-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: shoulda
16
- requirement: &70226231223800 !ruby/object:Gem::Requirement
16
+ requirement: &70189841281860 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,21 +21,21 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70226231223800
24
+ version_requirements: *70189841281860
25
25
  - !ruby/object:Gem::Dependency
26
- name: sqlite3
27
- requirement: &70226231222120 !ruby/object:Gem::Requirement
26
+ name: sequel
27
+ requirement: &70189841280700 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
31
31
  - !ruby/object:Gem::Version
32
- version: '0'
32
+ version: '3.12'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70226231222120
35
+ version_requirements: *70189841280700
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &70226231220380 !ruby/object:Gem::Requirement
38
+ requirement: &70189841279760 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.0.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70226231220380
46
+ version_requirements: *70189841279760
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: jeweler
49
- requirement: &70226231218380 !ruby/object:Gem::Requirement
49
+ requirement: &70189841181960 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.8.4
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70226231218380
57
+ version_requirements: *70189841181960
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: simplecov
60
- requirement: &70226231231340 !ruby/object:Gem::Requirement
60
+ requirement: &70189841179620 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70226231231340
68
+ version_requirements: *70189841179620
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: colorize
71
- requirement: &70226231225880 !ruby/object:Gem::Requirement
71
+ requirement: &70189841178880 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70226231225880
79
+ version_requirements: *70189841178880
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: yard
82
- requirement: &70226231239840 !ruby/object:Gem::Requirement
82
+ requirement: &70189841177640 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70226231239840
90
+ version_requirements: *70189841177640
91
91
  description: A simple command line todo application
92
92
  email: kristen@kristen-mills.com
93
93
  executables:
@@ -107,6 +107,8 @@ files:
107
107
  - lib/to-do.rb
108
108
  - lib/to-do/cli.rb
109
109
  - lib/to-do/config.rb
110
+ - lib/to-do/dbmigrations/001_create_tables.rb
111
+ - lib/to-do/old/list.rb
110
112
  - lib/to-do/tasks.rb
111
113
  - test/helper.rb
112
114
  - test/test_to-do.rb
@@ -126,7 +128,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
128
  version: '0'
127
129
  segments:
128
130
  - 0
129
- hash: 3150241124511996272
131
+ hash: 181670245826667648
130
132
  required_rubygems_version: !ruby/object:Gem::Requirement
131
133
  none: false
132
134
  requirements: