wlog 1.0.5 → 1.1.1

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: 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