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 +7 -0
- data/bin/star_track +11 -0
- data/lib/star_track/commands.rb +41 -0
- data/lib/star_track/task_manager/wunderlist.rb +30 -0
- data/lib/star_track/time_tracker/freckle.rb +47 -0
- data/lib/star_track.rb +9 -0
- metadata +105 -0
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,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
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: []
|