star_track 0.1.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: bde9c0c7fb5de6e86c082c2d61fba4a83af16b84
4
+ data.tar.gz: 278b240e679d260498cb46ea50b8602514896829
5
+ SHA512:
6
+ metadata.gz: 3ee755d26b45145e6909c86546838a0b7789d32b3b680489c1f838850ddf0b1fe58bf99b26293b438d179cb715c906155dded290aa2e3df4f3e50e09e6438cdc
7
+ data.tar.gz: 230a91319eda8dd29e8227b8b9df1160627ce6a7d7886fce85f117df1e62220fc72be8cffa1c4d876a1477219dddb1b6f92a31e840ea646e1e9179f024471874
data/bin/star_track ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ require 'star_track'
3
+
4
+ case ARGV[0]
5
+ when "help"
6
+ StarTrack::Commands.help
7
+ when "config"
8
+ StarTrack::Commands.config
9
+ else
10
+ StarTrack::Commands.runner
11
+ end
@@ -0,0 +1,41 @@
1
+ module StarTrack
2
+ class Commands
3
+ def self.help
4
+ puts ""
5
+ print "> star_track help ".colorize(:green)
6
+ puts "- pretty obvious, isn't it?"
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
+ print "> star_track hh:mm ".colorize(:green)
12
+ puts "- time tracks hh hours and mm minutes, ex: star_track 8:00"
13
+ puts ""
14
+ end
15
+
16
+ def self.runner
17
+ task_manager = StarTrack::TaskManager::Wunderlist.new
18
+ time_tracker = StarTrack::TimeTracker::Freckle.new
19
+
20
+ print "Task manager: ".colorize(:blue)
21
+ puts "Wunderlist"
22
+
23
+ print "Time tracker: ".colorize(:blue)
24
+ puts "Freckle"
25
+ puts ""
26
+
27
+ puts "=> Loading today tasks...".colorize(:green)
28
+ today_tasks = task_manager.today_tasks
29
+
30
+ puts "==> Here is what you did today:".colorize(:green)
31
+ today_tasks.each { |task| puts "- #{task}" }
32
+ puts ""
33
+
34
+ puts "=> Now creating entry on the time tracker...".colorize(:green)
35
+ time_tracker.track(today_tasks)
36
+ puts ""
37
+
38
+ puts "==> Entry created successfully!".colorize(:green)
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,30 @@
1
+ require 'wunderlist'
2
+
3
+ module StarTrack
4
+ module TaskManager
5
+ class Wunderlist
6
+ attr_reader :client
7
+
8
+ def initialize
9
+ config = YAML.load_file("#{ENV['HOME']}/.star_track.yaml")["wunderlist"]
10
+
11
+ @access_token = config["access_token"]
12
+ @client_id = config["client_id"]
13
+ @list_name = config["list_name"]
14
+
15
+ @client = ::Wunderlist::API.new(
16
+ access_token: @access_token,
17
+ client_id: @client_id
18
+ )
19
+ end
20
+
21
+ def today_tasks
22
+ @list ||= client.list(@list_name)
23
+
24
+ @list.tasks(completed: true).select do |task|
25
+ Date.parse(task.completed_at) == Date.today
26
+ end.map(&:title)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,47 @@
1
+ require 'freckle'
2
+
3
+ module StarTrack
4
+ module TimeTracker
5
+ class Freckle
6
+ attr_reader :client
7
+
8
+ def initialize
9
+ config = YAML.load_file("#{ENV['HOME']}/.star_track.yaml")["freckle"]
10
+
11
+ @token = config["token"]
12
+ @project_id = config["project_id"].to_i
13
+
14
+ @client = ::Freckle::Client.new(token: @token)
15
+ end
16
+
17
+ def track(tasks)
18
+ params = {
19
+ description: tasks.join(" - "),
20
+ project_id: @project_id,
21
+ minutes: billable_time,
22
+ date: Date.today.to_s,
23
+ }
24
+
25
+ client.create_entry(params)
26
+ end
27
+
28
+ private
29
+
30
+ def billable_time
31
+ validate_given_time!
32
+
33
+ args = ARGV[0].split(":")
34
+ given_hours = args[0].to_i
35
+ given_minutes = args[1].to_i
36
+
37
+ (given_hours * 60) + given_minutes
38
+ end
39
+
40
+ def validate_given_time!
41
+ unless ARGV[0]
42
+ abort "[ERROR] Missing billable time parameter!".colorize(:red)
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
data/lib/star_track.rb ADDED
@@ -0,0 +1,9 @@
1
+ module StarTrack
2
+ require "colorize"
3
+ require "yaml"
4
+
5
+ require "star_track/commands"
6
+
7
+ require "star_track/task_manager/wunderlist"
8
+ require "star_track/time_tracker/freckle"
9
+ end
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: star_track
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - victor-am
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-09-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: wunderlist-api
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: freckles
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: colorize
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.8'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.8'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description:
70
+ email:
71
+ executables:
72
+ - star_track
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - bin/star_track
77
+ - lib/star_track.rb
78
+ - lib/star_track/commands.rb
79
+ - lib/star_track/task_manager/wunderlist.rb
80
+ - lib/star_track/time_tracker/freckle.rb
81
+ homepage: https://github.com/victor-am/star_track
82
+ licenses:
83
+ - MIT
84
+ metadata: {}
85
+ post_install_message:
86
+ rdoc_options: []
87
+ require_paths:
88
+ - lib
89
+ required_ruby_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ requirements: []
100
+ rubyforge_project:
101
+ rubygems_version: 2.6.11
102
+ signing_key:
103
+ specification_version: 4
104
+ summary: Because manual time tracking is for barbarians
105
+ test_files: []