workit 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,42 @@
1
+ As a developer
2
+ In order to keep track of my time easily and reliably
3
+ I want to be able to do so in a terminal
4
+
5
+ ## What is it?
6
+
7
+ Workit is a command-line time tracker.
8
+
9
+ ## Current features
10
+
11
+ * Start a task
12
+ * Finish the current task
13
+
14
+ ## Upcoming features
15
+
16
+ * Restart a task
17
+ * List tasks
18
+ * Push tasks to harvestapp
19
+
20
+ ## Requirements
21
+
22
+ * Ruby and RubyGems
23
+ * sqlite3
24
+
25
+ ## Usage
26
+
27
+ workit [OPTIONS] SUBCOMMAND [ARGS] ...
28
+
29
+ ## Subcommands
30
+
31
+ * start description of task
32
+
33
+ Workit allows you to start a task, provided that there is not currently an
34
+ unfinished task. Everything after the "start" subcommand is considered the
35
+ description of the task.
36
+
37
+ * finish
38
+
39
+ Workit allows for only one task to be unfinished at a time. That being the
40
+ case, you will get a "you so silly" error if you try to finish while there
41
+ is not a task in progress, but you can finish a task that is already in
42
+ progress
@@ -14,15 +14,29 @@ module Workit
14
14
  transition :unstarted => :started
15
15
  end
16
16
 
17
+ event :finish do
18
+ transition :started => :finished
19
+ end
20
+
17
21
  before_transition any => :started do |transition|
18
22
  self.spans.create(:started_at => Time.now)
19
23
  end
24
+
25
+ before_transition :started => :finished do |transition|
26
+ self.spans.first(:finished_at => nil).update!(:finished_at => Time.now)
27
+ end
20
28
  end
21
29
 
30
+ before :destroy, :destroy_spans
31
+
22
32
  def self.can_start?
23
33
  self.all(:state => 'started').empty?
24
34
  end
25
35
 
36
+ def self.can_finish?
37
+ self.all(:state.not => 'finished').count == 1
38
+ end
39
+
26
40
  def self.current
27
41
  self.first(:state.not => 'finished')
28
42
  end
@@ -30,6 +44,10 @@ module Workit
30
44
  def duration
31
45
  self.spans.map(&:duration).inject :+
32
46
  end
47
+
48
+ def destroy_spans
49
+ self.spans.all.map(&:destroy)
50
+ end
33
51
  end
34
52
  end
35
53
  end
@@ -1,3 +1,3 @@
1
1
  module Workit
2
- VERSION = '0.0.0'
2
+ VERSION = '0.0.1'
3
3
  end
data/lib/workit.rb CHANGED
@@ -3,8 +3,10 @@ module Workit
3
3
  require 'workit/model'
4
4
  require 'workit/abstract_command'
5
5
  require 'workit/start_task_command'
6
+ require 'workit/finish_task_command'
6
7
 
7
8
  class MainCommand < Workit::AbstractCommand
8
9
  subcommand 'start', 'Start a task', StartTaskCommand
10
+ subcommand 'finish', 'Finish the current task', FinishTaskCommand
9
11
  end
10
12
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: workit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-09-19 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: clamp
16
- requirement: &12583220 !ruby/object:Gem::Requirement
16
+ requirement: &13315380 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.2.3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *12583220
24
+ version_requirements: *13315380
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: data_mapper
27
- requirement: &12582760 !ruby/object:Gem::Requirement
27
+ requirement: &13314740 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.1.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *12582760
35
+ version_requirements: *13314740
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: dm-sqlite-adapter
38
- requirement: &12582300 !ruby/object:Gem::Requirement
38
+ requirement: &13313920 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.1.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *12582300
46
+ version_requirements: *13313920
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: state_machine
49
- requirement: &12581840 !ruby/object:Gem::Requirement
49
+ requirement: &13313460 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.0.1
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *12581840
57
+ version_requirements: *13313460
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &12581380 !ruby/object:Gem::Requirement
60
+ requirement: &13313000 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.9.2
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *12581380
68
+ version_requirements: *13313000
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rdoc
71
- requirement: &12580920 !ruby/object:Gem::Requirement
71
+ requirement: &13312540 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '3.8'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *12580920
79
+ version_requirements: *13312540
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: reek
82
- requirement: &12580460 !ruby/object:Gem::Requirement
82
+ requirement: &13291860 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 1.2.8
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *12580460
90
+ version_requirements: *13291860
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rspec
93
- requirement: &12580000 !ruby/object:Gem::Requirement
93
+ requirement: &13291340 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 2.6.0
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *12580000
101
+ version_requirements: *13291340
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: coco
104
- requirement: &12579540 !ruby/object:Gem::Requirement
104
+ requirement: &13290860 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 0.5.1
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *12579540
112
+ version_requirements: *13290860
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: cucumber
115
- requirement: &12579080 !ruby/object:Gem::Requirement
115
+ requirement: &13290360 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 1.0.2
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *12579080
123
+ version_requirements: *13290360
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: aruba
126
- requirement: &12578620 !ruby/object:Gem::Requirement
126
+ requirement: &13289860 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,8 +131,9 @@ dependencies:
131
131
  version: 0.4.3
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *12578620
135
- description:
134
+ version_requirements: *13289860
135
+ description: ! " workit solves the following dilemma:\n\n As a developer\n In order
136
+ to kep track of my time easily and reliably\n I want to be able to do so in a terminal\n"
136
137
  email: dwaltersii@gmail.com
137
138
  executables:
138
139
  - workit
@@ -147,6 +148,7 @@ files:
147
148
  - lib/workit/model/task.rb
148
149
  - lib/workit/abstract_command.rb
149
150
  - lib/workit/start_task_command.rb
151
+ - README.md
150
152
  homepage: https://github.com/ess/workit
151
153
  licenses: []
152
154
  post_install_message: