watch_tower 0.0.2 → 0.0.3
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/README.md +28 -27
- data/lib/watch_tower/eye.rb +2 -0
- data/lib/watch_tower/server/views/layout.haml +6 -0
- data/lib/watch_tower/version.rb +1 -1
- data/spec/watch_tower/eye_spec.rb +6 -0
- data/watch_tower.gemspec +3 -0
- metadata +65 -54
data/README.md
CHANGED
@@ -7,24 +7,25 @@ the project, directory, and file level.
|
|
7
7
|
|
8
8
|
# Introduction
|
9
9
|
|
10
|
-
Did you ever want to keep track of how much time you _really_ spend on
|
11
|
-
your projects? Sure, you can try to remember to keep running
|
12
|
-
time in the hope that you can aggregate those
|
13
|
-
meaningful data. But sometimes you forget, or
|
14
|
-
estimate. And those errors add up. Quickly.
|
10
|
+
Did you ever want to keep track of how much time you _really_ spend on
|
11
|
+
all of your projects? Sure, you can try to remember to keep running
|
12
|
+
estimates of your time in the hope that you can aggregate those
|
13
|
+
estimates later into some meaningful data. But sometimes you forget, or
|
14
|
+
an error creeps into your estimate. And those errors add up. Quickly.
|
15
15
|
|
16
16
|
You can try some tracking software that depends on you to start and stop
|
17
|
-
timers. But what happens if you forget to start or stop one of those
|
17
|
+
timers. But what happens if you forget to start or stop one of those
|
18
|
+
timers?
|
18
19
|
|
19
|
-
What you need is a passive system that will take care of all of this
|
20
|
-
so you can focus on the actual work, which is where WatchTower
|
21
|
-
play.
|
20
|
+
What you need is a passive system that will take care of all of this
|
21
|
+
for you, so you can focus on the actual work, which is where WatchTower
|
22
|
+
comes into play.
|
22
23
|
|
23
|
-
WatchTower runs in the background and keeps track of the time spent
|
24
|
-
each file with one of the supported editors (listed below).
|
25
|
-
keeps track of the time spent on each file, and it
|
26
|
-
file belongs to, you can view details and
|
27
|
-
down to the file level.
|
24
|
+
WatchTower runs in the background and keeps track of the time spent
|
25
|
+
editing each file with one of the supported editors (listed below).
|
26
|
+
Since WatchTower keeps track of the time spent on each file, and it
|
27
|
+
knows which project each file belongs to, you can view details and
|
28
|
+
statistics on each project, right down to the file level.
|
28
29
|
|
29
30
|
# Features
|
30
31
|
|
@@ -100,11 +101,12 @@ $ watchtower open
|
|
100
101
|
|
101
102
|
## Rehash
|
102
103
|
|
103
|
-
If for some reason, you think that the elapsed
|
104
|
-
projects is wrong ( c.f
|
105
|
-
|
106
|
-
|
107
|
-
|
104
|
+
If for some reason, you think that the elapsed
|
105
|
+
time of any of your projects is wrong ( c.f
|
106
|
+
[#9](https://github.com/TechnoGate/watch_tower/issues/9) ) then you can
|
107
|
+
recalculate the elapsed time of all projects and all their files by
|
108
|
+
visiting [http://localhost:9282/rehash](http://localhost:9282/rehash),
|
109
|
+
but please keep in mind that this can take a long time to process.
|
108
110
|
|
109
111
|
# Commands
|
110
112
|
|
@@ -144,7 +146,6 @@ Don't forget to follow me on [Github](https://github.com/eMxyzptlk) and
|
|
144
146
|
Please see the
|
145
147
|
[CREDITS.md](https://github.com/TechnoGate/watch_tower/blob/master/CREDITS.md) file.
|
146
148
|
|
147
|
-
|
148
149
|
# License
|
149
150
|
|
150
151
|
## This code is free to use under the terms of the MIT license.
|
@@ -159,13 +160,13 @@ distribute, sublicense, and/or sell copies of the Software, and to
|
|
159
160
|
permit persons to whom the Software is furnished to do so, subject to
|
160
161
|
the following conditions:
|
161
162
|
|
162
|
-
The above copyright notice and this permission notice shall be
|
163
|
-
|
163
|
+
The above copyright notice and this permission notice shall be included
|
164
|
+
in all copies or substantial portions of the Software.
|
164
165
|
|
165
166
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
166
167
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
167
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
168
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
169
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
170
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
171
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
172
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/lib/watch_tower/eye.rb
CHANGED
@@ -27,6 +27,8 @@ module WatchTower
|
|
27
27
|
LOG.debug("#{__FILE__}:#{__LINE__}: #{editor.to_s} is running")
|
28
28
|
# Get the currently being edited file from the editor
|
29
29
|
files_paths = editor.current_paths
|
30
|
+
# Do not continue if no files were returned
|
31
|
+
next unless files_paths && files_paths.respond_to?(:each)
|
30
32
|
# Iterate over the files to fill the database
|
31
33
|
files_paths.each do |file_path|
|
32
34
|
begin
|
@@ -30,6 +30,12 @@
|
|
30
30
|
.page= yield
|
31
31
|
|
32
32
|
%section#footer
|
33
|
+
%a{href: 'https://github.com/TechnoGate/watch_tower', target: '_blank'}
|
34
|
+
WatchTower
|
35
|
+
Version
|
36
|
+
%a{href: "https://github.com/TechnoGate/watch_tower/tree/v#{WatchTower.version}", target: '_blank'}
|
37
|
+
= WatchTower.version
|
38
|
+
%br/
|
33
39
|
© Copyright 2011
|
34
40
|
%a{href: 'https://github.com/TechnoGate', target: '_blank'}
|
35
41
|
TechnoGate
|
data/lib/watch_tower/version.rb
CHANGED
@@ -69,6 +69,12 @@ describe Eye do
|
|
69
69
|
subject.start
|
70
70
|
end
|
71
71
|
|
72
|
+
it "should not explode if file_paths is nil" do
|
73
|
+
@editor.expects(:current_paths).returns(nil).once
|
74
|
+
|
75
|
+
-> { subject.start }.should_not raise_error
|
76
|
+
end
|
77
|
+
|
72
78
|
it "should call File.exists?" do
|
73
79
|
::File.expects(:exists?).with(@file_path).returns(true).once
|
74
80
|
|
data/watch_tower.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: watch_tower
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-11-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: thor
|
16
|
+
requirement: &9850320 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.14.6
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *9850320
|
14
25
|
- !ruby/object:Gem::Dependency
|
15
26
|
name: activesupport
|
16
|
-
requirement: &
|
27
|
+
requirement: &9903160 !ruby/object:Gem::Requirement
|
17
28
|
none: false
|
18
29
|
requirements:
|
19
30
|
- - ~>
|
@@ -21,10 +32,10 @@ dependencies:
|
|
21
32
|
version: 3.1.1
|
22
33
|
type: :runtime
|
23
34
|
prerelease: false
|
24
|
-
version_requirements: *
|
35
|
+
version_requirements: *9903160
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: i18n
|
27
|
-
requirement: &
|
38
|
+
requirement: &9900800 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
40
|
requirements:
|
30
41
|
- - ~>
|
@@ -32,10 +43,10 @@ dependencies:
|
|
32
43
|
version: 0.6.0
|
33
44
|
type: :runtime
|
34
45
|
prerelease: false
|
35
|
-
version_requirements: *
|
46
|
+
version_requirements: *9900800
|
36
47
|
- !ruby/object:Gem::Dependency
|
37
48
|
name: activerecord
|
38
|
-
requirement: &
|
49
|
+
requirement: &9899200 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
51
|
requirements:
|
41
52
|
- - ~>
|
@@ -43,10 +54,10 @@ dependencies:
|
|
43
54
|
version: 3.1.1
|
44
55
|
type: :runtime
|
45
56
|
prerelease: false
|
46
|
-
version_requirements: *
|
57
|
+
version_requirements: *9899200
|
47
58
|
- !ruby/object:Gem::Dependency
|
48
59
|
name: sinatra
|
49
|
-
requirement: &
|
60
|
+
requirement: &9896640 !ruby/object:Gem::Requirement
|
50
61
|
none: false
|
51
62
|
requirements:
|
52
63
|
- - ~>
|
@@ -54,10 +65,10 @@ dependencies:
|
|
54
65
|
version: 1.3.0
|
55
66
|
type: :runtime
|
56
67
|
prerelease: false
|
57
|
-
version_requirements: *
|
68
|
+
version_requirements: *9896640
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: sinatra-snap
|
60
|
-
requirement: &
|
71
|
+
requirement: &9895500 !ruby/object:Gem::Requirement
|
61
72
|
none: false
|
62
73
|
requirements:
|
63
74
|
- - ~>
|
@@ -65,10 +76,10 @@ dependencies:
|
|
65
76
|
version: 0.3.2
|
66
77
|
type: :runtime
|
67
78
|
prerelease: false
|
68
|
-
version_requirements: *
|
79
|
+
version_requirements: *9895500
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: haml
|
71
|
-
requirement: &
|
82
|
+
requirement: &9909960 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
85
|
- - ~>
|
@@ -76,10 +87,10 @@ dependencies:
|
|
76
87
|
version: 3.1.3
|
77
88
|
type: :runtime
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *9909960
|
80
91
|
- !ruby/object:Gem::Dependency
|
81
92
|
name: grit
|
82
|
-
requirement: &
|
93
|
+
requirement: &9908980 !ruby/object:Gem::Requirement
|
83
94
|
none: false
|
84
95
|
requirements:
|
85
96
|
- - ~>
|
@@ -87,10 +98,10 @@ dependencies:
|
|
87
98
|
version: 2.4.1
|
88
99
|
type: :runtime
|
89
100
|
prerelease: false
|
90
|
-
version_requirements: *
|
101
|
+
version_requirements: *9908980
|
91
102
|
- !ruby/object:Gem::Dependency
|
92
103
|
name: coffee-script
|
93
|
-
requirement: &
|
104
|
+
requirement: &9907960 !ruby/object:Gem::Requirement
|
94
105
|
none: false
|
95
106
|
requirements:
|
96
107
|
- - ~>
|
@@ -98,10 +109,10 @@ dependencies:
|
|
98
109
|
version: 2.2.0
|
99
110
|
type: :runtime
|
100
111
|
prerelease: false
|
101
|
-
version_requirements: *
|
112
|
+
version_requirements: *9907960
|
102
113
|
- !ruby/object:Gem::Dependency
|
103
114
|
name: uglifier
|
104
|
-
requirement: &
|
115
|
+
requirement: &9903820 !ruby/object:Gem::Requirement
|
105
116
|
none: false
|
106
117
|
requirements:
|
107
118
|
- - ~>
|
@@ -109,10 +120,10 @@ dependencies:
|
|
109
120
|
version: 1.0.3
|
110
121
|
type: :runtime
|
111
122
|
prerelease: false
|
112
|
-
version_requirements: *
|
123
|
+
version_requirements: *9903820
|
113
124
|
- !ruby/object:Gem::Dependency
|
114
125
|
name: sass
|
115
|
-
requirement: &
|
126
|
+
requirement: &9919660 !ruby/object:Gem::Requirement
|
116
127
|
none: false
|
117
128
|
requirements:
|
118
129
|
- - ~>
|
@@ -120,10 +131,10 @@ dependencies:
|
|
120
131
|
version: 3.1.10
|
121
132
|
type: :runtime
|
122
133
|
prerelease: false
|
123
|
-
version_requirements: *
|
134
|
+
version_requirements: *9919660
|
124
135
|
- !ruby/object:Gem::Dependency
|
125
136
|
name: sprockets
|
126
|
-
requirement: &
|
137
|
+
requirement: &9918360 !ruby/object:Gem::Requirement
|
127
138
|
none: false
|
128
139
|
requirements:
|
129
140
|
- - ~>
|
@@ -131,10 +142,10 @@ dependencies:
|
|
131
142
|
version: 2.0.2
|
132
143
|
type: :runtime
|
133
144
|
prerelease: false
|
134
|
-
version_requirements: *
|
145
|
+
version_requirements: *9918360
|
135
146
|
- !ruby/object:Gem::Dependency
|
136
147
|
name: cronedit
|
137
|
-
requirement: &
|
148
|
+
requirement: &9917000 !ruby/object:Gem::Requirement
|
138
149
|
none: false
|
139
150
|
requirements:
|
140
151
|
- - ~>
|
@@ -142,10 +153,10 @@ dependencies:
|
|
142
153
|
version: 0.3.0
|
143
154
|
type: :runtime
|
144
155
|
prerelease: false
|
145
|
-
version_requirements: *
|
156
|
+
version_requirements: *9917000
|
146
157
|
- !ruby/object:Gem::Dependency
|
147
158
|
name: guard
|
148
|
-
requirement: &
|
159
|
+
requirement: &9915800 !ruby/object:Gem::Requirement
|
149
160
|
none: false
|
150
161
|
requirements:
|
151
162
|
- - ~>
|
@@ -153,10 +164,10 @@ dependencies:
|
|
153
164
|
version: 0.8.4
|
154
165
|
type: :development
|
155
166
|
prerelease: false
|
156
|
-
version_requirements: *
|
167
|
+
version_requirements: *9915800
|
157
168
|
- !ruby/object:Gem::Dependency
|
158
169
|
name: guard-bundler
|
159
|
-
requirement: &
|
170
|
+
requirement: &9913580 !ruby/object:Gem::Requirement
|
160
171
|
none: false
|
161
172
|
requirements:
|
162
173
|
- - ~>
|
@@ -164,10 +175,10 @@ dependencies:
|
|
164
175
|
version: 0.1.3
|
165
176
|
type: :development
|
166
177
|
prerelease: false
|
167
|
-
version_requirements: *
|
178
|
+
version_requirements: *9913580
|
168
179
|
- !ruby/object:Gem::Dependency
|
169
180
|
name: guard-rspec
|
170
|
-
requirement: &
|
181
|
+
requirement: &9929120 !ruby/object:Gem::Requirement
|
171
182
|
none: false
|
172
183
|
requirements:
|
173
184
|
- - ~>
|
@@ -175,10 +186,10 @@ dependencies:
|
|
175
186
|
version: 0.4.5
|
176
187
|
type: :development
|
177
188
|
prerelease: false
|
178
|
-
version_requirements: *
|
189
|
+
version_requirements: *9929120
|
179
190
|
- !ruby/object:Gem::Dependency
|
180
191
|
name: guard-sprockets2
|
181
|
-
requirement: &
|
192
|
+
requirement: &9927100 !ruby/object:Gem::Requirement
|
182
193
|
none: false
|
183
194
|
requirements:
|
184
195
|
- - ~>
|
@@ -186,10 +197,10 @@ dependencies:
|
|
186
197
|
version: 0.0.5
|
187
198
|
type: :development
|
188
199
|
prerelease: false
|
189
|
-
version_requirements: *
|
200
|
+
version_requirements: *9927100
|
190
201
|
- !ruby/object:Gem::Dependency
|
191
202
|
name: yard
|
192
|
-
requirement: &
|
203
|
+
requirement: &9924640 !ruby/object:Gem::Requirement
|
193
204
|
none: false
|
194
205
|
requirements:
|
195
206
|
- - ~>
|
@@ -197,10 +208,10 @@ dependencies:
|
|
197
208
|
version: 0.7.2
|
198
209
|
type: :development
|
199
210
|
prerelease: false
|
200
|
-
version_requirements: *
|
211
|
+
version_requirements: *9924640
|
201
212
|
- !ruby/object:Gem::Dependency
|
202
213
|
name: rspec
|
203
|
-
requirement: &
|
214
|
+
requirement: &9979640 !ruby/object:Gem::Requirement
|
204
215
|
none: false
|
205
216
|
requirements:
|
206
217
|
- - ~>
|
@@ -208,10 +219,10 @@ dependencies:
|
|
208
219
|
version: 2.6.0
|
209
220
|
type: :development
|
210
221
|
prerelease: false
|
211
|
-
version_requirements: *
|
222
|
+
version_requirements: *9979640
|
212
223
|
- !ruby/object:Gem::Dependency
|
213
224
|
name: rspec-rails
|
214
|
-
requirement: &
|
225
|
+
requirement: &9978640 !ruby/object:Gem::Requirement
|
215
226
|
none: false
|
216
227
|
requirements:
|
217
228
|
- - ~>
|
@@ -219,10 +230,10 @@ dependencies:
|
|
219
230
|
version: 2.6.1
|
220
231
|
type: :development
|
221
232
|
prerelease: false
|
222
|
-
version_requirements: *
|
233
|
+
version_requirements: *9978640
|
223
234
|
- !ruby/object:Gem::Dependency
|
224
235
|
name: capybara
|
225
|
-
requirement: &
|
236
|
+
requirement: &9977220 !ruby/object:Gem::Requirement
|
226
237
|
none: false
|
227
238
|
requirements:
|
228
239
|
- - ~>
|
@@ -230,10 +241,10 @@ dependencies:
|
|
230
241
|
version: 1.1.1
|
231
242
|
type: :development
|
232
243
|
prerelease: false
|
233
|
-
version_requirements: *
|
244
|
+
version_requirements: *9977220
|
234
245
|
- !ruby/object:Gem::Dependency
|
235
246
|
name: launchy
|
236
|
-
requirement: &
|
247
|
+
requirement: &9975780 !ruby/object:Gem::Requirement
|
237
248
|
none: false
|
238
249
|
requirements:
|
239
250
|
- - ~>
|
@@ -241,10 +252,10 @@ dependencies:
|
|
241
252
|
version: 2.0.5
|
242
253
|
type: :development
|
243
254
|
prerelease: false
|
244
|
-
version_requirements: *
|
255
|
+
version_requirements: *9975780
|
245
256
|
- !ruby/object:Gem::Dependency
|
246
257
|
name: mocha
|
247
|
-
requirement: &
|
258
|
+
requirement: &10074480 !ruby/object:Gem::Requirement
|
248
259
|
none: false
|
249
260
|
requirements:
|
250
261
|
- - ~>
|
@@ -252,10 +263,10 @@ dependencies:
|
|
252
263
|
version: 0.10.0
|
253
264
|
type: :development
|
254
265
|
prerelease: false
|
255
|
-
version_requirements: *
|
266
|
+
version_requirements: *10074480
|
256
267
|
- !ruby/object:Gem::Dependency
|
257
268
|
name: factory_girl
|
258
|
-
requirement: &
|
269
|
+
requirement: &9287280 !ruby/object:Gem::Requirement
|
259
270
|
none: false
|
260
271
|
requirements:
|
261
272
|
- - ~>
|
@@ -263,10 +274,10 @@ dependencies:
|
|
263
274
|
version: 2.1.2
|
264
275
|
type: :development
|
265
276
|
prerelease: false
|
266
|
-
version_requirements: *
|
277
|
+
version_requirements: *9287280
|
267
278
|
- !ruby/object:Gem::Dependency
|
268
279
|
name: timecop
|
269
|
-
requirement: &
|
280
|
+
requirement: &9284180 !ruby/object:Gem::Requirement
|
270
281
|
none: false
|
271
282
|
requirements:
|
272
283
|
- - ~>
|
@@ -274,10 +285,10 @@ dependencies:
|
|
274
285
|
version: 0.3.5
|
275
286
|
type: :development
|
276
287
|
prerelease: false
|
277
|
-
version_requirements: *
|
288
|
+
version_requirements: *9284180
|
278
289
|
- !ruby/object:Gem::Dependency
|
279
290
|
name: pry
|
280
|
-
requirement: &
|
291
|
+
requirement: &9281720 !ruby/object:Gem::Requirement
|
281
292
|
none: false
|
282
293
|
requirements:
|
283
294
|
- - ~>
|
@@ -285,7 +296,7 @@ dependencies:
|
|
285
296
|
version: 0.9.6.2
|
286
297
|
type: :development
|
287
298
|
prerelease: false
|
288
|
-
version_requirements: *
|
299
|
+
version_requirements: *9281720
|
289
300
|
description: WatchTower helps you track how much time you spend on all of your projects.
|
290
301
|
email:
|
291
302
|
- wael.nasreddine@gmail.com
|
@@ -458,10 +469,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
458
469
|
version: '0'
|
459
470
|
segments:
|
460
471
|
- 0
|
461
|
-
hash:
|
472
|
+
hash: 1419198013088261126
|
462
473
|
requirements: []
|
463
474
|
rubyforge_project:
|
464
|
-
rubygems_version: 1.8.
|
475
|
+
rubygems_version: 1.8.11
|
465
476
|
signing_key:
|
466
477
|
specification_version: 3
|
467
478
|
summary: WatchTower helps you track how much time you spend on all of your projects.
|