swatch 0.3 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/CHANGELOG.rdoc +3 -0
  2. data/README.rdoc +6 -1
  3. data/bin/swatch +6 -5
  4. data/lib/swatch.rb +114 -104
  5. metadata +6 -6
@@ -1,5 +1,8 @@
1
1
  = Changelog
2
2
 
3
+ == 0.3.1
4
+ * Implement a simple "what" command
5
+
3
6
  == 0.3
4
7
  * Add test for the library
5
8
  * Add the elapsed time when you go out a task
@@ -16,6 +16,9 @@ Getting out:
16
16
  Timing a todo.txt task:
17
17
  swatch in -t 42
18
18
 
19
+ What am I currently tracking:
20
+ swatch what
21
+
19
22
  == Config
20
23
 
21
24
  Swatch look for the ~/.swatchrc file. If it's present swatch will parse it to get track_file and todo_file path.
@@ -26,4 +29,6 @@ Exemple :
26
29
  By default (i.e if there is no ~/.swatchrc file), swatch will look for todo file in ~/.todo.txt and track_file in ~/.swatch.txt.
27
30
 
28
31
  == Todo
29
- * parse todo to remove the priority
32
+ * Implement report functionnality
33
+ * Add option to only print duration of the "what" command
34
+ * Add option to start/end task at a certain time
data/bin/swatch CHANGED
@@ -19,7 +19,7 @@ require_relative '../lib/swatch'
19
19
  # ###############
20
20
 
21
21
  CONF_FILE = File.expand_path("~/.swatchrc")
22
- VERSION = '0.3'
22
+ VERSION = '0.3.1'
23
23
 
24
24
  if File.exist? CONF_FILE
25
25
  config = ParseConfig.new(CONF_FILE)
@@ -61,8 +61,8 @@ cmd_opts = case cmd
61
61
  opt :todo, "Track a todo.txt task", :type => :int, :short => "-t"
62
62
  end
63
63
  when "out", "o"
64
- when "what" || "w"
65
- when "report" || "r"
64
+ when "what", "w"
65
+ when "report", "r"
66
66
  end
67
67
 
68
68
  #puts "Global options: #{global_opts.inspect}"
@@ -81,6 +81,7 @@ when "in", "i"
81
81
  end
82
82
  when "out", "o"
83
83
  Swatch::task_out
84
- when "what" || "w"
85
- when "report" || "r"
84
+ when "what", "w"
85
+ Swatch::what_task
86
+ when "report", "r"
86
87
  end
@@ -11,109 +11,119 @@ require_relative './numeric.rb'
11
11
 
12
12
  module Swatch
13
13
 
14
- module_function
15
-
16
- # Test if there is a task currently running. Return true if there is
17
- def running_task?
18
- line = ''
19
- IO.popen("tail -n 1 #{TRACK_FILE}") { |f| line = f.gets }
20
- #puts line
21
- if(line != nil && (!line.match '^.+\t\d+\t\d+$'))
22
- true
23
- else
24
- false
25
- end
26
- end
27
-
28
- # Return the start time of a running task
29
- def get_last_task_stime
30
- line = ''
31
- IO.popen("tail -n 1 #{TRACK_FILE}") { |f| line = f.gets }
32
- if line == nil
33
- return false
34
- end
35
-
36
- line.split("\t").pop
37
- end
38
-
39
- # Return the name of the last task
40
- def get_last_task_name
41
- line = ''
42
- IO.popen("tail -n 1 #{TRACK_FILE}") { |f| line = f.gets }
43
- if line == nil
44
- return false
45
- end
46
-
47
- line = line.split "\t"
48
- if running_task?
49
- line.pop
50
- else
51
- line.pop 2
52
- end
53
- line.join "\t"
54
- end
55
-
56
- # Go out of the current task running
57
- def task_out
58
- if running_task?
59
- puts "Stop task: " + get_last_task_name + ", #{(Time.now.to_i - get_last_task_stime.to_i).duration}"
60
- open(TRACK_FILE, "a"){|f|
61
- f.print "\t#{Time.now.to_i}\n"
62
- }
14
+ module_function
15
+
16
+ # Test if there is a task currently running. Return true if there is
17
+ def running_task?
18
+ line = ''
19
+ IO.popen("tail -n 1 #{TRACK_FILE}") { |f| line = f.gets }
20
+ #puts line
21
+ if(line != nil && (!line.match '^.+\t\d+\t\d+$'))
22
+ true
23
+ else
24
+ false
25
+ end
26
+ end
27
+
28
+ # Return the start time of a running task
29
+ def get_last_task_stime
30
+ line = ''
31
+ IO.popen("tail -n 1 #{TRACK_FILE}") { |f| line = f.gets }
32
+ if line == nil
33
+ return false
34
+ end
35
+
36
+ line.split("\t").pop
37
+ end
38
+
39
+ # Return the name of the last task
40
+ def get_last_task_name
41
+ line = ''
42
+ IO.popen("tail -n 1 #{TRACK_FILE}") { |f| line = f.gets }
43
+ if line == nil
44
+ return false
45
+ end
46
+
47
+ line = line.split "\t"
48
+ if running_task?
49
+ line.pop
50
+ else
51
+ line.pop 2
52
+ end
53
+ line.join "\t"
54
+ end
55
+
56
+ # Go out of the current task running
57
+ def task_out
58
+ if running_task?
59
+ puts "Stop task: " + get_last_task_name + ", #{(Time.now.to_i - get_last_task_stime.to_i).duration}"
60
+ open(TRACK_FILE, "a"){|f|
61
+ f.print "\t#{Time.now.to_i}\n"
62
+ }
63
+ return true
64
+ else
65
+ puts "There is no task running"
66
+ return false
67
+ end
68
+ end
69
+
70
+ # Start a task
71
+ def task_in (task)
72
+ # don't go here if ARGV is null !
73
+ if task.strip.empty?
74
+ puts "No task specified"
75
+ return false
76
+ end
77
+
78
+ # if there is a task running, we get out of it
79
+ if running_task?
80
+ #puts "There is a task running, getting out of this one"
81
+ task_out
82
+ end
83
+
84
+ if(!File.exist?(TRACK_FILE))
85
+ #puts "Create a new task file"
86
+ out = File.new(TRACK_FILE, "w")
87
+ else
88
+ #puts "Use #{TRACK_FILE}"
89
+ out = File.open(TRACK_FILE, "a")
90
+ end
91
+
92
+ #print the task in the file
93
+ out.print "#{task}\t#{Time.now.to_i}"
94
+ out.close
95
+
96
+ puts "Start task: #{task}"
63
97
  return true
64
- else
65
- puts "There is no task running"
66
- return false
67
- end
68
- end
69
-
70
- # Start a task
71
- def task_in (task)
72
- # don't go here if ARGV is null !
73
- if task.strip.empty?
74
- puts "No task specified"
75
- return false
76
- end
77
-
78
- # if there is a task running, we get out of it
79
- if running_task?
80
- #puts "There is a task running, getting out of this one"
81
- task_out
82
- end
83
-
84
- if(!File.exist?(TRACK_FILE))
85
- #puts "Create a new task file"
86
- out = File.new(TRACK_FILE, "w")
87
- else
88
- #puts "Use #{TRACK_FILE}"
89
- out = File.open(TRACK_FILE, "a")
90
- end
91
-
92
- #print the task in the file
93
- out.print "#{task}\t#{Time.now.to_i}"
94
- out.close
95
-
96
- puts "Start task: #{task}"
97
- return true
98
- end
99
-
100
- # Return the todo associated to the given number
101
- def get_todo (nb)
102
- # TODO: parse todo to remove the priority
103
- line = IO.readlines(TODO_FILE)[nb-1]
104
- if line.match '^\(([A-Z])\)'
105
- line.slice!(0..4)
106
- end
107
- line
108
- end
109
-
110
- # Going in a task with a todo from todo.txt
111
- def task_in_todo (nb)
112
- t = get_todo (nb)
113
- if t
114
- task_in t.chomp
115
- else
116
- puts "No task specified"
117
- end
118
- end
98
+ end
99
+
100
+ # Return the todo associated to the given number
101
+ def get_todo (nb)
102
+ # TODO: parse todo to remove the priority
103
+ line = IO.readlines(TODO_FILE)[nb-1]
104
+ if line.match '^\(([A-Z])\)'
105
+ line.slice!(0..4)
106
+ end
107
+ line
108
+ end
109
+
110
+ # Going in a task with a todo from todo.txt
111
+ def task_in_todo (nb)
112
+ t = get_todo (nb)
113
+ if t
114
+ task_in t.chomp
115
+ else
116
+ puts "No task specified"
117
+ end
118
+ end
119
+
120
+ # What task are currently running
121
+ def what_task
122
+ if running_task?
123
+ puts "Current task: " + get_last_task_name + ", #{(Time.now.to_i - get_last_task_stime.to_i).duration}"
124
+ else
125
+ puts "No task running!"
126
+ end
127
+ end
128
+
119
129
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swatch
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.3'
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-03-03 00:00:00.000000000 +01:00
12
+ date: 2011-03-07 00:00:00.000000000 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: trollop
17
- requirement: &13186500 !ruby/object:Gem::Requirement
17
+ requirement: &12461520 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *13186500
25
+ version_requirements: *12461520
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: parseconfig
28
- requirement: &13186060 !ruby/object:Gem::Requirement
28
+ requirement: &12461080 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,7 +33,7 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *13186060
36
+ version_requirements: *12461080
37
37
  description: ! 'Swatch is a simple timetracking script in Ruby.
38
38
 
39
39
  It can be used in conjonction of the todo.txt script