star_track 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 87a57facec4a3c4074f46ca2919607143cef67fd
4
- data.tar.gz: 36ce751c3085ba31ffbdb9ec3d80da360c721b65
3
+ metadata.gz: 2a64043d84338858320c2ee5a02a7896a004bf68
4
+ data.tar.gz: 849781b27ef1419afe2e135e27b0439d3228a99c
5
5
  SHA512:
6
- metadata.gz: 8aabe52bc4674aba30e10c96b48a36eb71ee9dce57dc22386eb448d08b0edd91f26fc056223ac6918fc00ff55a20314d1213eb146299a319b81c714b8dfbd256
7
- data.tar.gz: '081dc8e8b0942b0a1f3a876a9ec0bf2d212da27976136d27d2e8c86716122d82edcba91dbce8f88cf496350672e89d5515282081698d0bcb57a1f511eb11bda7'
6
+ metadata.gz: 68f9afae54a54664752bbc54fbe62b8e1dc996a799d3595d9619039f9344c5bdf664668cc3104d25f9512c27cfdbffecf8afb76db00ef420b42619b1920f7086
7
+ data.tar.gz: d1256c262b53ed487772ca559f4e0dd9ccbf519127df3d5677ee3aec70f7929e732e778d7b57600de87aca265511443750abbb59c622df7950981e1efbeec0ff
@@ -5,23 +5,28 @@ module StarTrack
5
5
  print "> star_track help ".colorize(:green)
6
6
  puts "- pretty obvious, isn't it?"
7
7
 
8
- print "> star_track config ".colorize(:green)
9
- puts "- creates a new .star_track.yaml file at your user's root path (to be implemented)"
10
-
11
8
  print "> star_track hh:mm ".colorize(:green)
12
9
  puts "- time tracks hh hours and mm minutes, ex: star_track 8:00"
13
10
  puts ""
14
11
  end
15
12
 
16
13
  def self.runner
17
- task_manager = StarTrack::TaskManager::Wunderlist.new
18
- time_tracker = StarTrack::TimeTracker::Freckle.new
14
+ config = YAML.load_file("#{ENV['HOME']}/.star_track.yaml")
19
15
 
20
- print "Task manager: ".colorize(:blue)
21
- puts "Wunderlist"
16
+ task_manager_name = config["task_manager"]
17
+ time_tracker_name = config["time_tracker"]
18
+
19
+ ErrorHandler.raise_missing_config(:task_manager) unless task_manager_name
20
+ ErrorHandler.raise_missing_config(:time_tracker) unless time_tracker_name
22
21
 
22
+ task_manager = build_constant(TaskManager, task_manager_name).new
23
+ time_tracker = build_constant(TimeTracker, time_tracker_name).new
24
+
25
+ puts ""
26
+ print "Task manager: ".colorize(:blue)
27
+ puts task_manager_name.capitalize
23
28
  print "Time tracker: ".colorize(:blue)
24
- puts "Freckle"
29
+ puts time_tracker_name.capitalize
25
30
  puts ""
26
31
 
27
32
  puts "=> Loading today tasks...".colorize(:green)
@@ -33,9 +38,13 @@ module StarTrack
33
38
 
34
39
  puts "=> Now creating entry on the time tracker...".colorize(:green)
35
40
  time_tracker.track(today_tasks)
41
+ puts "==> Entry created successfully!".colorize(:green)
36
42
  puts ""
43
+ end
37
44
 
38
- puts "==> Entry created successfully!".colorize(:green)
45
+ def self.build_constant(namespace, name)
46
+ class_name = name.split(/-|\s|_/).map(&:capitalize).join("")
47
+ const_get "#{namespace}::#{class_name}"
39
48
  end
40
49
  end
41
50
  end
@@ -0,0 +1,11 @@
1
+ module StarTrack
2
+ class ErrorHandler
3
+ def self.raise(message)
4
+ abort "[ERROR] #{message}".colorize(:red)
5
+ end
6
+
7
+ def self.raise_missing_config(config)
8
+ raise("Missing #{config} configuration key on ~/.star_track.yaml")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ module StarTrack
2
+ module TaskManager
3
+ class Terminal
4
+ attr_reader :io
5
+
6
+ def today_tasks
7
+ puts "Insert what you did today (separated by new lines):".colorize(:yellow)
8
+ puts "Type END when you are done".colorize(:yellow)
9
+
10
+ $/ = "END"
11
+ tasks = STDIN.gets.chomp.split("\n")
12
+ $/ = "\n"
13
+ tasks
14
+ end
15
+ end
16
+ end
17
+ end
@@ -16,7 +16,7 @@ module StarTrack
16
16
 
17
17
  def track(tasks)
18
18
  params = {
19
- description: tasks.join(" - "),
19
+ description: tasks.join(" - ").gsub("#", " "),
20
20
  project_id: @project_id,
21
21
  minutes: billable_time,
22
22
  date: Date.today.to_s,
@@ -25,7 +25,7 @@ module StarTrack
25
25
  begin
26
26
  client.create_entry(params)
27
27
  rescue => error
28
- abort "[ERROR] #{error.message}".colorize(:red)
28
+ ErrorHandler.raise(error.message)
29
29
  end
30
30
  end
31
31
 
@@ -43,7 +43,7 @@ module StarTrack
43
43
 
44
44
  def validate_given_time!
45
45
  unless ARGV[0]
46
- abort "[ERROR] Missing billable time parameter!".colorize(:red)
46
+ ErrorHandler.raise("[ERROR] Missing time parameter!")
47
47
  end
48
48
  end
49
49
  end
data/lib/star_track.rb CHANGED
@@ -2,8 +2,10 @@ module StarTrack
2
2
  require "colorize"
3
3
  require "yaml"
4
4
 
5
+ require "star_track/error_handler"
5
6
  require "star_track/commands"
6
7
 
7
8
  require "star_track/task_manager/wunderlist"
9
+ require "star_track/task_manager/terminal"
8
10
  require "star_track/time_tracker/freckle"
9
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: star_track
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - victor-am
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-12 00:00:00.000000000 Z
11
+ date: 2017-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: wunderlist-api
@@ -76,6 +76,8 @@ files:
76
76
  - bin/star_track
77
77
  - lib/star_track.rb
78
78
  - lib/star_track/commands.rb
79
+ - lib/star_track/error_handler.rb
80
+ - lib/star_track/task_manager/terminal.rb
79
81
  - lib/star_track/task_manager/wunderlist.rb
80
82
  - lib/star_track/time_tracker/freckle.rb
81
83
  homepage: https://github.com/victor-am/star_track