wlog 1.0.5 → 1.1.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f4675d5ea8306d4dc0cc233a7a10a33ba4eb75b5
4
- data.tar.gz: 84bb925bc393f021267b20ea3e9c0c944daf87fc
3
+ metadata.gz: 881927105d2ad4db3a54716d36003cd94e2ce6fc
4
+ data.tar.gz: 9b5f72a05d2924b8bfb3c0c669502abfc3bb0f98
5
5
  SHA512:
6
- metadata.gz: 3fdf0f23d629a0e4a599daa732113d8e90a39653f2ebece0343301115f8cdc3deacc2f8d6a1a663d5ea5f8aae8e51e45dc99be340ecdd67711a322b5a81fddb9
7
- data.tar.gz: 9376a739b679b3f1931f8dbba6a6d9a73018c03f9601c3c1874ba9dcb961ed11d069369d479528742c1e077bb4a6a46b288e5f154ac872b1f886fb2e3189b7b1
6
+ metadata.gz: 2c12ef90cef5b096c659415f4cb250a0953e3b345a94886fcf9a20db0b790a03ad745906bc796d61650005613e5e96592f187076a4b7c2a4136e8caf72601b6e
7
+ data.tar.gz: 37da1bc3b3da242d01ddc7caaa506b8b782d0a950d4e086f397056c259327eb8bc29dc65f63b856889ee444540a78e9b71ff246106eb6726b56ad57c1265db38
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ script: bundle exec rspec spec
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # wlog [![Code Climate](https://codeclimate.com/github/psyomn/wlog.png)](https://codeclimate.com/github/psyomn/wlog)
1
+ # wlog [![Code Climate](https://codeclimate.com/github/psyomn/wlog.png)](https://codeclimate.com/github/psyomn/wlog) [![Build Status](https://travis-ci.org/psyomn/wlog.png?branch=v1.1.0)](https://travis-ci.org/psyomn/wlog)
2
2
 
3
3
  wlog (worklog) is a small utility to track tasks in command line. I use this
4
4
  for things I work on and need to submit a list of stuff done on a particular
@@ -132,6 +132,7 @@ If you forgot what you are doing, you can do
132
132
  - Time : 3h
133
133
 
134
134
  - Whatever description you wrote for issue 1
135
+ - And here there exists an even larger description of the issue
135
136
 
136
137
  You can also attach files to issues
137
138
 
@@ -156,7 +157,9 @@ And then you can output them to a location:
156
157
  Which attachment to output? : 1
157
158
  Output where (abs dir) : /tmp/
158
159
 
159
- You can run these commands in this 'sub-shell':
160
+ ## Inside issues
161
+
162
+ You can run these commands in this 'sub-shell' of the issues:
160
163
  are `show`, `search`, `replace`, `delete`, and `concat`.
161
164
 
162
165
  `show` lists the latest work log entries.
@@ -169,6 +172,25 @@ are `show`, `search`, `replace`, `delete`, and `concat`.
169
172
 
170
173
  `concat` appends a string to the specified log entry.
171
174
 
175
+ All of these will modify the entries of those issues.
176
+
177
+ ## Logging Time
178
+
179
+ It's possible to log time now with the following commands:
180
+
181
+ lt 10m
182
+
183
+ To log 10 minutes
184
+
185
+ lt 1h20m
186
+
187
+ To log 1 hour 20 minutes
188
+
189
+ lt 1d 1s
190
+
191
+ To log one day, one second. (A day is 8 hours). The total time is stored on the
192
+ issue.
193
+
172
194
  ## Contributing
173
195
 
174
196
  1. Fork it
data/bin/wlog CHANGED
@@ -7,7 +7,6 @@ require 'wlog/ui/cli_interface'
7
7
 
8
8
  include Wlog
9
9
 
10
-
11
10
  if ARGV.size > 0
12
11
  case ARGV[0]
13
12
  when "--list"
@@ -10,6 +10,7 @@ class Helpers
10
10
  # @param string is the string that we want processed.
11
11
  # @param numchars is the amount of characters max per line.
12
12
  def self.break_string(string,numchars)
13
+ return unless string
13
14
  desc , cl = "", 0
14
15
  string.split.each do |word|
15
16
  wlength = word.length
@@ -0,0 +1,9 @@
1
+ module Wlog
2
+ # The invoice domain object - use this to manipulate invoice recordings, or
3
+ # this along with some renderer and templates in order to create said invoices.
4
+ # @author Simon Symeonidis
5
+ class Invoice
6
+ def initialize
7
+ end
8
+ end
9
+ end
@@ -2,6 +2,8 @@ require 'wlog/db_registry'
2
2
  require 'wlog/domain/sql_modules/issue_sql'
3
3
  require 'wlog/domain/log_entry'
4
4
  require 'wlog/domain/timelog_helper'
5
+ require 'wlog/domain/sys_config'
6
+ require 'wlog/domain/helpers'
5
7
 
6
8
  module Wlog
7
9
  # This aggregates log entries. The total time spent on this issue is
@@ -15,6 +17,13 @@ class Issue
15
17
  @log_entries = Array.new
16
18
  @status = @seconds = 0
17
19
  @db = db_handle
20
+ @strmaker = SysConfig.string_decorator
21
+ end
22
+
23
+ # Calculate the total time that someone has wasted on all the
24
+ # issues in the current database
25
+ def self.total_time
26
+ # issues = Issue.find_all
18
27
  end
19
28
 
20
29
  def self.find(db, id)
@@ -50,7 +59,7 @@ class Issue
50
59
  def insert
51
60
  unless @id
52
61
  @db.execute(InsertSql, @description,
53
- @reported_date.to_i, @due_date.to_i, @status)
62
+ @reported_date.to_i, @due_date.to_i, @status, @long_description)
54
63
  @id = @db.last_row_from(TableName).first[0]
55
64
  end
56
65
  end
@@ -69,8 +78,10 @@ class Issue
69
78
  end
70
79
 
71
80
  def quick_assign!(row)
72
- @id, @description, @reported_date, @due_date, @status, @seconds =\
73
- row[0], row[1], Time.at(row[2]), Time.at(row[3]), row[4], row[5] || 0
81
+ @id, @description, @reported_date, @due_date, @status, @seconds,
82
+ @long_description =\
83
+ row[0], row[1], Time.at(row[2]), Time.at(row[3]), row[4],
84
+ row[5] || 0, row[6]
74
85
  nil end
75
86
 
76
87
  # Log the seconds into the issue
@@ -80,14 +91,17 @@ class Issue
80
91
  end
81
92
 
82
93
  def to_s
83
- "+ Issue ##{@id}#{$/}"\
84
- " - Reported : #{@reported_date}#{$/}"\
85
- " - Due : #{@due_date}#{$/}"\
86
- " - Entries : #{@log_entries.count}#{$/}"\
87
- " - Status : #{Statuses[@status]}#{$/}"\
88
- " - Time : #{TimelogHelper.time_to_s(@seconds)}#{$/}"\
94
+ "#{@strmaker.yellow('Issue')} ##{@id}#{$/}"\
95
+ " #{@strmaker.blue('Reported')} : #{@reported_date.asctime}#{$/}"\
96
+ " #{@strmaker.blue('Due')} : #{@due_date.asctime}#{$/}"\
97
+ " #{@strmaker.blue('Entries')} : #{@log_entries.count}#{$/}"\
98
+ " #{@strmaker.blue('Status')} : #{Statuses[@status]}#{$/}"\
99
+ " #{@strmaker.blue('Time')} : #{TimelogHelper.time_to_s(@seconds)}#{$/}"\
89
100
  "#{$/}"\
90
- " - #{@description}#{$/}"
101
+ "#{@strmaker.yellow('Summary')} #{$/}"\
102
+ " #{@description}#{$/ + $/}"\
103
+ "#{@strmaker.yellow('Description')} #{$/}"\
104
+ " #{Helpers.break_string(@long_description, 80)}#{$/ + $/}"
91
105
  end
92
106
 
93
107
  # Mark issue as started
@@ -108,6 +122,10 @@ class Issue
108
122
  # [String] Description of the issue at hand
109
123
  attr_accessor :description
110
124
 
125
+ # A longer description that can provide more details as opposed to a simple
126
+ # title as suggested by @description.
127
+ attr_accessor :long_description
128
+
111
129
  # [Time] The due date of the issue
112
130
  attr_accessor :due_date
113
131
 
@@ -8,8 +8,9 @@ module IssueSql
8
8
  # Standard insert
9
9
  InsertSql = \
10
10
  "INSERT INTO #{TableName} "\
11
- "(description, reported_date, due_date, status, timelog) "\
12
- "values (?,?,?,?,0);"
11
+ "(description, reported_date, due_date, status, timelog,"\
12
+ "long_description) "\
13
+ "values (?,?,?,?,0,?);"
13
14
  # Standard delete
14
15
  DeleteSql = "DELETE FROM #{TableName} WHERE id = ? ;"
15
16
 
@@ -23,14 +23,17 @@ class SysConfig
23
23
  @key_value.put!('last_focus', "#{issue}")
24
24
  end
25
25
 
26
+ # Are the settings set to ansi?
26
27
  def self.ansi?
27
28
  self.read_attributes['ansi'] == 'yes'
28
29
  end
29
30
 
31
+ # Oh no! The settings are not ansi!
30
32
  def self.not_ansi!
31
33
  self.store_config('ansi', 'no')
32
34
  end
33
35
 
36
+ # SET THE SETTINGS TO ANSI!
34
37
  def self.ansi!
35
38
  self.store_config('ansi', 'yes')
36
39
  end
@@ -58,8 +61,6 @@ class SysConfig
58
61
 
59
62
  attr_accessor :db
60
63
 
61
- private
62
-
63
64
  # terms is a hash -> {:a => :b, :c => :d}
64
65
  # write each key value to a file like this:
65
66
  # a:b
@@ -71,6 +72,8 @@ private
71
72
  fh = File.open(ConfigFile, 'w')
72
73
  fh.write(str)
73
74
  fh.close
75
+ rescue Errno::ENOENT
76
+ $stderr.puts "#{self.class.name}: Problem opening file #{ConfigFile}"
74
77
  end
75
78
 
76
79
  # Load a hash from a text file.
@@ -84,8 +87,14 @@ private
84
87
  terms.each do |term_tuple| # [term, value]
85
88
  values[term_tuple[0]] = term_tuple[1]
86
89
  end
87
- values end
90
+ values
91
+ rescue Errno::ENOENT
92
+ $stderr.puts "#{self.class.name}: Problem opening file #{ConfigFile}"
93
+ # Minimum guarantee: disable ansi colors
94
+ {'ansi' => 'no'}
95
+ end
88
96
 
97
+ # Key value domain object / helper
89
98
  attr :key_value
90
99
 
91
100
  end
@@ -0,0 +1,3 @@
1
+ --$ add a long description to the table
2
+
3
+ ALTER TABLE issues ADD COLUMN long_description TEXT;
@@ -5,7 +5,9 @@ require 'wlog/domain/static_configurations'
5
5
  require 'wlog/domain/sys_config'
6
6
  require 'wlog/domain/attachment'
7
7
  require 'wlog/domain/helpers'
8
+
8
9
  require 'wlog/ui/commands/create_issue'
10
+ require 'wlog/ui/configuration_ui'
9
11
 
10
12
  require 'wlog/commands/archive_issues'
11
13
  require 'wlog/commands/archive_finished_issues'
@@ -35,18 +37,19 @@ class CliInterface
35
37
  cmd.chomp!
36
38
 
37
39
  case cmd
38
- when /archive/ then archive cmd
39
- when /showattach/ then show_attach
40
- when /outattach/ then output_attach
41
- when /generateinvoice/ then generate_invoice
42
- when /attach/ then attach
43
- when /focus/ then focus
44
- when /new/ then new_issue
45
- when /show/ then show_issues
46
- when /outcsv/ then outcsv
47
- when /delete/ then delete_issue
48
- when /help/ then print_help
49
- when /search/ then search
40
+ when /^archive/ then archive cmd
41
+ when /^showattach/ then show_attach
42
+ when /^outattach/ then output_attach
43
+ when /^generateinvoice/ then generate_invoice
44
+ when /^attach/ then attach
45
+ when /^focus/ then focus(cmd)
46
+ when /^new/ then new_issue
47
+ when /^(ls|show)/ then show_issues
48
+ when /^outcsv/ then outcsv
49
+ when /^delete/ then delete_issue(cmd)
50
+ when /^help/ then print_help
51
+ when /^search/ then search
52
+ when /^config/ then config
50
53
  end
51
54
  end
52
55
  end
@@ -65,10 +68,26 @@ private
65
68
  def new_issue; CreateIssue.new(@db).execute end
66
69
 
67
70
  # Procedure to delete an issue
68
- def delete_issue
69
- issue_id = Readline.readline('Which issue id to delete? : ').to_i
71
+ def delete_issue(cmd)
72
+ issue_id = cmd.split[1]
73
+
74
+ if !issue_id
75
+ puts 'usage:'
76
+ puts ' delete <id>'
77
+ else
78
+ issue_id = issue_id.to_i
79
+ end
80
+
70
81
  dcmd = DeleteIssue.new(@db, issue_id)
71
- dcmd.execute
82
+ if dcmd
83
+ choice = Readline.readline("Delete issue #{issue_id}? [y/n]").strip
84
+ if choice == "y"
85
+ dcmd.execute
86
+ else
87
+ puts "Did nothing"
88
+ return
89
+ end
90
+ end
72
91
  puts "No such issue" unless dcmd.deleted?
73
92
  end
74
93
 
@@ -129,14 +148,23 @@ private
129
148
  att.filename = loc.split('/').last
130
149
  att.given_name = name_alias
131
150
  att.insert
132
- puts "Attached file."
151
+ puts 'Attached file.'
133
152
  else
134
- puts "You need to provide a proper path."
153
+ puts 'You need to provide a proper path.'
135
154
  end
136
155
  end
137
156
 
138
- def focus
139
- issue_id = Readline.readline('Focus on issue : ').to_i
157
+ # Focus on an issue to log work etc
158
+ def focus(cmd)
159
+ issue_id = cmd.split[1]
160
+ if !issue_id
161
+ puts 'usage: '
162
+ puts ' focus <id>'
163
+ return
164
+ else
165
+ issue_id = issue_id.to_i
166
+ end
167
+
140
168
  issue = Issue.find(@db, issue_id)
141
169
  if issue
142
170
  IssueUi.new(@db, issue).run
@@ -155,12 +183,22 @@ private
155
183
  # FIXME (update the command stuff)
156
184
  # Print the help of the cli app
157
185
  def print_help
158
- ["new", "Create a new log entry",
159
- "outcsv", "Export everything to CSV",
160
- "help", "print this dialog",
161
- "end", "Exit the progam",
162
- "delete", "Remove the issue with a given id"].each_with_index do |el,ix|
163
- print " " if 1 == ix % 2
186
+ ['new', 'Create a new log entry',
187
+ 'outcsv', 'Export everything to CSV',
188
+ 'help', 'print this dialog',
189
+ 'end', 'Exit the progam',
190
+ 'delete', 'Remove the issue with a given id',
191
+ 'archive', 'Archive a file into a specific issue',
192
+ 'showattach', 'Show what files have been attached to an issue',
193
+ 'outattach', 'Extract a file from the database',
194
+ 'generateinvoice', 'todo',
195
+ 'focus', 'Focus on a particular ',
196
+ 'show', 'List all the issues',
197
+ 'help', 'Show this information',
198
+ 'search', 'Search for a specific text',
199
+ 'config', 'Set differeing configuration parameters'
200
+ ].each_with_index do |el,ix|
201
+ print ' ' if 1 == ix % 2
164
202
  puts el
165
203
  end
166
204
  end
@@ -170,19 +208,26 @@ private
170
208
  print_list(entries_arr)
171
209
  end
172
210
 
173
- # TODO might need refactoring
174
211
  def print_list(entries_arr)
175
212
  issue_collections = entries_arr.reverse.group_by{|iss| iss.status_s}
176
213
  issue_collections.each_key do |stat|
177
- print @strmaker.green("#{stat}")
178
- puts @strmaker.magenta(" #{issue_collections[stat].count}")
179
- issue_collections[stat].each do |iss|
180
- print @strmaker.red(" [#{iss.id}] ")
181
- puts "#{iss.description}"
182
- end
214
+ print_date_collection(stat, issue_collections)
183
215
  end
184
216
  end
185
217
 
218
+ def print_date_collection(stat, issues)
219
+ print @strmaker.green("#{stat}")
220
+ puts @strmaker.magenta(" #{issues[stat].count}")
221
+ issues[stat].each do |iss|
222
+ print_issue(iss)
223
+ end
224
+ end
225
+
226
+ def print_issue(issue)
227
+ print @strmaker.red(" [#{issue.id}] ")
228
+ puts "#{issue.description}"
229
+ end
230
+
186
231
  def make_csv
187
232
  cmd = MakeCsv.new(@db)
188
233
  cmd.execute
@@ -207,6 +252,9 @@ private
207
252
  print_list(issues)
208
253
  end
209
254
 
255
+ # Run the configuration Ui
256
+ def config; ConfigurationUi.new.run end
257
+
210
258
  end
211
259
  end # module Wlog
212
260
 
@@ -14,7 +14,9 @@ class CreateIssue < UiCommand
14
14
  def execute
15
15
  @ret = Issue.new(@db)
16
16
  desc = Readline.readline("Small issue description :") || "None."
17
+ ldesc = Readline.readline("Long issue description :") || "None."
17
18
  @ret.description = desc.chomp
19
+ @ret.long_description = ldesc
18
20
  @ret.insert
19
21
  end
20
22
  attr_accessor :ret
@@ -0,0 +1,63 @@
1
+ require 'readline'
2
+ require 'wlog/domain/sys_config'
3
+
4
+ module Wlog
5
+ # Ui to manage configuration settings
6
+ # @author Simon Symeonidis
7
+ class ConfigurationUi
8
+
9
+ # Default init
10
+ def initialize
11
+ @strmaker = SysConfig.string_decorator
12
+ end
13
+
14
+ # launch the ui
15
+ def run
16
+ cmd = "default"
17
+ label = @strmaker.yellow('config')
18
+ until cmd == "end" do
19
+ cmd = Readline.readline("[#{label}] ") || "end"
20
+ cmd.chomp!
21
+
22
+ case cmd
23
+ when /^show/ then show_configurations
24
+ when /^set/ then set(cmd)
25
+ when /^help/ then help
26
+ end
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ # This should show the configurations
33
+ def show_configurations
34
+ SysConfig.read_attributes.each do |name, value|
35
+ puts "%s %s" % [@strmaker.green(name), value]
36
+ end
37
+ end
38
+
39
+ # Simply, to show the possible actions on this particular Ui
40
+ def help
41
+ Commands.each_pair do |k,v|
42
+ puts k
43
+ puts " #{v}"
44
+ end
45
+ end
46
+
47
+ # Set a value to something else
48
+ def set(cmd)
49
+ arr = cmd.split
50
+ if arr.size != 3
51
+ puts "Wrong number of arguments"
52
+ return
53
+ end
54
+ cmd, key, value = arr
55
+ SysConfig.store_config(key, value)
56
+ end
57
+
58
+ Commands = {
59
+ 'show' => 'shows the current configurations',
60
+ 'set <key> <value>' => 'set the configuration pair'}
61
+ end
62
+ end # module wlog
63
+
@@ -1,3 +1,4 @@
1
+ require 'date'
1
2
  require 'readline'
2
3
 
3
4
  require 'wlog/commands/replace_pattern'
@@ -26,18 +27,19 @@ class IssueUi
26
27
  cmd.chomp!
27
28
 
28
29
  case cmd
29
- when /^new/ then new_entry
30
- when /^show/ then show_entries
31
- when /^desc/ then describe_issue
32
- when /^delete/ then delete_entry
33
- when /^search/ then search_term
34
- when /^concat/ then concat_description
35
- when /^replace/ then replace_pattern
36
- when /^search/ then search_term
37
- when /^lt/ then time(cmd.split.drop 1) # lt for log time
38
- when /^forget/ then cmd = "end"
39
- when /^finish/ then finish.nil? ? nil : cmd = "end"
40
- when /^help/ then print_help
30
+ when /^new/ then new_entry
31
+ when /^(ls|show)/ then show_entries
32
+ when /^desc/ then describe_issue
33
+ when /^delete/ then delete_entry
34
+ when /^edit/ then edit_what(cmd.split.drop 1)
35
+ when /^concat/ then concat_description
36
+ when /^replace/ then replace_pattern
37
+ when /^search/ then search_term(cmd.split.drop 1)
38
+ when /^lt/ then time(cmd.split.drop 1) # lt for log time
39
+ when /^forget/ then cmd = "end"
40
+ when /^finish/ then finish.nil? ? nil : cmd = "end"
41
+ when /^help/ then print_help
42
+ when /^end/ then next
41
43
  else puts "Type 'help' for help"
42
44
  end
43
45
  end
@@ -109,11 +111,74 @@ private
109
111
  ReplacePattern.new(@db, id, old_pattern, new_pattern).execute
110
112
  end
111
113
 
112
- def search_term
113
- term = Readline.readline('search : ').chomp!
114
+ def search_term(term)
115
+ term ||= ''
116
+ term.chomp!
114
117
  print_entries(LogEntry.search_descriptions(@db, term))
115
118
  end
116
119
 
120
+ # Command comes in as edit <...>. This definition will check what comes
121
+ # next and invoke the proper method to execute.
122
+ def edit_what(terms_a)
123
+ case terms_a[0]
124
+ when /^title/
125
+ title = (terms_a.drop 1).join ' '
126
+ @issue.description = title
127
+ @issue.update
128
+
129
+ when /^desc/
130
+ long = (terms_a.drop 1).join ' '
131
+ @issue.long_description = long
132
+ @issue.update
133
+
134
+ when /^due/
135
+ date_time = terms_a.drop 1
136
+ edit_time(date_time.join(' '))
137
+
138
+ when /^reported/
139
+ date_time = terms_a.drop 1
140
+ edit_reported_time(date_time.join(' '))
141
+
142
+ else
143
+ $stdout.puts "Usage: "
144
+ $stdout.puts " edit title - to edit the title"
145
+ $stdout.puts " edit desc - to edit the long description"
146
+ $stdout.puts " edit due - to edit the due date"
147
+ $stdout.puts " edit time - to edit the time"
148
+
149
+ end
150
+ end
151
+
152
+ # @param time is the date-time in string format (eg Oct 28)
153
+ def edit_time(time)
154
+ date_time = time_handle(time)
155
+ @issue.due_date = date_time.to_time
156
+ @issue.update
157
+ puts @strmaker.green('Updated due date')
158
+ rescue ArgumentError
159
+ $stderr.puts @strmaker.red \
160
+ "Invalid date/time format. Try format like 'Oct 28'"
161
+ end
162
+
163
+ def edit_reported_time(time_str)
164
+ date_time = time_handle(time_str)
165
+ @issue.reported_date = date_time.to_time
166
+ @issue.update
167
+ puts @strmaker.green('Updated reported date')
168
+ rescue ArgumentError
169
+ $stderr.puts @strmaker.red \
170
+ "Invalid date/time format. Try format like 'Oct 28'"
171
+ end
172
+
173
+ # TODO fix me
174
+ # @param time_str The time that we want to kind of sanitize
175
+ # @return a Time object which is set to 9am on that day if no time
176
+ # is provided
177
+ def time_handle(time_str)
178
+ date_time = DateTime.parse(time)
179
+ date_time = DateTime.parse(time + ' 9:00') if date_time.hour == 0
180
+ end
181
+
117
182
  # TODO might need refactoring
118
183
  def show_entries
119
184
  entries_arr = LogEntry.find_all_by_issue_id(@db, @issue.id)
data/lib/wlog/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Wlog
2
- VERSION = "1.0.5"
2
+ VERSION = "1.1.1"
3
3
  end
@@ -72,14 +72,21 @@ describe Issue do
72
72
  issue2.description = "find me 2"
73
73
  issue3.description = "find me 3"
74
74
 
75
+ issue1.long_description = "long desc 1"
76
+ issue2.long_description = "long desc 2"
77
+ issue3.long_description = "long desc 3"
78
+
75
79
  issue1.insert
76
80
  issue2.insert
77
81
  issue3.insert
78
82
 
79
83
  arr = Issue.find_all(@db)
80
- descs = arr.collect{|issue| issue.description}
84
+ descs = arr.collect{|issue| issue.description}
85
+ ldescs = arr.collect{|issue| issue.long_description}
81
86
  existing = descs & ["find me 1", "find me 2", "find me 3"]
87
+ lexisting = ldescs & ["long desc 1", "long desc 2", "long desc 3"]
82
88
  expect(existing.size).to eq(3)
89
+ expect(lexisting.size).to eq(3)
83
90
  end
84
91
 
85
92
  it "should not insert an existing value twice" do
data/wlog.gemspec CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency "bundler", "~> 1.3"
26
26
  spec.add_development_dependency "rake"
27
27
  spec.add_development_dependency "rspec"
28
+ spec.add_development_dependency "yard"
28
29
  spec.add_runtime_dependency "sqlite3", ">= 1.3.7"
29
30
  spec.add_runtime_dependency "turntables", ">= 1.0.3"
30
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wlog
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - psyomn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-15 00:00:00.000000000 Z
11
+ date: 2014-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: yard
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: sqlite3
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -90,6 +104,7 @@ extra_rdoc_files: []
90
104
  files:
91
105
  - .gitignore
92
106
  - .rspec
107
+ - .travis.yml
93
108
  - Gemfile
94
109
  - README.md
95
110
  - Rakefile
@@ -109,6 +124,7 @@ files:
109
124
  - lib/wlog/domain.rb
110
125
  - lib/wlog/domain/attachment.rb
111
126
  - lib/wlog/domain/helpers.rb
127
+ - lib/wlog/domain/invoice.rb
112
128
  - lib/wlog/domain/issue.rb
113
129
  - lib/wlog/domain/key_value.rb
114
130
  - lib/wlog/domain/log_entry.rb
@@ -125,6 +141,7 @@ files:
125
141
  - lib/wlog/sql/mono/1.sql
126
142
  - lib/wlog/sql/seq/.gitkeep
127
143
  - lib/wlog/sql/seq/2.sql
144
+ - lib/wlog/sql/seq/3.sql
128
145
  - lib/wlog/tech/ansi_colors.rb
129
146
  - lib/wlog/tech/uncolored_string.rb
130
147
  - lib/wlog/tech/wlog_string.rb
@@ -134,6 +151,7 @@ files:
134
151
  - lib/wlog/ui/commands/attach_to_log_entry.rb
135
152
  - lib/wlog/ui/commands/create_issue.rb
136
153
  - lib/wlog/ui/commands/ui_command.rb
154
+ - lib/wlog/ui/configuration_ui.rb
137
155
  - lib/wlog/ui/issue_ui.rb
138
156
  - lib/wlog/ui/setup_wizard.rb
139
157
  - lib/wlog/version.rb
@@ -174,7 +192,7 @@ rubyforge_project:
174
192
  rubygems_version: 2.0.3
175
193
  signing_key:
176
194
  specification_version: 4
177
- summary: 'A light ruby script to help track tasks and time commit: 02d901e'
195
+ summary: 'A light ruby script to help track tasks and time commit: f1fbaee'
178
196
  test_files:
179
197
  - spec/domain/attachment_spec.rb
180
198
  - spec/domain/commands/concat_desc_spec.rb