wlog 1.1.5 → 1.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +105 -35
- data/lib/wlog/{ui/commands → commands}/create_issue.rb +2 -2
- data/lib/wlog/ui/cli_interface.rb +4 -14
- data/lib/wlog/ui/edit_handler.rb +14 -16
- data/lib/wlog/ui/invoice_ui.rb +5 -5
- data/lib/wlog/version.rb +1 -1
- data/wlog.gemspec +1 -1
- metadata +6 -7
- data/lib/wlog/ui/commands/attach_to_log_entry.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 927ff5dc0487a5b1a77551c62e722b5465da5ca3
|
4
|
+
data.tar.gz: e3d49fb7ed7233b91709ca04df26d06618ea814e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a880d8230ddce74c868ba4c6ea5dec4016a00792604e177b1d19c9b6408bf5d9ac3c0035e7969afd26dfeeea45858469441065e30db5e30bbb3df6dbe4bf86a
|
7
|
+
data.tar.gz: 1e677504858659be29cf7ce0f861c18ca62b4e179d458df62df129da97714577b5db969da0d881f1b7110d13223bcf76708f153e50cc18453e99c2e34e9c618c
|
data/README.md
CHANGED
@@ -64,15 +64,16 @@ databases, you can do the following:
|
|
64
64
|
|
65
65
|
That will print the absolute path to that directory.
|
66
66
|
|
67
|
-
|
68
|
-
demonstrate the issues that are currently to be worked on. Then you choose an
|
69
|
-
issue, and log your work on that particular issue only.
|
70
|
-
|
71
|
-
So when you start the application this is what you see:
|
67
|
+
# Main Interface
|
72
68
|
|
73
69
|
[wlog]
|
74
70
|
|
75
|
-
Enter the command `
|
71
|
+
Enter the command `new` to create a new issue:
|
72
|
+
|
73
|
+
[wlog] new
|
74
|
+
|
75
|
+
Follow the on screen queries in order to create the issue.
|
76
|
+
Enter the command `show` or `ls` to list the issues:
|
76
77
|
|
77
78
|
[wlog] ls
|
78
79
|
started work 2
|
@@ -81,7 +82,7 @@ Enter the command `show` to list the issues
|
|
81
82
|
new 1
|
82
83
|
[3] Need to check out templating system
|
83
84
|
|
84
|
-
Now we want to focus on a particular issue. We type in `focus
|
85
|
+
Now we want to focus on a particular issue. We type in `focus`:
|
85
86
|
|
86
87
|
[wlog] focus 1
|
87
88
|
[issue #1]
|
@@ -94,10 +95,8 @@ And now we can show all the logged work with `ls` or `show`:
|
|
94
95
|
[5] Some trivial work there too [15:35:32]
|
95
96
|
[issue #1]
|
96
97
|
|
97
|
-
|
98
|
-
|
99
|
-
[issue #1] forget
|
100
|
-
[wlog]
|
98
|
+
And commands you execute apply to the scope of only that issue. You can type in
|
99
|
+
`help` for more info.
|
101
100
|
|
102
101
|
While in the scope of an issue, you can display its full description by invoking
|
103
102
|
the command `desc`.
|
@@ -117,6 +116,50 @@ the command `desc`.
|
|
117
116
|
Description
|
118
117
|
But this is an ever longer desc
|
119
118
|
|
119
|
+
## Logging Time
|
120
|
+
|
121
|
+
It's possible to log time within issue scope with the following commands:
|
122
|
+
|
123
|
+
lt 10m
|
124
|
+
|
125
|
+
To log 10 minutes
|
126
|
+
|
127
|
+
lt 1h20m
|
128
|
+
|
129
|
+
To log 1 hour 20 minutes
|
130
|
+
|
131
|
+
lt 1d 1s
|
132
|
+
|
133
|
+
To log one day, one second. (A day is 8 hours). The total time is stored on the
|
134
|
+
issue.
|
135
|
+
|
136
|
+
## Inside issues
|
137
|
+
|
138
|
+
You can run these commands in this 'sub-shell' of the issues:
|
139
|
+
are `search`, `replace`, `delete`, and `concat`.
|
140
|
+
|
141
|
+
search
|
142
|
+
searches the database for a pattern that you specify.
|
143
|
+
|
144
|
+
replace
|
145
|
+
searches and replaces a pattern that you specify.
|
146
|
+
|
147
|
+
delete
|
148
|
+
removes an entry from the database.
|
149
|
+
|
150
|
+
concat
|
151
|
+
appends a string to the specified log entry.
|
152
|
+
|
153
|
+
## Escape Scope
|
154
|
+
|
155
|
+
To exit the scope of an issue, you can use the `forget` command:
|
156
|
+
|
157
|
+
[issue #1] forget
|
158
|
+
[wlog]
|
159
|
+
|
160
|
+
*NOTE*: Attachments don't currently work in v1.1.5 - they might be back in the
|
161
|
+
future.
|
162
|
+
|
120
163
|
You can also attach files to issues (you have to be outside the scope of an
|
121
164
|
issue for this - this feature is experimental at the momment so don't rely too
|
122
165
|
much on it):
|
@@ -142,39 +185,68 @@ And then you can output them to a location:
|
|
142
185
|
Which attachment to output? : 1
|
143
186
|
Output where (abs dir) : /tmp/
|
144
187
|
|
145
|
-
|
146
|
-
|
147
|
-
You can run these commands in this 'sub-shell' of the issues:
|
148
|
-
are `show`, `search`, `replace`, `delete`, and `concat`.
|
149
|
-
|
150
|
-
`show` lists the latest work log entries.
|
188
|
+
# Generating Invoices
|
151
189
|
|
152
|
-
|
190
|
+
You can generate invoices. You need to create an invoice first. To do that,
|
191
|
+
enter the command `invoices` in the `wlog` shell:
|
153
192
|
|
154
|
-
|
193
|
+
[wlog] invoices
|
194
|
+
[invoices]
|
155
195
|
|
156
|
-
`
|
196
|
+
You can create a new invoice with the `new` command. Enter the two dates which
|
197
|
+
correspond the date range you want to bill. For example, let's enter the whole
|
198
|
+
month of September:
|
157
199
|
|
158
|
-
|
200
|
+
[invoice] new
|
201
|
+
From (dd-mm-yyyy) 01-09-2014
|
202
|
+
To (dd-mm-yyyy) 30-09-2014
|
203
|
+
I did many things this month
|
204
|
+
It is very very true
|
205
|
+
And I can write all of this in multiline
|
206
|
+
|
207
|
+
And I can break into another paragraph.
|
208
|
+
|
209
|
+
And another.
|
210
|
+
|
211
|
+
But you need to press enter a few more times until you
|
212
|
+
break you of the input for the invoice.
|
213
|
+
|
214
|
+
|
215
|
+
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
[invoice]
|
159
220
|
|
160
|
-
|
221
|
+
So now you should have your first invoice:
|
161
222
|
|
162
|
-
|
223
|
+
[invoice] show
|
224
|
+
[1] 01-09-2014 -> 30-09-2014 I
|
163
225
|
|
164
|
-
|
226
|
+
And now you can generate your invoice with the following command:
|
165
227
|
|
166
|
-
|
228
|
+
[invoice] generate 1
|
167
229
|
|
168
|
-
|
230
|
+
This will write the output in `~/Documents/wlog/`. Will create dirs if not
|
231
|
+
exist.
|
169
232
|
|
170
|
-
|
233
|
+
## Templates
|
171
234
|
|
172
|
-
To
|
235
|
+
To generate invoices templates are used. Templates are _erb_ templates. They are
|
236
|
+
stored in `~/.config/wlog/templates/`. You can write your own as well. If you
|
237
|
+
write your own, you need to tell wlog to use them. Do so with the following
|
238
|
+
commands:
|
173
239
|
|
174
|
-
|
240
|
+
[templates] show
|
241
|
+
[ 1] /home/psyomn/.config/wlog/templates/default.erb
|
242
|
+
* [ 2] /home/psyomn/.config/wlog/templates/mine.erb.html
|
243
|
+
[templates] set 1
|
244
|
+
[templates] show
|
245
|
+
* [ 1] /home/psyomn/.config/wlog/templates/default.erb
|
246
|
+
[ 2] /home/psyomn/.config/wlog/templates/mine.erb.html
|
175
247
|
|
176
|
-
|
177
|
-
|
248
|
+
Also, worth to note that you should verify any template you get off the
|
249
|
+
internet to use as your own.
|
178
250
|
|
179
251
|
## Contributing
|
180
252
|
|
@@ -184,8 +256,6 @@ issue.
|
|
184
256
|
4. Push to the branch (`git push origin my-new-feature`)
|
185
257
|
5. Create new Pull Request
|
186
258
|
|
187
|
-
|
188
|
-
|
189
|
-
Look at the github issues, for things marked as 'Up for Grabs'. Feel free to
|
190
|
-
message me to ask anything. I'll be more than happy to answer.
|
259
|
+
# Developers
|
191
260
|
|
261
|
+
Check issue tracker - thanks.
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'active_record'
|
2
2
|
require 'readline'
|
3
|
-
require 'wlog/
|
3
|
+
require 'wlog/commands/commandable'
|
4
4
|
require 'wlog/domain/issue'
|
5
5
|
|
6
6
|
module Wlog
|
7
7
|
# Creational logic for issues
|
8
8
|
# @author Simon Symeonidis
|
9
|
-
class CreateIssue <
|
9
|
+
class CreateIssue < Commandable
|
10
10
|
# Execute create issue transaction
|
11
11
|
def execute
|
12
12
|
desc = Readline.readline("Small issue description :") || "None."
|
@@ -5,7 +5,7 @@ require 'wlog/domain/sys_config'
|
|
5
5
|
require 'wlog/domain/attachment'
|
6
6
|
require 'wlog/domain/helpers'
|
7
7
|
|
8
|
-
require 'wlog/
|
8
|
+
require 'wlog/commands/create_issue'
|
9
9
|
require 'wlog/ui/configuration_ui'
|
10
10
|
|
11
11
|
require 'wlog/commands/archive_issues'
|
@@ -40,7 +40,6 @@ class CliInterface
|
|
40
40
|
when /^archive/ then archive cmd
|
41
41
|
when /^showattach/ then show_attach
|
42
42
|
when /^outattach/ then output_attach
|
43
|
-
when /^generateinvoice/ then generate_invoice
|
44
43
|
when /^attach/ then attach
|
45
44
|
when /^focus/ then focus(cmd)
|
46
45
|
when /new/ then new_issue
|
@@ -76,6 +75,7 @@ private
|
|
76
75
|
if !issue_id
|
77
76
|
puts 'usage:'
|
78
77
|
puts ' delete <id>'
|
78
|
+
return
|
79
79
|
else
|
80
80
|
issue_id = issue_id.to_i
|
81
81
|
end
|
@@ -202,7 +202,8 @@ private
|
|
202
202
|
'archive', 'Archive a file into a specific issue',
|
203
203
|
'showattach', 'Show what files have been attached to an issue',
|
204
204
|
'outattach', 'Extract a file from the database',
|
205
|
-
'
|
205
|
+
'invoices', 'Go to invoices interface',
|
206
|
+
'templates', 'Go to template interface, and set templates',
|
206
207
|
'focus', 'Focus on a particular ',
|
207
208
|
'show', 'List all the issues',
|
208
209
|
'help', 'Show this information',
|
@@ -245,17 +246,6 @@ private
|
|
245
246
|
cmd.ret
|
246
247
|
end
|
247
248
|
|
248
|
-
def generate_invoice
|
249
|
-
require 'time'
|
250
|
-
puts "Eg: valid input is Oct 2013 15"
|
251
|
-
from = Readline.readline("From: ")
|
252
|
-
to = Readline.readline("To : ")
|
253
|
-
|
254
|
-
from_time = Time.parse(from).to_i
|
255
|
-
to_time = Time.parse(to).to_i
|
256
|
-
issues = Issue.find_in_time_range(@db, from_time, to_time)
|
257
|
-
end
|
258
|
-
|
259
249
|
# Search for an issue
|
260
250
|
def search
|
261
251
|
term = Readline.readline("search issues for term : ")
|
data/lib/wlog/ui/edit_handler.rb
CHANGED
@@ -1,31 +1,31 @@
|
|
1
|
+
require 'wlog/domain/sys_config'
|
1
2
|
|
2
3
|
module Wlog
|
3
4
|
# @author Simon Symeonidis
|
4
5
|
class EditHandler
|
5
6
|
|
6
|
-
def initialize(issue)
|
7
|
+
def initialize(issue)
|
8
|
+
@issue = issue
|
9
|
+
@strmaker = SysConfig.string_decorator
|
10
|
+
end
|
7
11
|
|
8
12
|
# Command comes in as edit <...>. This definition will check what comes
|
9
13
|
# next and invoke the proper method to execute.
|
10
14
|
def edit_what(terms_a)
|
15
|
+
param = (terms_a.drop 1).join ' '
|
16
|
+
|
11
17
|
case terms_a[0]
|
12
18
|
when /^title/
|
13
|
-
|
14
|
-
@issue.description = title
|
15
|
-
@issue.update
|
19
|
+
@issue.update(:description => param)
|
16
20
|
|
17
21
|
when /^desc/
|
18
|
-
|
19
|
-
@issue.long_description = long
|
20
|
-
@issue.update
|
22
|
+
@issue.update(:long_description => param)
|
21
23
|
|
22
24
|
when /^due/
|
23
|
-
|
24
|
-
edit_time(date_time.join(' '))
|
25
|
+
edit_time(param)
|
25
26
|
|
26
27
|
when /^reported/
|
27
|
-
|
28
|
-
edit_reported_time(date_time.join(' '))
|
28
|
+
edit_reported_time(param)
|
29
29
|
|
30
30
|
else
|
31
31
|
$stdout.puts "Usage: "
|
@@ -33,15 +33,13 @@ class EditHandler
|
|
33
33
|
$stdout.puts " edit desc - to edit the long description"
|
34
34
|
$stdout.puts " edit due - to edit the due date"
|
35
35
|
$stdout.puts " edit time - to edit the time"
|
36
|
-
|
37
36
|
end
|
38
37
|
end
|
39
38
|
|
40
39
|
# @param time is the date-time in string format (eg Oct 28)
|
41
40
|
def edit_time(time)
|
42
41
|
date_time = time_handle(time)
|
43
|
-
@issue.due_date
|
44
|
-
@issue.update
|
42
|
+
@issue.update(:due_date => date_time)
|
45
43
|
puts @strmaker.green('Updated due date')
|
46
44
|
rescue ArgumentError
|
47
45
|
$stderr.puts @strmaker.red \
|
@@ -63,8 +61,8 @@ class EditHandler
|
|
63
61
|
# @return a Time object which is set to 9am on that day if no time
|
64
62
|
# is provided
|
65
63
|
def time_handle(time_str)
|
66
|
-
date_time = DateTime.parse(
|
67
|
-
date_time = DateTime.parse(
|
64
|
+
date_time = DateTime.parse(time_str)
|
65
|
+
date_time = DateTime.parse(time_str + ' 9:00') if date_time.hour == 0
|
68
66
|
end
|
69
67
|
|
70
68
|
# Pass the issue from the previous ui to this one. This ui modifies
|
data/lib/wlog/ui/invoice_ui.rb
CHANGED
@@ -18,7 +18,7 @@ class InvoiceUi
|
|
18
18
|
cmd = "default"
|
19
19
|
|
20
20
|
while cmd != 'end'
|
21
|
-
cmd = Readline.readline("[#{@strmaker.red('
|
21
|
+
cmd = Readline.readline("[#{@strmaker.red('invoices')}] ") || ""
|
22
22
|
case cmd
|
23
23
|
when /^new/ then make_invoice
|
24
24
|
when /^(ls|show)/ then ls
|
@@ -36,10 +36,10 @@ private
|
|
36
36
|
# TODO maybe separate this in the future for better testing.
|
37
37
|
def generate(rest)
|
38
38
|
num = rest.first || 1
|
39
|
-
invoice = Invoice.find(num.to_i)
|
39
|
+
@invoice = Invoice.find(num.to_i)
|
40
40
|
|
41
41
|
# NOTE: these need to be instance vars, so we expose them to ERB later on
|
42
|
-
@les = invoice.log_entries_within_dates
|
42
|
+
@les = @invoice.log_entries_within_dates
|
43
43
|
@issues = [Issue.find(*(@les.collect(&:issue_id).uniq))].compact.flatten
|
44
44
|
|
45
45
|
# Get the template
|
@@ -52,7 +52,7 @@ private
|
|
52
52
|
|
53
53
|
FileUtils.mkdir_p TemplateOutputDir
|
54
54
|
template_ext = tpath.split(File::SEPARATOR).last.split('.').last
|
55
|
-
filename = TemplateOutputDir + "#{invoice.id}-invoice.#{template_ext}"
|
55
|
+
filename = TemplateOutputDir + "#{@invoice.id}-invoice.#{template_ext}"
|
56
56
|
|
57
57
|
File.write(filename, output)
|
58
58
|
|
@@ -75,7 +75,7 @@ private
|
|
75
75
|
print @strmaker.yellow(invoice.from.strftime("%d-%m-%Y"))
|
76
76
|
print @strmaker.blue(" -> ")
|
77
77
|
print @strmaker.yellow(invoice.to.strftime("%d-%m-%Y"))
|
78
|
-
puts " #{invoice.description.
|
78
|
+
puts " #{invoice.description.lines.first.gsub(/(\r|\n)/, "")[0..49]}..."
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
data/lib/wlog/version.rb
CHANGED
data/wlog.gemspec
CHANGED
@@ -28,5 +28,5 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.add_development_dependency "yard"
|
29
29
|
spec.add_runtime_dependency "sqlite3", ">= 1.3.7"
|
30
30
|
spec.add_runtime_dependency "rake", ">= 10.3.2"
|
31
|
-
spec.add_runtime_dependency 'activerecord', "
|
31
|
+
spec.add_runtime_dependency 'activerecord', "4.1.6"
|
32
32
|
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.1.
|
4
|
+
version: 1.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- psyomn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -98,14 +98,14 @@ dependencies:
|
|
98
98
|
name: activerecord
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - '
|
101
|
+
- - '='
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: 4.1.6
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - '
|
108
|
+
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 4.1.6
|
111
111
|
description: Track tasks and time on the command line.
|
@@ -129,6 +129,7 @@ files:
|
|
129
129
|
- lib/wlog/commands/bootstrap_templates.rb
|
130
130
|
- lib/wlog/commands/commandable.rb
|
131
131
|
- lib/wlog/commands/concat_description.rb
|
132
|
+
- lib/wlog/commands/create_issue.rb
|
132
133
|
- lib/wlog/commands/delete_issue.rb
|
133
134
|
- lib/wlog/commands/innit_db.rb
|
134
135
|
- lib/wlog/commands/make_csv.rb
|
@@ -158,8 +159,6 @@ files:
|
|
158
159
|
- lib/wlog/tech/wlog_string.rb
|
159
160
|
- lib/wlog/ui/bootstrap.rb
|
160
161
|
- lib/wlog/ui/cli_interface.rb
|
161
|
-
- lib/wlog/ui/commands/attach_to_log_entry.rb
|
162
|
-
- lib/wlog/ui/commands/create_issue.rb
|
163
162
|
- lib/wlog/ui/commands/ui_command.rb
|
164
163
|
- lib/wlog/ui/configuration_ui.rb
|
165
164
|
- lib/wlog/ui/edit_handler.rb
|
@@ -205,7 +204,7 @@ rubyforge_project:
|
|
205
204
|
rubygems_version: 2.0.14
|
206
205
|
signing_key:
|
207
206
|
specification_version: 4
|
208
|
-
summary: 'A light ruby script to help track tasks and time commit:
|
207
|
+
summary: 'A light ruby script to help track tasks and time commit: 176c67c'
|
209
208
|
test_files:
|
210
209
|
- spec/domain/attachment_spec.rb
|
211
210
|
- spec/domain/commands/concat_desc_spec.rb
|