watch_tower 0.0.1.beta4 → 0.0.1.beta5

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.
@@ -2,7 +2,7 @@ script: 'ci/travis.rb'
2
2
  branches:
3
3
  only:
4
4
  - master
5
- - develop
5
+ - stable
6
6
  rvm:
7
7
  - 1.9.2
8
8
  - 1.9.3
data/README.md CHANGED
@@ -2,17 +2,18 @@
2
2
 
3
3
  [![Click here to lend your support to: Open Source Projects and make a donation at www.pledgie.com !](http://www.pledgie.com/campaigns/16123.png?skin_name=chrome)](http://www.pledgie.com/campaigns/16123)
4
4
 
5
- WatchTower helps you track the time you spend on each project.
5
+ WatchTower helps you track the time you spend on each project and on each file
6
+ in the projects.
6
7
 
7
8
  # Introduction
8
9
 
9
- Are you tired of not-knowing how much each of your projects really costs? Watch Tower
10
+ Did you ever wonder how much each of your projects really costs? Watch Tower
10
11
  comes to the rescue.
11
12
 
12
- WatchTower runs in the background and it monitors your editors (see Supported
13
+ WatchTower runs in the background and monitors your editors (see Supported
13
14
  Editors) and records the time you spend on each file and thus on the project
14
- in total, and using a web interface, it presents you with statistics on each
15
- project
15
+ in total. Using a simple but powerful web interface, you can view details and
16
+ statistics about each project and each file.
16
17
 
17
18
  # Features
18
19
 
@@ -92,6 +93,38 @@ You can also take a look at the [TODO
92
93
  list](https://github.com/TechnoGate/watch_tower/blob/master/TODO) for what's
93
94
  in mind for the project
94
95
 
96
+ # Credits
97
+
98
+ This projects is heavily inspired by
99
+ [timetap](https://github.com/elia/timetap) created by [Elia
100
+ Schito](https://github.com/elia), it also uses a number of open source
101
+ projects including but not limited to:
102
+
103
+ - [rb-appscript](http://appscript.sourceforge.net/)
104
+ - [activesupport](https://github.com/rails/rails)
105
+ - [activerecord](https://github.com/rails/rails)
106
+ - [sinatra](https://github.com/sinatra/sinatra)
107
+ - [sinatra-snap](http://github.com/bcarlso/snap)
108
+ - [haml](http://haml-lang.com)
109
+ - [grit](https://github.com/mojombo/grit)
110
+ - [coffee-script](http://github.com/josh/ruby-coffee-script)
111
+ - [uglifier](https://github.com/lautis/uglifier)
112
+ - [sass](http://sass-lang.com)
113
+ - [sprockets](http://getsprockets.org/)
114
+ - [guard](https://github.com/guard/guard)
115
+ - [guard-bundler](https://github.com/guard/guard-bundler)
116
+ - [guard-rspec](https://github.com/guard/guard-rspec)
117
+ - [guard-sprockets2](https://github.com/stevehodgkiss/guard-sprockets2)
118
+ - [yard](http://github.com/lsegal/yard)
119
+ - [rspec](http://github.com/rspec/rspec)
120
+ - [rspec-rails](http://github.com/rspec/rspec-rails)
121
+ - [capybara](https://github.com/jnicklas/capybara)
122
+ - [launchy](https://github.com/copiousfreetime/launchy)
123
+ - [mocha](https://github.com/floehopper/mocha)
124
+ - [factory_girl](https://github.com/thoughtbot/factory_girl)
125
+ - [timecop](https://github.com/jtrupiano/timecop)
126
+ - [pry](https://github.com/pry/pry)
127
+
95
128
  # License
96
129
 
97
130
  ## This code is free to use under the terms of the MIT license.
data/Rakefile CHANGED
@@ -4,7 +4,12 @@ require "bundler/gem_tasks"
4
4
  require 'rspec/core/rake_task'
5
5
  RSpec::Core::RakeTask.new(:spec)
6
6
 
7
- # Monky patch bundler
7
+ # Monkey patch Bundler::GemHelper
8
+ #
9
+ # Git flow create the tag after finishing a release however this breaks
10
+ # <b>rake release</b> because it expects that no tag for the current version
11
+ # is present, this patch overrides this behaviour to skip version tagging if
12
+ # the tag already exists instead of raising an exception
8
13
  Bundler::GemHelper.class_eval <<-END, __FILE__, __LINE__ + 1
9
14
  # Tag the current version
10
15
  def tag_version
@@ -19,7 +24,7 @@ Bundler::GemHelper.class_eval <<-END, __FILE__, __LINE__ + 1
19
24
  raise
20
25
  end
21
26
 
22
- # The original method raises an exception, we should overwrites it
27
+ # The original method raises an exception, we should override it
23
28
  def guard_already_tagged
24
29
  end
25
30
 
@@ -4,6 +4,7 @@ $link_color: +darken($footer_bg, 20%)
4
4
 
5
5
  h1
6
6
  font-size: 2em
7
+ margin: 15px 0
7
8
  h2
8
9
  font-size: 1em
9
10
 
@@ -30,6 +31,20 @@ h2
30
31
  .clearfix
31
32
  clear: both
32
33
 
34
+ .back
35
+ margin-bottom: 2em
36
+ a
37
+ background-color: #222
38
+ -webkit-border-radius: 0.5em
39
+ -moz-border-radius: 0.5em
40
+ border-radius: 0.5em
41
+ color: white
42
+ padding: 0.5em
43
+ text-decoration: none
44
+
45
+ &:hover
46
+ background-color: #444
47
+
33
48
  a
34
49
  color: $link_color
35
50
  text-decoration: none
@@ -37,6 +37,14 @@
37
37
  +elapsed
38
38
 
39
39
  #project
40
+ header
41
+ .project_name
42
+ float: left
43
+ .approximate_elapsed
44
+ float: left
45
+ color: #898989
46
+ margin: 20px 0 0 10px
47
+ font-size: 1.5em
40
48
  #files
41
49
  header
42
50
  .path
@@ -52,6 +52,44 @@ module WatchTower
52
52
  humanize_time elapsed_time
53
53
  end
54
54
 
55
+ # Returns an approximate elapsed time
56
+ #
57
+ # @param [Integer] elapsed_time
58
+ # @return [String] The approximate elapsed time
59
+ def approximate_elapsed(elapsed_time = nil)
60
+ return "" if elapsed_time.nil? && !model.respond_to?(:elapsed_time)
61
+ elapsed_time ||= model.elapsed_time
62
+
63
+ if elapsed_time > 1.day
64
+ elapsed_t = (elapsed_time / 1.day).to_i * 1.day
65
+ elapsed_f = elapsed(elapsed_t)
66
+
67
+ if elapsed_time % 1.day >= 20.hours
68
+ elapsed(elapsed_t + 1.day)
69
+ elsif elapsed_time % 1.day >= 5.hours
70
+ "#{elapsed_f} and a half"
71
+ else
72
+ elapsed_f
73
+ end
74
+ elsif elapsed_time > 1.hour
75
+ elapsed_t = (elapsed_time / 1.hour).to_i * 1.hour
76
+ elapsed_f = elapsed(elapsed_t)
77
+
78
+ if elapsed_time % 1.hour >= 50.minutes
79
+ elapsed(elapsed_t + 1.hour)
80
+ elsif elapsed_time % 1.hour >= 25.minutes
81
+ "#{elapsed_f} and a half"
82
+ else
83
+ elapsed_f
84
+ end
85
+ elsif elapsed_time > 60.seconds
86
+ elapsed_time = (elapsed_time / 60).to_i * 60
87
+ elapsed(elapsed_time)
88
+ else
89
+ '1 minute'
90
+ end
91
+ end
92
+
55
93
  protected
56
94
  def pluralize(num, word)
57
95
  if num > 1
@@ -286,7 +286,8 @@ aside#date {
286
286
  .file_tree .nested_folder {
287
287
  margin-left: 15px; }
288
288
  h1 {
289
- font-size: 2em; }
289
+ font-size: 2em;
290
+ margin: 15px 0; }
290
291
 
291
292
  h2 {
292
293
  font-size: 1em; }
@@ -308,6 +309,19 @@ h2 {
308
309
  .clearfix {
309
310
  clear: both; }
310
311
 
312
+ .back {
313
+ margin-bottom: 2em; }
314
+ .back a {
315
+ background-color: #222222;
316
+ -webkit-border-radius: 0.5em;
317
+ -moz-border-radius: 0.5em;
318
+ border-radius: 0.5em;
319
+ color: white;
320
+ padding: 0.5em;
321
+ text-decoration: none; }
322
+ .back a:hover {
323
+ background-color: #444444; }
324
+
311
325
  a {
312
326
  color: +#b36c6c;
313
327
  text-decoration: none; }
@@ -370,6 +384,13 @@ body {
370
384
  #projects .project .elapsed {
371
385
  float: left; }
372
386
 
387
+ #project header .project_name {
388
+ float: left; }
389
+ #project header .approximate_elapsed {
390
+ float: left;
391
+ color: #898989;
392
+ margin: 20px 0 0 10px;
393
+ font-size: 1.5em; }
373
394
  #project #files header .path {
374
395
  font-size: 20px;
375
396
  text-decoration: underline;
@@ -1,7 +1,12 @@
1
1
  - present @project do |presenter|
2
+ .back
3
+ %a{:href => '/'} &laquo; Home
4
+ .clearfix
2
5
  %article#project
3
6
  %header
4
7
  %h1.project_name= presenter.name.camelcase
8
+ .approximate_elapsed= "(about #{presenter.approximate_elapsed})"
9
+ .clearfix
5
10
  %h2.project_path= presenter.path
6
11
  %section#files
7
12
  - if @files.any?
@@ -4,7 +4,7 @@ module WatchTower
4
4
  MAJOR = 0
5
5
  MINOR = 0
6
6
  TINY = 1
7
- PRE = 'beta4'
7
+ PRE = 'beta5'
8
8
 
9
9
  def self.version
10
10
  # Init the version
@@ -166,6 +166,12 @@ module Server
166
166
  end
167
167
  end
168
168
 
169
+ it "should display an approximate time for the project" do
170
+ within 'article#project' do
171
+ page.should have_content '(about 1 minute)'
172
+ end
173
+ end
174
+
169
175
  it "should have the an h2 for the project's path" do
170
176
  within 'article#project' do
171
177
  page.should have_selector 'header > h2.project_path'
@@ -4,7 +4,7 @@ module Server
4
4
  module Presenters
5
5
  describe ProjectPresenter do
6
6
 
7
- describe "elapsed formatter" do
7
+ describe "#elapsed" do
8
8
  before(:each) do
9
9
  @project = FactoryGirl.create :project
10
10
  end
@@ -20,6 +20,57 @@ module Server
20
20
  end
21
21
  end
22
22
 
23
+ describe "#approximate_elapsed" do
24
+ before(:each) do
25
+ @project = FactoryGirl.create :project
26
+ end
27
+
28
+ subject { ProjectPresenter.new(@project, nil) }
29
+
30
+ it { should respond_to :approximate_elapsed }
31
+
32
+ it "should return 1 minutes for elapsed_times less than a minute" do
33
+ time = 0.minutes + 3.seconds
34
+ subject.approximate_elapsed(time).should == '1 minute'
35
+ end
36
+
37
+ it "should return 10 minutes for elapsed_times equal to 10m30s" do
38
+ time = 10.minutes + 30.seconds
39
+ subject.approximate_elapsed(time).should == '10 minutes'
40
+ end
41
+
42
+ it "should return 1 day for elapsed_times equal to 1 day and 2 hours" do
43
+ time = 1.day + 2.hours
44
+ subject.approximate_elapsed(time).should == '1 day'
45
+ end
46
+
47
+ it "should return 1 day and a half for elapsed_times equal to 1 day and 5 hours" do
48
+ time = 1.day + 7.hours
49
+ subject.approximate_elapsed(time).should == '1 day and a half'
50
+ end
51
+
52
+ it "should return 1 hour for elapsed_times equal to 1 hour and 2 minutes" do
53
+ time = 1.hour + 2.minutes
54
+ subject.approximate_elapsed(time).should == '1 hour'
55
+ end
56
+
57
+ it "should return 1 hour and a half for elapsed_times equal to 1 hour and 25 minutes" do
58
+ time = 1.hour + 25.minutes
59
+ subject.approximate_elapsed(time).should == '1 hour and a half'
60
+ end
61
+
62
+ it "should display 2 hours if elapsed_times equal 1 hour and 50 minutes" do
63
+ time = 1.hour + 50.minutes
64
+ subject.approximate_elapsed(time).should == '2 hours'
65
+ end
66
+
67
+ it "should display 2 days if elapsed_times equal 1 day and 20 hours" do
68
+ time = 1.day + 20.hours
69
+ subject.approximate_elapsed(time).should == '2 days'
70
+ end
71
+ end
72
+
73
+
23
74
  describe "File tree" do
24
75
  before(:each) do
25
76
  @project = FactoryGirl.create :project
@@ -8,9 +8,20 @@ Gem::Specification.new do |s|
8
8
  s.version = WatchTower.version
9
9
  s.authors = ["Wael Nasreddine"]
10
10
  s.email = ["wael.nasreddine@gmail.com"]
11
- s.homepage = ""
12
- s.summary = "Unobtrusive time-tracking for TextMate."
13
- s.description = "WatchTower helps you track the time you spend on each project."
11
+ s.homepage = "https://github.com/TechnoGate/watch_tower"
12
+ s.summary = <<-MSG
13
+ WatchTower helps you track the time you spend on each project and on each file
14
+ in the projects.
15
+ MSG
16
+ s.description = <<-MSG
17
+ Did you ever wonder how much each of your projects really costs? Watch Tower
18
+ comes to the rescue.
19
+
20
+ WatchTower runs in the background and monitors your editors and records the
21
+ time you spend on each file and thus on the project in total. Using a simple
22
+ but powerful web interface, you can view details and statistics about each
23
+ project and each file.
24
+ MSG
14
25
 
15
26
  s.files = `git ls-files`.split("\n")
16
27
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
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.1.beta4
4
+ version: 0.0.1.beta5
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-23 00:00:00.000000000 Z
12
+ date: 2011-10-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rb-appscript
@@ -24,7 +24,7 @@ dependencies:
24
24
  version_requirements: *2151764080
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &2151763300 !ruby/object:Gem::Requirement
27
+ requirement: &2151763000 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 3.1.1
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2151763300
35
+ version_requirements: *2151763000
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: i18n
38
- requirement: &2151762780 !ruby/object:Gem::Requirement
38
+ requirement: &2151762440 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.6.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2151762780
46
+ version_requirements: *2151762440
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: activerecord
49
- requirement: &2151776900 !ruby/object:Gem::Requirement
49
+ requirement: &2151761700 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 3.1.1
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2151776900
57
+ version_requirements: *2151761700
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: sinatra
60
- requirement: &2151770720 !ruby/object:Gem::Requirement
60
+ requirement: &2151771560 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.3.0
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *2151770720
68
+ version_requirements: *2151771560
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sinatra-snap
71
- requirement: &2151783520 !ruby/object:Gem::Requirement
71
+ requirement: &2151784680 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.3.2
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *2151783520
79
+ version_requirements: *2151784680
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: haml
82
- requirement: &2151780300 !ruby/object:Gem::Requirement
82
+ requirement: &2151781300 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: 3.1.3
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *2151780300
90
+ version_requirements: *2151781300
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: grit
93
93
  requirement: &2151793180 !ruby/object:Gem::Requirement
@@ -101,7 +101,7 @@ dependencies:
101
101
  version_requirements: *2151793180
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: coffee-script
104
- requirement: &2151791240 !ruby/object:Gem::Requirement
104
+ requirement: &2151791580 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 2.2.0
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *2151791240
112
+ version_requirements: *2151791580
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: uglifier
115
- requirement: &2151790060 !ruby/object:Gem::Requirement
115
+ requirement: &2151790100 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 1.0.3
121
121
  type: :runtime
122
122
  prerelease: false
123
- version_requirements: *2151790060
123
+ version_requirements: *2151790100
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: sass
126
- requirement: &2151788520 !ruby/object:Gem::Requirement
126
+ requirement: &2151788640 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: 3.1.10
132
132
  type: :runtime
133
133
  prerelease: false
134
- version_requirements: *2151788520
134
+ version_requirements: *2151788640
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: sprockets
137
- requirement: &2151787400 !ruby/object:Gem::Requirement
137
+ requirement: &2151787500 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ~>
@@ -142,10 +142,10 @@ dependencies:
142
142
  version: 2.0.2
143
143
  type: :runtime
144
144
  prerelease: false
145
- version_requirements: *2151787400
145
+ version_requirements: *2151787500
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: guard
148
- requirement: &2151785960 !ruby/object:Gem::Requirement
148
+ requirement: &2151786020 !ruby/object:Gem::Requirement
149
149
  none: false
150
150
  requirements:
151
151
  - - ~>
@@ -153,10 +153,10 @@ dependencies:
153
153
  version: 0.8.4
154
154
  type: :development
155
155
  prerelease: false
156
- version_requirements: *2151785960
156
+ version_requirements: *2151786020
157
157
  - !ruby/object:Gem::Dependency
158
158
  name: guard-bundler
159
- requirement: &2151801340 !ruby/object:Gem::Requirement
159
+ requirement: &2151801200 !ruby/object:Gem::Requirement
160
160
  none: false
161
161
  requirements:
162
162
  - - ~>
@@ -164,10 +164,10 @@ dependencies:
164
164
  version: 0.1.3
165
165
  type: :development
166
166
  prerelease: false
167
- version_requirements: *2151801340
167
+ version_requirements: *2151801200
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: guard-rspec
170
- requirement: &2151799780 !ruby/object:Gem::Requirement
170
+ requirement: &2151799800 !ruby/object:Gem::Requirement
171
171
  none: false
172
172
  requirements:
173
173
  - - ~>
@@ -175,10 +175,10 @@ dependencies:
175
175
  version: 0.4.5
176
176
  type: :development
177
177
  prerelease: false
178
- version_requirements: *2151799780
178
+ version_requirements: *2151799800
179
179
  - !ruby/object:Gem::Dependency
180
180
  name: guard-sprockets2
181
- requirement: &2151796240 !ruby/object:Gem::Requirement
181
+ requirement: &2151798680 !ruby/object:Gem::Requirement
182
182
  none: false
183
183
  requirements:
184
184
  - - ~>
@@ -186,10 +186,10 @@ dependencies:
186
186
  version: 0.0.5
187
187
  type: :development
188
188
  prerelease: false
189
- version_requirements: *2151796240
189
+ version_requirements: *2151798680
190
190
  - !ruby/object:Gem::Dependency
191
191
  name: yard
192
- requirement: &2151808580 !ruby/object:Gem::Requirement
192
+ requirement: &2151794200 !ruby/object:Gem::Requirement
193
193
  none: false
194
194
  requirements:
195
195
  - - ~>
@@ -197,10 +197,10 @@ dependencies:
197
197
  version: 0.7.2
198
198
  type: :development
199
199
  prerelease: false
200
- version_requirements: *2151808580
200
+ version_requirements: *2151794200
201
201
  - !ruby/object:Gem::Dependency
202
202
  name: rspec
203
- requirement: &2151804180 !ruby/object:Gem::Requirement
203
+ requirement: &2151804120 !ruby/object:Gem::Requirement
204
204
  none: false
205
205
  requirements:
206
206
  - - ~>
@@ -208,10 +208,10 @@ dependencies:
208
208
  version: 2.6.0
209
209
  type: :development
210
210
  prerelease: false
211
- version_requirements: *2151804180
211
+ version_requirements: *2151804120
212
212
  - !ruby/object:Gem::Dependency
213
213
  name: rspec-rails
214
- requirement: &2151817740 !ruby/object:Gem::Requirement
214
+ requirement: &2151817980 !ruby/object:Gem::Requirement
215
215
  none: false
216
216
  requirements:
217
217
  - - ~>
@@ -219,10 +219,10 @@ dependencies:
219
219
  version: 2.6.1
220
220
  type: :development
221
221
  prerelease: false
222
- version_requirements: *2151817740
222
+ version_requirements: *2151817980
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: capybara
225
- requirement: &2151816300 !ruby/object:Gem::Requirement
225
+ requirement: &2151816560 !ruby/object:Gem::Requirement
226
226
  none: false
227
227
  requirements:
228
228
  - - ~>
@@ -230,10 +230,10 @@ dependencies:
230
230
  version: 1.1.1
231
231
  type: :development
232
232
  prerelease: false
233
- version_requirements: *2151816300
233
+ version_requirements: *2151816560
234
234
  - !ruby/object:Gem::Dependency
235
235
  name: launchy
236
- requirement: &2151826240 !ruby/object:Gem::Requirement
236
+ requirement: &2151815460 !ruby/object:Gem::Requirement
237
237
  none: false
238
238
  requirements:
239
239
  - - ~>
@@ -241,10 +241,10 @@ dependencies:
241
241
  version: 2.0.5
242
242
  type: :development
243
243
  prerelease: false
244
- version_requirements: *2151826240
244
+ version_requirements: *2151815460
245
245
  - !ruby/object:Gem::Dependency
246
246
  name: mocha
247
- requirement: &2151822840 !ruby/object:Gem::Requirement
247
+ requirement: &2151825280 !ruby/object:Gem::Requirement
248
248
  none: false
249
249
  requirements:
250
250
  - - ~>
@@ -252,10 +252,10 @@ dependencies:
252
252
  version: 0.10.0
253
253
  type: :development
254
254
  prerelease: false
255
- version_requirements: *2151822840
255
+ version_requirements: *2151825280
256
256
  - !ruby/object:Gem::Dependency
257
257
  name: factory_girl
258
- requirement: &2151820800 !ruby/object:Gem::Requirement
258
+ requirement: &2151821220 !ruby/object:Gem::Requirement
259
259
  none: false
260
260
  requirements:
261
261
  - - ~>
@@ -263,10 +263,10 @@ dependencies:
263
263
  version: 2.1.2
264
264
  type: :development
265
265
  prerelease: false
266
- version_requirements: *2151820800
266
+ version_requirements: *2151821220
267
267
  - !ruby/object:Gem::Dependency
268
268
  name: timecop
269
- requirement: &2151820060 !ruby/object:Gem::Requirement
269
+ requirement: &2151820400 !ruby/object:Gem::Requirement
270
270
  none: false
271
271
  requirements:
272
272
  - - ~>
@@ -274,10 +274,10 @@ dependencies:
274
274
  version: 0.3.5
275
275
  type: :development
276
276
  prerelease: false
277
- version_requirements: *2151820060
277
+ version_requirements: *2151820400
278
278
  - !ruby/object:Gem::Dependency
279
279
  name: pry
280
- requirement: &2151819060 !ruby/object:Gem::Requirement
280
+ requirement: &2151819580 !ruby/object:Gem::Requirement
281
281
  none: false
282
282
  requirements:
283
283
  - - ~>
@@ -285,8 +285,22 @@ dependencies:
285
285
  version: 0.9.6.2
286
286
  type: :development
287
287
  prerelease: false
288
- version_requirements: *2151819060
289
- description: WatchTower helps you track the time you spend on each project.
288
+ version_requirements: *2151819580
289
+ description: ! 'Did you ever wonder how much each of your projects really costs? Watch
290
+ Tower
291
+
292
+ comes to the rescue.
293
+
294
+
295
+ WatchTower runs in the background and monitors your editors and records the
296
+
297
+ time you spend on each file and thus on the project in total. Using a simple
298
+
299
+ but powerful web interface, you can view details and statistics about each
300
+
301
+ project and each file.
302
+
303
+ '
290
304
  email:
291
305
  - wael.nasreddine@gmail.com
292
306
  executables:
@@ -377,7 +391,7 @@ files:
377
391
  - lib/watch_tower/server/presenters/project_presenter.rb
378
392
  - lib/watch_tower/server/public/assets/WatchTower-58eff0713efffbc6054defddc879e0b1.jpg
379
393
  - lib/watch_tower/server/public/assets/application-6a1be75d4fd6a545faceb638e47a2486.js
380
- - lib/watch_tower/server/public/assets/application-e3e0c10519d824e8909bf09ecbad4c43.css
394
+ - lib/watch_tower/server/public/assets/application-b8c3ec9943038da13afb0c29ade74542.css
381
395
  - lib/watch_tower/server/public/assets/calendar-379834cd6e6321a940b662ace47f3032.gif
382
396
  - lib/watch_tower/server/public/assets/calendar-blue-d6aa74feef7ee4287532761db99a6c0a.gif
383
397
  - lib/watch_tower/server/public/assets/calendar-green-3752fe2996091379c8d321f759039385.gif
@@ -433,7 +447,7 @@ files:
433
447
  - spec/watch_tower/server/presenters/project_presenter_spec.rb
434
448
  - spec/watch_tower/server_spec.rb
435
449
  - watch_tower.gemspec
436
- homepage: ''
450
+ homepage: https://github.com/TechnoGate/watch_tower
437
451
  licenses: []
438
452
  post_install_message:
439
453
  rdoc_options: []
@@ -456,7 +470,8 @@ rubyforge_project:
456
470
  rubygems_version: 1.8.10
457
471
  signing_key:
458
472
  specification_version: 3
459
- summary: Unobtrusive time-tracking for TextMate.
473
+ summary: WatchTower helps you track the time you spend on each project and on each
474
+ file in the projects.
460
475
  test_files:
461
476
  - spec/factories.rb
462
477
  - spec/spec_helper.rb