watch_tower 0.0.1.beta1 → 0.0.1.beta2
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/.todo +24 -3
- data/MIT-LICENSE +1 -1
- data/README.md +9 -5
- data/TODO +21 -3
- data/ci/adapters/jruby-sqlite.yml +1 -1
- data/ci/adapters/ruby-sqlite.yml +1 -1
- data/ci/travis.rb +1 -0
- data/lib/watch_tower/eye.rb +4 -0
- data/lib/watch_tower/project/git_based.rb +4 -4
- data/lib/watch_tower/server/assets/stylesheets/file_tree.sass +3 -0
- data/lib/watch_tower/server/database.rb +1 -2
- data/lib/watch_tower/server/models/time_entry.rb +1 -1
- data/lib/watch_tower/server/presenters/application_presenter.rb +1 -1
- data/lib/watch_tower/server/public/assets/{application-4e6971066e06aa53b0c8e52c764044d1.css → application-90ce2ed0ccfaceec7a954b91e05be8d6.css} +2 -0
- data/lib/watch_tower/version.rb +1 -1
- data/spec/support/active_record.rb +5 -5
- data/spec/watch_tower/eye_spec.rb +10 -1
- data/spec/watch_tower/project/git_based_spec.rb +5 -5
- data/spec/watch_tower/server/app_spec.rb +2 -2
- data/spec/watch_tower/server/models/duration_spec.rb +60 -0
- data/spec/watch_tower/server/models/file_spec.rb +4 -2
- data/spec/watch_tower/server/models/project_spec.rb +3 -2
- data/watch_tower.gemspec +1 -1
- metadata +56 -54
data/.todo
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
<?xml version="1.0"?>
|
2
2
|
<todo version="0.1.20">
|
3
|
+
<note priority="veryhigh" time="1319041505" done="1319386202">
|
4
|
+
The elapsed time of the project should change when the duration changes
|
5
|
+
</note>
|
3
6
|
<note priority="medium" time="1317884658" done="1317889968">
|
4
7
|
Remove the last_id from File and Project as it's not needed.
|
5
8
|
</note>
|
@@ -12,12 +15,12 @@
|
|
12
15
|
<note priority="medium" time="1317889118" done="1317980852">
|
13
16
|
Add a ci/travis.rb script which runs the tests under Travis-CI, needed because the config file added in todo number 3 won't exist and the current setup (sqlite) does not work with JRuby
|
14
17
|
</note>
|
15
|
-
<note priority="veryhigh" time="1319041505">
|
16
|
-
The elapsed time of the project should change when the duration changes
|
17
|
-
</note>
|
18
18
|
<note priority="high" time="1318256016">
|
19
19
|
Figure out how to load assets from gems and remove the bundled jQuery files.
|
20
20
|
</note>
|
21
|
+
<note priority="high" time="1319386552">
|
22
|
+
Make it possible to add a new project, a project that can't be recognised by GitBased nor PathBased.
|
23
|
+
</note>
|
21
24
|
<note priority="medium" time="1317895354">
|
22
25
|
The Config module need some tests.
|
23
26
|
</note>
|
@@ -33,4 +36,22 @@
|
|
33
36
|
<note priority="medium" time="1318258373">
|
34
37
|
Maybe use a Rails engine instead of Sinatra ?
|
35
38
|
</note>
|
39
|
+
<note priority="medium" time="1319386376">
|
40
|
+
Add support for ViM
|
41
|
+
</note>
|
42
|
+
<note priority="medium" time="1319386385">
|
43
|
+
Add support for Netbeans
|
44
|
+
</note>
|
45
|
+
<note priority="medium" time="1319386394">
|
46
|
+
Add support for Eclipse
|
47
|
+
</note>
|
48
|
+
<note priority="medium" time="1319386464">
|
49
|
+
Add support for Linux (it should work after adding ViM, Eclipse and Netbeans)
|
50
|
+
</note>
|
51
|
+
<note priority="medium" time="1319386476">
|
52
|
+
Add support for Microsoft Windows
|
53
|
+
</note>
|
54
|
+
<note priority="medium" time="1319386499">
|
55
|
+
Add support Microsoft Office (Word, Excel, Powerpoint)
|
56
|
+
</note>
|
36
57
|
</todo>
|
data/MIT-LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Watch Tower [](http://travis-ci.org/TechnoGate/watch_tower) 
|
1
|
+
# Watch Tower [](http://travis-ci.org/TechnoGate/watch_tower) [](http://stillmaintained.com/TechnoGate/watch_tower)
|
2
2
|
|
3
3
|
[](http://www.pledgie.com/campaigns/16123)
|
4
4
|
|
@@ -19,8 +19,8 @@ project
|
|
19
19
|
The installation has been made as simple as possible, here's the steps required:
|
20
20
|
|
21
21
|
```bash
|
22
|
-
$ gem install watch_tower
|
23
|
-
$ watchtower
|
22
|
+
$ gem install watch_tower --pre
|
23
|
+
$ watchtower install
|
24
24
|
```
|
25
25
|
|
26
26
|
This creates a configuration file which you __should__ review before invoking
|
@@ -41,11 +41,11 @@ $ watchtower open
|
|
41
41
|
|
42
42
|
## Home page
|
43
43
|
|
44
|
-

|
44
|
+
[](http://cloud.github.com/downloads/TechnoGate/watch_tower/home_page.png)
|
45
45
|
|
46
46
|
## Project page
|
47
47
|
|
48
|
-

|
48
|
+
[](http://cloud.github.com/downloads/TechnoGate/watch_tower/project_page.png)
|
49
49
|
|
50
50
|
# Contributing
|
51
51
|
|
@@ -58,6 +58,10 @@ following guidelines:
|
|
58
58
|
- Include tests.
|
59
59
|
- Do not change the version, We will take care of that.
|
60
60
|
|
61
|
+
You can also take a look at the [TODO
|
62
|
+
list](https://github.com/TechnoGate/watch_tower/blob/master/TODO) for what's
|
63
|
+
in mind for the project
|
64
|
+
|
61
65
|
# License
|
62
66
|
|
63
67
|
## This code is free to use under the terms of the MIT license.
|
data/TODO
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
- The elapsed time of the project should change when the duration changes
|
2
|
-
(added Wed Oct 19 18:25:05 2011, incomplete, priority veryhigh)
|
3
|
-
|
4
1
|
- Figure out how to load assets from gems and remove the bundled jQuery files.
|
5
2
|
(added Mon Oct 10 16:13:36 2011, incomplete, priority high)
|
6
3
|
|
4
|
+
- Make it possible to add a new project, a project that can't be recognised by GitBased nor PathBased.
|
5
|
+
(added Sun Oct 23 18:15:52 2011, incomplete, priority high)
|
6
|
+
|
7
7
|
- The Config module need some tests.
|
8
8
|
(added Thu Oct 6 12:02:34 2011, incomplete, priority medium)
|
9
9
|
|
@@ -18,3 +18,21 @@
|
|
18
18
|
|
19
19
|
- Maybe use a Rails engine instead of Sinatra ?
|
20
20
|
(added Mon Oct 10 16:52:53 2011, incomplete, priority medium)
|
21
|
+
|
22
|
+
- Add support for ViM
|
23
|
+
(added Sun Oct 23 18:12:56 2011, incomplete, priority medium)
|
24
|
+
|
25
|
+
- Add support for Netbeans
|
26
|
+
(added Sun Oct 23 18:13:05 2011, incomplete, priority medium)
|
27
|
+
|
28
|
+
- Add support for Eclipse
|
29
|
+
(added Sun Oct 23 18:13:14 2011, incomplete, priority medium)
|
30
|
+
|
31
|
+
- Add support for Linux (it should work after adding ViM, Eclipse and Netbeans)
|
32
|
+
(added Sun Oct 23 18:14:24 2011, incomplete, priority medium)
|
33
|
+
|
34
|
+
- Add support for Microsoft Windows
|
35
|
+
(added Sun Oct 23 18:14:36 2011, incomplete, priority medium)
|
36
|
+
|
37
|
+
- Add support Microsoft Office (Word, Excel, Powerpoint)
|
38
|
+
(added Sun Oct 23 18:14:59 2011, incomplete, priority medium)
|
data/ci/adapters/ruby-sqlite.yml
CHANGED
data/ci/travis.rb
CHANGED
@@ -32,6 +32,7 @@ class Build
|
|
32
32
|
|
33
33
|
def create_config_file
|
34
34
|
commands = [
|
35
|
+
"rm -rf ~/.watch_tower",
|
35
36
|
"mkdir -p ~/.watch_tower",
|
36
37
|
"cp lib/watch_tower/templates/config.yml ~/.watch_tower/config.yml",
|
37
38
|
"cat ci/adapters/#{ruby_platform}-#{adapter}.yml >> ~/.watch_tower/config.yml"
|
data/lib/watch_tower/eye.rb
CHANGED
@@ -6,6 +6,9 @@ module WatchTower
|
|
6
6
|
module Eye
|
7
7
|
extend self
|
8
8
|
|
9
|
+
# Ignore paths
|
10
|
+
IGNORED_PATHS = %r(/(.git|.svn)/)
|
11
|
+
|
9
12
|
# Start the watch loop
|
10
13
|
#
|
11
14
|
# @param [Hash] options
|
@@ -28,6 +31,7 @@ module WatchTower
|
|
28
31
|
files_paths.each do |file_path|
|
29
32
|
begin
|
30
33
|
next unless file_path && File.exists?(file_path)
|
34
|
+
next if file_path =~ IGNORED_PATHS
|
31
35
|
# Get the file_hash of the file
|
32
36
|
file_hash = Digest::SHA1.file(file_path).hexdigest
|
33
37
|
# Create a project from the file_path
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'grit'
|
4
4
|
|
5
5
|
module WatchTower
|
6
6
|
class Project
|
@@ -59,12 +59,12 @@ module WatchTower
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def head(path)
|
62
|
-
log(path)
|
62
|
+
log(path).first
|
63
63
|
end
|
64
64
|
|
65
65
|
def log(path)
|
66
|
-
g = ::
|
67
|
-
g.
|
66
|
+
g = Grit::Repo.new(path)
|
67
|
+
g.commits
|
68
68
|
end
|
69
69
|
|
70
70
|
protected
|
@@ -31,7 +31,7 @@ module WatchTower
|
|
31
31
|
def calculate_elapsed_time
|
32
32
|
# Gather information about this and last time entry for this file
|
33
33
|
this_time_entry = self
|
34
|
-
last_time_entry = file.time_entries.where('id < ?', this_time_entry.id).order('id DESC').first
|
34
|
+
last_time_entry = file.time_entries.where('id < ?', this_time_entry.id).order('id DESC').limit(1).first
|
35
35
|
# Check the hash first
|
36
36
|
return if this_time_entry.file_hash == last_time_entry.try(:file_hash)
|
37
37
|
# Update the file's hash
|
@@ -112,7 +112,7 @@ module WatchTower
|
|
112
112
|
html = %(<div id="nested_#{folder_name}" class="nested_folder">)
|
113
113
|
end
|
114
114
|
# Open the wrapper
|
115
|
-
html << '<div>'
|
115
|
+
html << '<div class="folder_wrapper">'
|
116
116
|
# Add the collapsed span
|
117
117
|
html << '<span class="collapsed">+</span>'
|
118
118
|
# Add the name
|
data/lib/watch_tower/version.rb
CHANGED
@@ -20,11 +20,6 @@ RSpec::configure do |config|
|
|
20
20
|
:file_path => config.escaped_path(%w[spec watch_tower server models])
|
21
21
|
}
|
22
22
|
|
23
|
-
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
24
|
-
# examples within a transaction, remove the following line or assign false
|
25
|
-
# instead of true.
|
26
|
-
config.use_transactional_fixtures = true
|
27
|
-
|
28
23
|
# This is a hack to empty up the database before each test
|
29
24
|
# I wasn't able to replicate what Rails / RSpec does for the test suite
|
30
25
|
# I'd appreciate any hints to speed up the test suite.
|
@@ -41,4 +36,9 @@ RSpec::configure do |config|
|
|
41
36
|
config.before(:all) do
|
42
37
|
WatchTower::Server::Database.start!
|
43
38
|
end
|
39
|
+
|
40
|
+
# Stop the server after all examples
|
41
|
+
config.after(:all) do
|
42
|
+
WatchTower::Server::Database.stop!
|
43
|
+
end
|
44
44
|
end
|
@@ -38,7 +38,7 @@ describe Eye do
|
|
38
38
|
Digest::SHA1.stubs(:file).with(@file_path).returns(@file_hash)
|
39
39
|
end
|
40
40
|
|
41
|
-
describe "#start
|
41
|
+
describe "#start workflow" do
|
42
42
|
before(:each) do
|
43
43
|
# Mock the project's model
|
44
44
|
# @time_entry = stub_everything('time_entry')
|
@@ -74,6 +74,15 @@ describe Eye do
|
|
74
74
|
subject.start
|
75
75
|
end
|
76
76
|
|
77
|
+
it "shouldn't add the file if it matches the ignore list" do
|
78
|
+
ignored_path = '/path/to/project/.git/COMMIT_MESSAGE'
|
79
|
+
::File.stubs(:exists?).with(ignored_path).returns(true)
|
80
|
+
@editor.stubs(:current_paths).returns([ignored_path])
|
81
|
+
Digest::SHA1.expects(:file).with(ignored_path).never
|
82
|
+
|
83
|
+
subject.start
|
84
|
+
end
|
85
|
+
|
77
86
|
it "should get the file's hash from Digest::SHA1" do
|
78
87
|
Digest::SHA1.expects(:file).with(@file_path).returns(@file_hash).once
|
79
88
|
|
@@ -109,11 +109,11 @@ class Project
|
|
109
109
|
|
110
110
|
it { should respond_to :head }
|
111
111
|
|
112
|
-
it "should create a
|
112
|
+
it "should create a Grit::Repo object" do
|
113
113
|
commit = mock
|
114
114
|
git_base = mock
|
115
|
-
git_base.stubs(:
|
116
|
-
::
|
115
|
+
git_base.stubs(:commits).returns([commit])
|
116
|
+
Grit::Repo.expects(:new).with(@project_path).returns(git_base).once
|
117
117
|
|
118
118
|
subject.head(@project_path)
|
119
119
|
end
|
@@ -121,8 +121,8 @@ class Project
|
|
121
121
|
it "should return the head revision" do
|
122
122
|
commit = mock
|
123
123
|
git_base = mock
|
124
|
-
git_base.stubs(:
|
125
|
-
::
|
124
|
+
git_base.stubs(:commits).returns([commit])
|
125
|
+
Grit::Repo.stubs(:new).with(@project_path).returns(git_base)
|
126
126
|
|
127
127
|
subject.head(@project_path).should == commit
|
128
128
|
end
|
@@ -17,7 +17,7 @@ module Server
|
|
17
17
|
5.times do
|
18
18
|
@projects[:not_empty][:time_entries] << FactoryGirl.create(:time_entry, file: @projects[:not_empty][:files].first)
|
19
19
|
end
|
20
|
-
@projects[:not_empty][:
|
20
|
+
@projects[:not_empty][:durations] = @projects[:not_empty][:project].durations
|
21
21
|
Timecop.freeze(Time.now + 2.days)
|
22
22
|
end
|
23
23
|
Timecop.return
|
@@ -27,7 +27,7 @@ module Server
|
|
27
27
|
@projects[:empty][:files] << FactoryGirl.create(:file, project: @projects[:empty][:project])
|
28
28
|
end
|
29
29
|
@projects[:empty][:time_entries] << FactoryGirl.create(:time_entry, file: @projects[:empty][:files].first)
|
30
|
-
@projects[:empty][:
|
30
|
+
@projects[:empty][:durations] = @projects[:empty][:project].durations
|
31
31
|
end
|
32
32
|
|
33
33
|
after(:each) do
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Server
|
4
|
+
describe Duration do
|
5
|
+
describe "Attributes" do
|
6
|
+
it { should respond_to :date }
|
7
|
+
|
8
|
+
it { should respond_to :duration }
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "Validations" do
|
12
|
+
it { should_not be_valid }
|
13
|
+
|
14
|
+
it "should require a file" do
|
15
|
+
d = FactoryGirl.build :duration, file: nil
|
16
|
+
d.should_not be_valid
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should require a date" do
|
20
|
+
d = FactoryGirl.build :duration, date: nil
|
21
|
+
d.should_not be_valid
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should require a duration" do
|
25
|
+
d = FactoryGirl.build :duration, duration: nil
|
26
|
+
d.should_not be_valid
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "Associations" do
|
31
|
+
it "should belong to a file" do
|
32
|
+
f = FactoryGirl.create :file
|
33
|
+
d = FactoryGirl.create :duration, file: f
|
34
|
+
|
35
|
+
d.file.should == f
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "#duration" do
|
40
|
+
it "should default to 0 for a project with 0 elapsed time" do
|
41
|
+
p = FactoryGirl.create :project
|
42
|
+
f = FactoryGirl.create :file, project: p
|
43
|
+
t = FactoryGirl.create :time_entry, file: f
|
44
|
+
|
45
|
+
p.durations.inject(0) { |count, d| count += d.duration }.should == 0
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should correctly be calculated" do
|
49
|
+
now = Time.now
|
50
|
+
p = FactoryGirl.create :project
|
51
|
+
f = FactoryGirl.create :file, project: p
|
52
|
+
t1 = FactoryGirl.create :time_entry, file: f, mtime: now
|
53
|
+
t2 = FactoryGirl.create :time_entry, file: f, mtime: now + 10.seconds
|
54
|
+
|
55
|
+
p.durations.inject(0) { |count, d| count += d.duration }.should == 10
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
@@ -241,12 +241,14 @@ module Server
|
|
241
241
|
before(:each) do
|
242
242
|
@project = FactoryGirl.create :project
|
243
243
|
@files = []
|
244
|
+
Timecop.freeze(Time.now)
|
244
245
|
2.times do
|
245
246
|
@files << FactoryGirl.create(:file, project: @project)
|
246
|
-
2.times do
|
247
|
-
FactoryGirl.create :time_entry, file: @files.last
|
247
|
+
2.times do |n|
|
248
|
+
FactoryGirl.create :time_entry, file: @files.last, mtime: Time.now + 2 * n
|
248
249
|
end
|
249
250
|
end
|
251
|
+
Timecop.return
|
250
252
|
end
|
251
253
|
describe "#sum_elapsed_time" do
|
252
254
|
it "should return the sum of all elapsed times of all the files for the same project" do
|
@@ -273,11 +273,12 @@ module Server
|
|
273
273
|
@projects << FactoryGirl.create(:project)
|
274
274
|
end
|
275
275
|
|
276
|
+
Timecop.freeze(Time.now)
|
276
277
|
@projects.each do |p|
|
277
278
|
2.times do
|
278
279
|
f = FactoryGirl.create(:file, project: p)
|
279
|
-
2.times do
|
280
|
-
FactoryGirl.create :time_entry, file: f
|
280
|
+
2.times do |n|
|
281
|
+
FactoryGirl.create :time_entry, file: f, mtime: Time.now + 2 * n
|
281
282
|
end
|
282
283
|
end
|
283
284
|
end
|
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.1.
|
4
|
+
version: 0.0.1.beta2
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-10-23 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rb-appscript
|
16
|
-
requirement: &
|
16
|
+
requirement: &2151847880 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.6.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2151847880
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activesupport
|
27
|
-
requirement: &
|
27
|
+
requirement: &2151847240 !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: *
|
35
|
+
version_requirements: *2151847240
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: i18n
|
38
|
-
requirement: &
|
38
|
+
requirement: &2151846040 !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: *
|
46
|
+
version_requirements: *2151846040
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: activerecord
|
49
|
-
requirement: &
|
49
|
+
requirement: &2151845460 !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: *
|
57
|
+
version_requirements: *2151845460
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: sinatra
|
60
|
-
requirement: &
|
60
|
+
requirement: &2151844780 !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: *
|
68
|
+
version_requirements: *2151844780
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: sinatra-snap
|
71
|
-
requirement: &
|
71
|
+
requirement: &2151844160 !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: *
|
79
|
+
version_requirements: *2151844160
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: haml
|
82
|
-
requirement: &
|
82
|
+
requirement: &2151843400 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,21 +87,21 @@ dependencies:
|
|
87
87
|
version: 3.1.3
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *2151843400
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
|
-
name:
|
93
|
-
requirement: &
|
92
|
+
name: grit
|
93
|
+
requirement: &2151859160 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version:
|
98
|
+
version: 2.4.1
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *2151859160
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: coffee-script
|
104
|
-
requirement: &
|
104
|
+
requirement: &2151858340 !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: *
|
112
|
+
version_requirements: *2151858340
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: uglifier
|
115
|
-
requirement: &
|
115
|
+
requirement: &2151857580 !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: *
|
123
|
+
version_requirements: *2151857580
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: sass
|
126
|
-
requirement: &
|
126
|
+
requirement: &2151856520 !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: *
|
134
|
+
version_requirements: *2151856520
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: sprockets
|
137
|
-
requirement: &
|
137
|
+
requirement: &2151855220 !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: *
|
145
|
+
version_requirements: *2151855220
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: guard
|
148
|
-
requirement: &
|
148
|
+
requirement: &2151854100 !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: *
|
156
|
+
version_requirements: *2151854100
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
158
|
name: guard-bundler
|
159
|
-
requirement: &
|
159
|
+
requirement: &2151853260 !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: *
|
167
|
+
version_requirements: *2151853260
|
168
168
|
- !ruby/object:Gem::Dependency
|
169
169
|
name: guard-rspec
|
170
|
-
requirement: &
|
170
|
+
requirement: &2151852340 !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: *
|
178
|
+
version_requirements: *2151852340
|
179
179
|
- !ruby/object:Gem::Dependency
|
180
180
|
name: guard-sprockets2
|
181
|
-
requirement: &
|
181
|
+
requirement: &2151867020 !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: *
|
189
|
+
version_requirements: *2151867020
|
190
190
|
- !ruby/object:Gem::Dependency
|
191
191
|
name: yard
|
192
|
-
requirement: &
|
192
|
+
requirement: &2151864160 !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: *
|
200
|
+
version_requirements: *2151864160
|
201
201
|
- !ruby/object:Gem::Dependency
|
202
202
|
name: rspec
|
203
|
-
requirement: &
|
203
|
+
requirement: &2151862820 !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: *
|
211
|
+
version_requirements: *2151862820
|
212
212
|
- !ruby/object:Gem::Dependency
|
213
213
|
name: rspec-rails
|
214
|
-
requirement: &
|
214
|
+
requirement: &2151862020 !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: *
|
222
|
+
version_requirements: *2151862020
|
223
223
|
- !ruby/object:Gem::Dependency
|
224
224
|
name: capybara
|
225
|
-
requirement: &
|
225
|
+
requirement: &2151872460 !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: *
|
233
|
+
version_requirements: *2151872460
|
234
234
|
- !ruby/object:Gem::Dependency
|
235
235
|
name: launchy
|
236
|
-
requirement: &
|
236
|
+
requirement: &2151871140 !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: *
|
244
|
+
version_requirements: *2151871140
|
245
245
|
- !ruby/object:Gem::Dependency
|
246
246
|
name: mocha
|
247
|
-
requirement: &
|
247
|
+
requirement: &2151870300 !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: *
|
255
|
+
version_requirements: *2151870300
|
256
256
|
- !ruby/object:Gem::Dependency
|
257
257
|
name: factory_girl
|
258
|
-
requirement: &
|
258
|
+
requirement: &2151869280 !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: *
|
266
|
+
version_requirements: *2151869280
|
267
267
|
- !ruby/object:Gem::Dependency
|
268
268
|
name: timecop
|
269
|
-
requirement: &
|
269
|
+
requirement: &2151868340 !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: *
|
277
|
+
version_requirements: *2151868340
|
278
278
|
- !ruby/object:Gem::Dependency
|
279
279
|
name: pry
|
280
|
-
requirement: &
|
280
|
+
requirement: &2151881480 !ruby/object:Gem::Requirement
|
281
281
|
none: false
|
282
282
|
requirements:
|
283
283
|
- - ~>
|
@@ -285,7 +285,7 @@ dependencies:
|
|
285
285
|
version: 0.9.6.2
|
286
286
|
type: :development
|
287
287
|
prerelease: false
|
288
|
-
version_requirements: *
|
288
|
+
version_requirements: *2151881480
|
289
289
|
description: WatchTower helps you track the time you spend on each project.
|
290
290
|
email:
|
291
291
|
- wael.nasreddine@gmail.com
|
@@ -376,8 +376,8 @@ files:
|
|
376
376
|
- lib/watch_tower/server/presenters/file_presenter.rb
|
377
377
|
- lib/watch_tower/server/presenters/project_presenter.rb
|
378
378
|
- lib/watch_tower/server/public/assets/WatchTower-58eff0713efffbc6054defddc879e0b1.jpg
|
379
|
-
- lib/watch_tower/server/public/assets/application-4e6971066e06aa53b0c8e52c764044d1.css
|
380
379
|
- lib/watch_tower/server/public/assets/application-6a1be75d4fd6a545faceb638e47a2486.js
|
380
|
+
- lib/watch_tower/server/public/assets/application-90ce2ed0ccfaceec7a954b91e05be8d6.css
|
381
381
|
- lib/watch_tower/server/public/assets/calendar-379834cd6e6321a940b662ace47f3032.gif
|
382
382
|
- lib/watch_tower/server/public/assets/calendar-blue-d6aa74feef7ee4287532761db99a6c0a.gif
|
383
383
|
- lib/watch_tower/server/public/assets/calendar-green-3752fe2996091379c8d321f759039385.gif
|
@@ -424,6 +424,7 @@ files:
|
|
424
424
|
- spec/watch_tower/project/path_based_spec.rb
|
425
425
|
- spec/watch_tower/project_spec.rb
|
426
426
|
- spec/watch_tower/server/app_spec.rb
|
427
|
+
- spec/watch_tower/server/models/duration_spec.rb
|
427
428
|
- spec/watch_tower/server/models/file_spec.rb
|
428
429
|
- spec/watch_tower/server/models/project_spec.rb
|
429
430
|
- spec/watch_tower/server/models/time_entry_spec.rb
|
@@ -480,6 +481,7 @@ test_files:
|
|
480
481
|
- spec/watch_tower/project/path_based_spec.rb
|
481
482
|
- spec/watch_tower/project_spec.rb
|
482
483
|
- spec/watch_tower/server/app_spec.rb
|
484
|
+
- spec/watch_tower/server/models/duration_spec.rb
|
483
485
|
- spec/watch_tower/server/models/file_spec.rb
|
484
486
|
- spec/watch_tower/server/models/project_spec.rb
|
485
487
|
- spec/watch_tower/server/models/time_entry_spec.rb
|