dotime 0.0.5 → 0.0.6

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/History.txt +5 -0
  2. data/README.txt +1 -1
  3. data/bin/dotime +4 -3
  4. data/lib/do_time.rb +29 -20
  5. metadata +11 -2
data/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ == 0.0.6 / 2007-02-21
2
+ * Allowing basic lists selection to access more than 10 items
3
+ * Adding required basecamp account url to executable
4
+ * Fixing bug: when a project had no valid lists, dotime would still try and display them
5
+
1
6
  == 0.0.5 / 2007-01-29
2
7
  * Updated basecamp lib with patch to fix typecast bug.
3
8
 
data/README.txt CHANGED
@@ -42,7 +42,7 @@ It specifies a text format to keep track of the elapsed hours and then just upda
42
42
 
43
43
  == SYNOPSYS:
44
44
 
45
- dotime basecamp_login basecamp_password
45
+ dotime basecamp_login basecamp_password basecamp_account_url
46
46
 
47
47
  (Then just follow the menu options)
48
48
 
data/bin/dotime CHANGED
@@ -26,13 +26,14 @@ ARGV.options do |opts|
26
26
 
27
27
 
28
28
  Examples:
29
- dotime -u my_basecamp_login -p my_basecamp_password
29
+ dotime -u my_basecamp_login -p my_basecamp_password -a webtypes.projectpath.com
30
30
  EOF
31
31
 
32
32
  opts.on(" Required:")
33
33
 
34
34
  opts.on("-u", "--user=login", "A Basecamp account login", String) { |OPTIONS[:login]| }
35
35
  opts.on("-p", "--password=password", "A Basecamp account password", String) { |OPTIONS[:password]| }
36
+ opts.on("-a", "--account=url", "A Basecamp account url e.g. webtypes.projectpath.com", String) { |OPTIONS[:url]| }
36
37
 
37
38
  opts.separator ""
38
39
  opts.separator "Options:"
@@ -43,8 +44,8 @@ ARGV.options do |opts|
43
44
  opts.parse!
44
45
  end
45
46
 
46
- unless OPTIONS[:login] && OPTIONS[:password]
47
+ unless OPTIONS[:login] && OPTIONS[:password] && OPTIONS[:url]
47
48
  puts ARGV.options; exit
48
49
  else
49
- DoTime.new([OPTIONS[:login], OPTIONS[:password], OPTIONS[:use_ssl]]).run
50
+ DoTime.new([OPTIONS[:login], OPTIONS[:password], OPTIONS[:use_ssl], OPTIONS[:url]]).run
50
51
  end
data/lib/do_time.rb CHANGED
@@ -18,7 +18,7 @@ require File.dirname(__FILE__) + '/basecamp'
18
18
  require 'optparse'
19
19
 
20
20
  class DoTime
21
- VERSION = '0.0.5'
21
+ VERSION = '0.0.6'
22
22
 
23
23
  include HighLine::SystemExtensions
24
24
 
@@ -39,10 +39,11 @@ class DoTime
39
39
  [SPACE_KEY, 'Stop running todo','Stop timing the only running todo. Otherwise starts next available todo']
40
40
  ]
41
41
 
42
- attr_accessor :login, :password, :use_ssl, :session, :current_owner, :current_project, :valid_lists, :current_list, :running_todos
42
+ attr_accessor :bc_url, :login, :password, :use_ssl, :session, :current_owner, :current_project, :valid_lists, :current_list, :running_todos
43
43
 
44
44
  def initialize(args)
45
- @login, @password, @use_ssl = *args
45
+ @login, @password, @use_ssl, @bc_url = *args
46
+ @bc_url ||= 'webtypes.projectpath.com'
46
47
  init_bc_session
47
48
  @valid_lists = []
48
49
  @running_todos = {}
@@ -55,9 +56,7 @@ class DoTime
55
56
  select_project
56
57
  end
57
58
 
58
- no_valid_lists if @valid_lists.empty?
59
-
60
- if !@current_list && (@valid_lists && !@valid_lists.empty?)
59
+ if !@current_list
61
60
  select_list
62
61
  end
63
62
 
@@ -68,12 +67,13 @@ class DoTime
68
67
 
69
68
  #Starts a new Basecamp API session
70
69
  def init_bc_session
71
- @session = Basecamp.new('webtypes.projectpath.com',@login, @password, @use_ssl)
70
+ @session = Basecamp.new(@bc_url, @login, @password, @use_ssl)
72
71
  end
73
72
 
74
73
  #Print no valid lists warning
75
74
  def no_valid_lists
76
- say "<%=color('No valid lists for that user! Select either another owner or project.',:red, :bold)%>"
75
+ clear_screen
76
+ say "<%=color('No valid lists for that user! Select another project.',:red, :bold)%>"
77
77
  end
78
78
 
79
79
  #Main key selection loop
@@ -297,25 +297,25 @@ class DoTime
297
297
  end
298
298
 
299
299
  #Filter out any non-active projects
300
- def active_projects(cache = true)
301
- say "Getting projects ..."
300
+ def active_projects(cache = true, msg = true)
301
+ say "Getting projects ..." if msg
302
302
  @active_projects = nil unless cache
303
303
  @active_projects ||= @session.projects.select do |project|
304
304
  print "."
305
305
  project['status'] == 'active'
306
306
  end
307
- clear_screen
308
307
  @active_projects
309
308
  end
310
309
 
311
310
  #Find project && select valid lists for current owner
312
- def select_project
313
- bc_projects = active_projects
311
+ def select_project(clear = true)
312
+ bc_projects = active_projects(true, clear)
313
+ clear_screen if clear
314
314
  @current_project = nil
315
315
  @current_project = bc_projects.first if bc_projects.size == 1
316
316
  @current_project ||= bc_projects[select_from("Select a project?", bc_projects.collect {|p| p['name']})[1]]
317
-
318
317
  clear_screen
318
+
319
319
  unless @current_owner
320
320
  find_logged_in_user
321
321
  clear_screen
@@ -345,6 +345,11 @@ class DoTime
345
345
  end
346
346
  end
347
347
  clear_screen
348
+
349
+ while @valid_lists.empty?
350
+ no_valid_lists
351
+ select_project(false)
352
+ end
348
353
  end
349
354
 
350
355
  #Select current todo list to work with
@@ -523,15 +528,19 @@ class DoTime
523
528
  puts " #{index+1}. #{item}"
524
529
  end
525
530
  puts " q - quit"
531
+ puts if list.size > 9
532
+ puts "(use 0 & 1-9 OR 1-9 & enter/space to select 1-9)" if list.size > 9
533
+ puts if list.size > 9
526
534
  print "> "
535
+ second_key = nil
527
536
  while /q/i !~ (key = get_character.chr)
528
- case key.to_i
529
- when 1..list.size
530
- result = key.to_i - 1
531
- return list[result], result
532
- else
533
- nil
537
+ if list.size > 9
538
+ second_key = get_character
539
+ second_key = [ENTER_KEY,SPACE_KEY].include?(second_key) ? nil : second_key.chr
534
540
  end
541
+ result = second_key ? "#{key.to_i}#{second_key.to_i}".to_i : key.to_i
542
+ result = result - 1
543
+ return list[result], result
535
544
  end
536
545
  say_goodbye
537
546
  exit!
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: dotime
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.5
7
- date: 2007-01-29 00:00:00 +00:00
6
+ version: 0.0.6
7
+ date: 2007-02-21 00:00:00 +00:00
8
8
  summary: Cheap time tracking for Basecamp todo lists
9
9
  require_paths:
10
10
  - lib
@@ -68,3 +68,12 @@ dependencies:
68
68
  - !ruby/object:Gem::Version
69
69
  version: 1.2.1
70
70
  version:
71
+ - !ruby/object:Gem::Dependency
72
+ name: hoe
73
+ version_requirement:
74
+ version_requirements: !ruby/object:Gem::Version::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 1.2.0
79
+ version: