rtt 0.0.0.1
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/LICENSE +22 -0
- data/Manifest +28 -0
- data/README.rdoc +78 -0
- data/Rakefile +16 -0
- data/USAGE.txt +13 -0
- data/bin/rtt +8 -0
- data/db/rtt.sqlite3 +0 -0
- data/db/test.sqlite3 +0 -0
- data/init.sh +5 -0
- data/lib/rtt.rb +137 -0
- data/lib/rtt/client.rb +25 -0
- data/lib/rtt/cmd_line_interpreter.rb +137 -0
- data/lib/rtt/hash_extensions.rb +86 -0
- data/lib/rtt/project.rb +35 -0
- data/lib/rtt/query_builder.rb +22 -0
- data/lib/rtt/report_generator.rb +190 -0
- data/lib/rtt/storage.rb +19 -0
- data/lib/rtt/task.rb +136 -0
- data/lib/rtt/user.rb +54 -0
- data/lib/rtt/user_configurator.rb +24 -0
- data/rtt.gemspec +50 -0
- data/rtt_report +401 -0
- data/spec/datamapper_spec_helper.rb +1 -0
- data/spec/lib/rtt/task_spec.rb +106 -0
- data/spec/lib/rtt_spec.rb +186 -0
- data/tasks/rtt.rake +66 -0
- data/todo.txt +3 -0
- metadata +207 -0
@@ -0,0 +1 @@
|
|
1
|
+
require 'lib/rtt'
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'mocha'
|
2
|
+
require File.join( File.dirname(__FILE__), '..', '..', 'datamapper_spec_helper')
|
3
|
+
|
4
|
+
describe Rtt::Task do
|
5
|
+
|
6
|
+
before do
|
7
|
+
Rtt.init(:test)
|
8
|
+
Rtt.migrate
|
9
|
+
@task_name = 'a_name'
|
10
|
+
@now = Time.now
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#duration' do
|
14
|
+
|
15
|
+
context 'task has start_at: 2010-05-10 13:45' do
|
16
|
+
|
17
|
+
before do
|
18
|
+
start_at = Time.parse('May 10 13:45:00 2010', @now)
|
19
|
+
@task = Rtt::Task.create :name => @task_name, :start_at => start_at.to_datetime, :date => start_at.to_date
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'task has end_at: 2010-05-10 14:15:01' do
|
23
|
+
|
24
|
+
before do
|
25
|
+
now = Time.now
|
26
|
+
@end_at = Time.parse('May 10 14:15:01 2010', @now)
|
27
|
+
DateTime.stubs(:now => @end_at)
|
28
|
+
Date.stubs(:today => @end_at.to_date)
|
29
|
+
@task.stop
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should return 0h30m' do
|
33
|
+
@task.duration.should == '0h30m'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'task has end_at: 2010-05-10 15:20:01' do
|
38
|
+
|
39
|
+
before do
|
40
|
+
@end_at = Time.parse('May 10 15:20:01 2010', @now)
|
41
|
+
DateTime.stubs(:now => @end_at)
|
42
|
+
Date.stubs(:today => @end_at.to_date)
|
43
|
+
@task.stop
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should return 1h35m' do
|
47
|
+
@task.duration.should == '1h35m'
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'task has end_at: 2010-05-11 15:20:01' do
|
52
|
+
|
53
|
+
before do
|
54
|
+
@end_at = Time.parse('May 11 15:20:00 2010', @now)
|
55
|
+
DateTime.stubs(:now => @end_at)
|
56
|
+
Date.stubs(:today => @end_at.to_date)
|
57
|
+
@task.stop
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should have 2 tasks with the same name' do
|
61
|
+
Rtt::Task.all(:name => @task_name).length.should == 2
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'should return 11h15m for 2010-05-10' do
|
65
|
+
date = Time.parse('2010-05-10', @now).to_date
|
66
|
+
task = Rtt::Task.first(:name => @task_name, :date => date)
|
67
|
+
task.duration.should == '10h14m'
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should return 14h35m' do
|
71
|
+
@task.duration.should == '15h19m'
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'task has end_at: 2010-05-12 15:20:01' do
|
76
|
+
|
77
|
+
before do
|
78
|
+
@end_at = Time.parse('May 12 15:20:00 2010', @now)
|
79
|
+
DateTime.stubs(:now => @end_at)
|
80
|
+
Date.stubs(:today => @end_at.to_date)
|
81
|
+
@task.stop
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'should have 3 tasks with the same name' do
|
85
|
+
Rtt::Task.all(:name => @task_name).length.should == 3
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'should return 11h15m for 2010-05-11' do
|
89
|
+
date = Time.parse('2010-05-11', @now).to_date
|
90
|
+
task = Rtt::Task.first(:name => @task_name, :date => date)
|
91
|
+
task.duration.should == '23h59m'
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'should return 11h15m for 2010-05-10' do
|
95
|
+
date = Time.parse('2010-05-10', @now).to_date
|
96
|
+
task = Rtt::Task.first(:name => @task_name, :date => date)
|
97
|
+
task.duration.should == '10h14m'
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'should return 14h35m' do
|
101
|
+
@task.duration.should == '15h19m'
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,186 @@
|
|
1
|
+
require File.join( File.dirname(__FILE__), '..', 'datamapper_spec_helper')
|
2
|
+
|
3
|
+
describe Rtt do
|
4
|
+
|
5
|
+
before do
|
6
|
+
Rtt.init(:test)
|
7
|
+
Rtt.migrate
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#set_project' do
|
11
|
+
|
12
|
+
it 'should set the project as current at system-level' do
|
13
|
+
Rtt.set_project 'project_name'
|
14
|
+
Rtt::Project.first(:active => true).name.should == 'project_name'
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#set_client' do
|
20
|
+
|
21
|
+
it 'should set the client as current at system-level' do
|
22
|
+
Rtt.set_client 'client_name'
|
23
|
+
Rtt::Client.first(:active => true).name.should == 'client_name'
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#rename' do
|
29
|
+
|
30
|
+
describe 'when there is no current task' do
|
31
|
+
|
32
|
+
it 'should not create a task' do
|
33
|
+
Rtt.start 'development_task'
|
34
|
+
Rtt::Task.all.length == 0
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#start' do
|
41
|
+
|
42
|
+
describe 'when there is no current task' do
|
43
|
+
|
44
|
+
it 'should start a task for the name given' do
|
45
|
+
Rtt.start 'development_task'
|
46
|
+
task = Rtt::Task.first(:name => 'development_task')
|
47
|
+
task.should_not be_nil
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
describe 'when there is a current task' do
|
53
|
+
|
54
|
+
before do
|
55
|
+
@current_task = Rtt::Task.create :name => 'older_task', :start_at => Date.today.beginning_of_day, :active => true
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should create a new task' do
|
59
|
+
task = Rtt.start 'development_task'
|
60
|
+
Rtt::Task.all.length.should == 2
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'should change end_at of older_task' do
|
64
|
+
@end_at = @current_task.end_at
|
65
|
+
Rtt.start 'development_task'
|
66
|
+
Rtt::Task.first(:name => 'development_task').end_at.should == @end_at
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'should change set active to false of older_task' do
|
70
|
+
Rtt.start 'development_task'
|
71
|
+
Rtt::Task.first(:name => 'development_task').active.should be_true
|
72
|
+
end
|
73
|
+
|
74
|
+
describe 'task name is passed' do
|
75
|
+
|
76
|
+
it 'should use name and desciption if present' do
|
77
|
+
task = Rtt.start 'development_task'
|
78
|
+
task.name.should == 'development_task'
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe 'task name is absent' do
|
83
|
+
|
84
|
+
it 'should use use the existing active task' do
|
85
|
+
task = Rtt.start
|
86
|
+
task.name.should == 'older_task'
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe 'with default active project and client' do
|
92
|
+
|
93
|
+
it 'should reference the default client' do
|
94
|
+
task = Rtt.start 'development_task'
|
95
|
+
task.client.name.should == Rtt::Client::DEFAULT_NAME
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'should reference the default project' do
|
99
|
+
task = Rtt.start 'development_task'
|
100
|
+
task.project.name.should == Rtt::Project::DEFAULT_NAME
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
describe 'with custom active project and client' do
|
105
|
+
|
106
|
+
before do
|
107
|
+
@client = Rtt.set_client 'custom_client'
|
108
|
+
@project = Rtt.set_project 'custom_project'
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe '#stop' do
|
115
|
+
|
116
|
+
describe 'when there is a current task' do
|
117
|
+
|
118
|
+
before do
|
119
|
+
Rtt::Task.create :name => 'older_task', :start_at => Date.today.beginning_of_day, :active => true
|
120
|
+
end
|
121
|
+
|
122
|
+
it 'should finish the task' do
|
123
|
+
Rtt.stop
|
124
|
+
Rtt::Task.first(:name => 'older_task').active.should be_false
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
describe 'when there is no current task' do
|
129
|
+
|
130
|
+
it 'should not raise an exception' do
|
131
|
+
lambda {
|
132
|
+
Rtt.stop
|
133
|
+
}.should_not raise_error
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'should keep the same number of Tasks' do
|
137
|
+
Rtt.stop
|
138
|
+
Rtt::Task.all.length.should be_zero
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
describe '#rename' do
|
144
|
+
|
145
|
+
describe 'When there is a current task' do
|
146
|
+
|
147
|
+
before do
|
148
|
+
@current_task = Rtt::Task.create :name => 'older_task', :start_at => Date.today.beginning_of_day, :active => true
|
149
|
+
end
|
150
|
+
|
151
|
+
it 'should change the name' do
|
152
|
+
@id = @current_task.id
|
153
|
+
Rtt.rename 'newer_task'
|
154
|
+
Rtt::Task.get(@id).name.should == 'newer_task'
|
155
|
+
end
|
156
|
+
|
157
|
+
it 'should keep the number of tasks' do
|
158
|
+
counter = Rtt::Task.all.length
|
159
|
+
Rtt.rename 'newer_task'
|
160
|
+
Rtt::Task.all.length.should == counter
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
describe 'When there is NO current task' do
|
165
|
+
|
166
|
+
it 'should not create a new task' do
|
167
|
+
Rtt.rename 'newer_task'
|
168
|
+
Rtt::Task.all.length.should be_zero
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
describe '#report' do
|
174
|
+
|
175
|
+
it 'should call report_for_csv when :pdf is recevied' do
|
176
|
+
Rtt.should_receive(:report_to_pdf).with('/somepath')
|
177
|
+
Rtt.report :pdf => '/somepath'
|
178
|
+
end
|
179
|
+
|
180
|
+
it 'should call report_for_csv when :csv is recevied' do
|
181
|
+
pending
|
182
|
+
Rtt.should_receive(:report_to_csv).with('/somepath_csv')
|
183
|
+
Rtt.report :csv => '/somepath_csv'
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
data/tasks/rtt.rake
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'rake/clean'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'date'
|
4
|
+
require 'spec/rake/spectask'
|
5
|
+
require 'mocha'
|
6
|
+
require 'hanna/rdoctask'
|
7
|
+
|
8
|
+
# Removes spec task defiened in dependency gems
|
9
|
+
module Rake
|
10
|
+
def self.remove_task(task_name)
|
11
|
+
Rake.application.instance_variable_get('@tasks').delete(task_name.to_s)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
Rake.remove_task 'spec'
|
15
|
+
|
16
|
+
def source_version
|
17
|
+
line = File.read('lib/rtt.rb')[/^\s*VERSION = .*/]
|
18
|
+
line.match(/.*VERSION = '(.*)'/)[1]
|
19
|
+
end
|
20
|
+
|
21
|
+
# SPECS ===============================================================
|
22
|
+
|
23
|
+
Spec::Rake::SpecTask.new(:spec) do |t|
|
24
|
+
t.spec_opts = ['--color']
|
25
|
+
t.rcov = false
|
26
|
+
t.spec_files = FileList['spec/lib/*_spec.rb', 'spec/lib/rtt/*_spec.rb']
|
27
|
+
end
|
28
|
+
|
29
|
+
task :default => :spec
|
30
|
+
|
31
|
+
# Rcov ================================================================
|
32
|
+
namespace :spec do
|
33
|
+
desc 'Mesures test coverage'
|
34
|
+
task :coverage do
|
35
|
+
rm_f "coverage"
|
36
|
+
rcov = "rcov --text-summary -Ilib"
|
37
|
+
system("#{rcov} --no-html --no-color spec/lib/*_spec.rb")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# Website =============================================================
|
42
|
+
# Building docs requires HAML and the hanna gem:
|
43
|
+
# gem install mislav-hanna --source=http://gems.github.com
|
44
|
+
|
45
|
+
desc 'Generate RDoc under doc/api'
|
46
|
+
task 'doc' => ['doc:api']
|
47
|
+
|
48
|
+
task 'doc:api' => ['doc/api/index.html']
|
49
|
+
|
50
|
+
file 'doc/api/index.html' => FileList['lib/**/*.rb','README.rdoc'] do |f|
|
51
|
+
require 'rbconfig'
|
52
|
+
hanna = RbConfig::CONFIG['ruby_install_name'].sub('ruby', 'hanna')
|
53
|
+
rb_files = f.prerequisites
|
54
|
+
sh((<<-end).gsub(/\s+/, ' '))
|
55
|
+
#{hanna}
|
56
|
+
--charset utf8
|
57
|
+
--fmt html
|
58
|
+
--inline-source
|
59
|
+
--line-numbers
|
60
|
+
--main README.rdoc
|
61
|
+
--op doc/api
|
62
|
+
--title 'RTT API Documentation'
|
63
|
+
#{rb_files.join(' ')}
|
64
|
+
end
|
65
|
+
end
|
66
|
+
CLEAN.include 'doc/api'
|
data/todo.txt
ADDED
metadata
ADDED
@@ -0,0 +1,207 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rtt
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 77
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 0
|
10
|
+
- 1
|
11
|
+
version: 0.0.0.1
|
12
|
+
platform: ruby
|
13
|
+
authors:
|
14
|
+
- Marcelo Giorgi
|
15
|
+
autorequire:
|
16
|
+
bindir: bin
|
17
|
+
cert_chain: []
|
18
|
+
|
19
|
+
date: 2010-06-19 00:00:00 -03:00
|
20
|
+
default_executable: rtt
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
23
|
+
name: highline
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 7
|
31
|
+
segments:
|
32
|
+
- 1
|
33
|
+
- 5
|
34
|
+
- 2
|
35
|
+
version: 1.5.2
|
36
|
+
type: :runtime
|
37
|
+
version_requirements: *id001
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: activesupport
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
hash: 3
|
47
|
+
segments:
|
48
|
+
- 2
|
49
|
+
- 3
|
50
|
+
- 0
|
51
|
+
version: 2.3.0
|
52
|
+
type: :runtime
|
53
|
+
version_requirements: *id002
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: prawn
|
56
|
+
prerelease: false
|
57
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
hash: 63
|
63
|
+
segments:
|
64
|
+
- 0
|
65
|
+
- 8
|
66
|
+
- 0
|
67
|
+
version: 0.8.0
|
68
|
+
type: :runtime
|
69
|
+
version_requirements: *id003
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: dm-core
|
72
|
+
prerelease: false
|
73
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
hash: 23
|
79
|
+
segments:
|
80
|
+
- 1
|
81
|
+
- 0
|
82
|
+
- 0
|
83
|
+
version: 1.0.0
|
84
|
+
type: :runtime
|
85
|
+
version_requirements: *id004
|
86
|
+
- !ruby/object:Gem::Dependency
|
87
|
+
name: dm-migrations
|
88
|
+
prerelease: false
|
89
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
hash: 23
|
95
|
+
segments:
|
96
|
+
- 1
|
97
|
+
- 0
|
98
|
+
- 0
|
99
|
+
version: 1.0.0
|
100
|
+
type: :runtime
|
101
|
+
version_requirements: *id005
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: spec
|
104
|
+
prerelease: false
|
105
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
hash: 3
|
111
|
+
segments:
|
112
|
+
- 0
|
113
|
+
version: "0"
|
114
|
+
type: :development
|
115
|
+
version_requirements: *id006
|
116
|
+
description: RTT is a tool for tracking time
|
117
|
+
email: marklazz.uy@gmail.com
|
118
|
+
executables:
|
119
|
+
- rtt
|
120
|
+
extensions: []
|
121
|
+
|
122
|
+
extra_rdoc_files:
|
123
|
+
- LICENSE
|
124
|
+
- README.rdoc
|
125
|
+
- bin/rtt
|
126
|
+
- lib/rtt.rb
|
127
|
+
- lib/rtt/client.rb
|
128
|
+
- lib/rtt/cmd_line_interpreter.rb
|
129
|
+
- lib/rtt/hash_extensions.rb
|
130
|
+
- lib/rtt/project.rb
|
131
|
+
- lib/rtt/query_builder.rb
|
132
|
+
- lib/rtt/report_generator.rb
|
133
|
+
- lib/rtt/storage.rb
|
134
|
+
- lib/rtt/task.rb
|
135
|
+
- lib/rtt/user.rb
|
136
|
+
- lib/rtt/user_configurator.rb
|
137
|
+
- tasks/rtt.rake
|
138
|
+
files:
|
139
|
+
- LICENSE
|
140
|
+
- Manifest
|
141
|
+
- README.rdoc
|
142
|
+
- Rakefile
|
143
|
+
- USAGE.txt
|
144
|
+
- bin/rtt
|
145
|
+
- db/rtt.sqlite3
|
146
|
+
- db/test.sqlite3
|
147
|
+
- init.sh
|
148
|
+
- lib/rtt.rb
|
149
|
+
- lib/rtt/client.rb
|
150
|
+
- lib/rtt/cmd_line_interpreter.rb
|
151
|
+
- lib/rtt/hash_extensions.rb
|
152
|
+
- lib/rtt/project.rb
|
153
|
+
- lib/rtt/query_builder.rb
|
154
|
+
- lib/rtt/report_generator.rb
|
155
|
+
- lib/rtt/storage.rb
|
156
|
+
- lib/rtt/task.rb
|
157
|
+
- lib/rtt/user.rb
|
158
|
+
- lib/rtt/user_configurator.rb
|
159
|
+
- rtt.gemspec
|
160
|
+
- rtt_report
|
161
|
+
- spec/datamapper_spec_helper.rb
|
162
|
+
- spec/lib/rtt/task_spec.rb
|
163
|
+
- spec/lib/rtt_spec.rb
|
164
|
+
- tasks/rtt.rake
|
165
|
+
- todo.txt
|
166
|
+
has_rdoc: true
|
167
|
+
homepage: http://www.marklazz.com
|
168
|
+
licenses: []
|
169
|
+
|
170
|
+
post_install_message:
|
171
|
+
rdoc_options:
|
172
|
+
- --line-numbers
|
173
|
+
- --inline-source
|
174
|
+
- --title
|
175
|
+
- Rtt
|
176
|
+
- --main
|
177
|
+
- README.rdoc
|
178
|
+
require_paths:
|
179
|
+
- lib
|
180
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
181
|
+
none: false
|
182
|
+
requirements:
|
183
|
+
- - ">="
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
hash: 3
|
186
|
+
segments:
|
187
|
+
- 0
|
188
|
+
version: "0"
|
189
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
190
|
+
none: false
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
hash: 11
|
195
|
+
segments:
|
196
|
+
- 1
|
197
|
+
- 2
|
198
|
+
version: "1.2"
|
199
|
+
requirements: []
|
200
|
+
|
201
|
+
rubyforge_project: rtt
|
202
|
+
rubygems_version: 1.3.7
|
203
|
+
signing_key:
|
204
|
+
specification_version: 3
|
205
|
+
summary: RTT is a tool for tracking time
|
206
|
+
test_files: []
|
207
|
+
|