zenhob-hcl 0.1.2 → 0.1.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.
Files changed (5) hide show
  1. data/README.markdown +1 -4
  2. data/VERSION.yml +1 -1
  3. data/hcl.gemspec +2 -2
  4. data/lib/hcl.rb +32 -20
  5. metadata +2 -2
@@ -14,6 +14,7 @@ HCl is a command-line tool for interacting with Harvest time sheets using the
14
14
 
15
15
  * Ruby (tested with 1.8.7)
16
16
  * Ruby OpenSSL support (in debian/ubuntu: apt-get install libopenssl-ruby)
17
+ * Ruby extension building support (in debian/ubuntu: apt-get install ruby-dev)
17
18
  * RubyGems
18
19
  * Trollop option-parsing library (gem install trollop)
19
20
  * Chronic date-parsing library (gem install chronic)
@@ -22,8 +23,6 @@ HCl is a command-line tool for interacting with Harvest time sheets using the
22
23
 
23
24
  ## Usage
24
25
 
25
- NOTE that *add* and *rm* are not yet implemented.
26
-
27
26
  hcl show [date]
28
27
  hcl tasks
29
28
  hcl set <key> <value ...>
@@ -31,8 +30,6 @@ NOTE that *add* and *rm* are not yet implemented.
31
30
  hcl start (<task_alias> | <project_id> <task_id>) [msg ...]
32
31
  hcl note <msg ...>
33
32
  hcl stop
34
- hcl add (<task_alias> | <project_id> <task_id>) <duration> [msg ...]
35
- hcl rm [entry_id]
36
33
 
37
34
  ### Starting a Timer
38
35
 
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 2
2
+ :patch: 3
3
3
  :major: 0
4
4
  :minor: 1
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{hcl}
5
- s.version = "0.1.2"
5
+ s.version = "0.1.3"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Zack Hobson"]
9
- s.date = %q{2009-07-27}
9
+ s.date = %q{2009-07-28}
10
10
  s.default_executable = %q{hcl}
11
11
  s.description = %q{HCl is a command-line client for manipulating Harvest time sheets.}
12
12
  s.email = %q{zack@opensourcery.com}
data/lib/hcl.rb CHANGED
@@ -38,7 +38,14 @@ class HCl
38
38
  def run
39
39
  if @command
40
40
  if respond_to? @command
41
- send @command, *@args
41
+ result = send @command, *@args
42
+ if not result.nil?
43
+ if result.respond_to? :to_a
44
+ puts result.to_a.join(', ')
45
+ elsif result.respond_to? :to_s
46
+ puts result
47
+ end
48
+ end
42
49
  else
43
50
  raise UnknownCommand, "unrecognized command `#{@command}'"
44
51
  end
@@ -68,12 +75,11 @@ HCl is a command-line client for manipulating Harvest time sheets.
68
75
  Commands:
69
76
  hcl show [date]
70
77
  hcl tasks
78
+ hcl aliases
71
79
  hcl set <key> <value ...>
72
80
  hcl start <task> [msg]
73
81
  hcl stop [msg]
74
82
  hcl note <msg>
75
- hcl add <task> <duration> [msg]
76
- hcl rm [entry_id]
77
83
 
78
84
  Examples:
79
85
  $ hcl tasks
@@ -92,10 +98,13 @@ EOM
92
98
  end
93
99
 
94
100
  def tasks
95
- Task.all.each do |task|
96
- # TODO more information and formatting options
97
- puts "#{task.project.id} #{task.id}\t#{task}"
101
+ tasks = Task.all
102
+ if tasks.empty?
103
+ puts "No cached tasks. Run `hcl show' to populate the cache and try again."
104
+ else
105
+ tasks.each { |task| puts "#{task.project.id} #{task.id}\t#{task}" }
98
106
  end
107
+ nil
99
108
  end
100
109
 
101
110
  def read_config
@@ -136,6 +145,7 @@ EOM
136
145
  File.open(SETTINGS_FILE, 'w') do |f|
137
146
  f.write @settings.to_yaml
138
147
  end
148
+ nil
139
149
  end
140
150
 
141
151
  def set key = nil, *args
@@ -149,6 +159,7 @@ EOM
149
159
  @settings[key] = value
150
160
  write_settings
151
161
  end
162
+ nil
152
163
  end
153
164
 
154
165
  def unset key
@@ -156,22 +167,31 @@ EOM
156
167
  write_settings
157
168
  end
158
169
 
170
+ def aliases
171
+ @settings.keys.select { |s| s =~ /^task\./ }.map { |s| s.slice(5..-1) }
172
+ end
173
+
159
174
  def start *args
160
175
  ident = args.shift
161
- task = if @settings["task.#{ident}"]
162
- Task.find *@settings["task.#{ident}"].split(/\s+/)
163
- else
164
- Task.find ident, args.shift
176
+ task_ids = if @settings.key? "task.#{ident}"
177
+ @settings["task.#{ident}"].split(/\s+/)
178
+ else
179
+ [ident, args.shift]
180
+ end
181
+ task = Task.find *task_ids
182
+ if task.nil?
183
+ puts "Unknown project/task alias, try one of the following: #{aliases.join(', ')}."
184
+ exit 1
165
185
  end
166
186
  task.start(*args)
167
- puts "Started timer for #{task}"
187
+ puts "Started timer for #{task}."
168
188
  end
169
189
 
170
190
  def stop
171
191
  entry = DayEntry.with_timer
172
192
  if entry
173
193
  entry.toggle
174
- puts "Stopped #{entry}"
194
+ puts "Stopped #{entry}."
175
195
  else
176
196
  puts "No running timers found."
177
197
  end
@@ -207,13 +227,5 @@ EOM
207
227
  sprintf "%d:%02d", (minutes / 60).to_i, (minutes % 60).to_i
208
228
  end
209
229
 
210
- def not_implemented *args
211
- puts "not yet implemented"
212
- end
213
-
214
- # TODO implement the following commands
215
- alias add not_implemented
216
- alias rm not_implemented
217
-
218
230
  end
219
231
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zenhob-hcl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zack Hobson
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-27 00:00:00 -07:00
12
+ date: 2009-07-28 00:00:00 -07:00
13
13
  default_executable: hcl
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency