git_timelog 0.0.1 → 0.0.2
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 +4 -4
- data/bin/git_timelog +4 -0
- data/lib/git_timelog/emitii_api_connector.rb +23 -0
- data/lib/git_timelog/version.rb +1 -1
- data/lib/git_timelog.rb +75 -9
- metadata +21 -12
- data/.gitignore +0 -14
- data/Gemfile +0 -3
- data/Rakefile +0 -2
- data/git_timelog.gemspec +0 -24
- data/spec/git_log_extraction_spec.rb +0 -37
- data/spec/spec_helper.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9d41a6ba5cf6b1b15ffd1e860dea4fd9336ec1d
|
4
|
+
data.tar.gz: bad0f86918025502f3f8371e367a5719da901ec3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b50ec1d7adf31f6f4ce15310c821d576c0a27263d05bdcfdfaa335c75332092cbb027694490906d35e4db4435b027264e01d31f59ac8cc623465c5a43bc408da
|
7
|
+
data.tar.gz: 9c8c7077f4be7b0b1d9f67053c06206e6d18d2f0d22d591ee92698f2a2dc7ccfb0fc11895f74d72080ef1928c658ecd9083350ed869d46dd4a2150c76578d294
|
data/bin/git_timelog
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require "httparty"
|
2
|
+
|
3
|
+
class EmitiiApiConnector
|
4
|
+
attr_accessor :access_token, :params, :project_name, :emitii_subdomain
|
5
|
+
|
6
|
+
def initialize(access_token='amhVvo8j8MCVzWS6kxuvQg', project_name='git_timelog', emitii_subdomain='jhackathon')
|
7
|
+
@access_token = access_token
|
8
|
+
@project_name = project_name
|
9
|
+
@emitii_subdomain = emitii_subdomain
|
10
|
+
end
|
11
|
+
|
12
|
+
def update_time_tracks(params)
|
13
|
+
params = {
|
14
|
+
timetrack: params
|
15
|
+
}
|
16
|
+
response = HTTParty.post("http://#{@emitii_subdomain}.emitii.com/api/timetracks?access_token=#{@access_token}&project=#{@project_name}&format=json",
|
17
|
+
{
|
18
|
+
:body => params.to_json,
|
19
|
+
:headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json'}
|
20
|
+
})
|
21
|
+
return response
|
22
|
+
end
|
23
|
+
end
|
data/lib/git_timelog/version.rb
CHANGED
data/lib/git_timelog.rb
CHANGED
@@ -1,27 +1,93 @@
|
|
1
1
|
require "git_timelog/version"
|
2
|
+
require "git_timelog/emitii_api_connector"
|
2
3
|
require "git_formatter"
|
3
4
|
require "json"
|
5
|
+
require 'optparse'
|
6
|
+
require 'ostruct'
|
4
7
|
|
5
8
|
module GitTimelog
|
6
9
|
# TODO: make the time changeable
|
10
|
+
|
11
|
+
def user_input
|
12
|
+
options = OpenStruct.new
|
13
|
+
options.format = "unordered"
|
14
|
+
options.since = "6am"
|
15
|
+
options.emitii = false
|
16
|
+
option_parse = OptionParser.new do |option|
|
17
|
+
option.banner = "Hint: git_timelog -s 6am -f json"
|
18
|
+
option.on("-f","--format=FORMAT","which format do you want to get returned") do |format|
|
19
|
+
options.format = format
|
20
|
+
end
|
21
|
+
option.on("-s", "--since=SINCE", "When do you want your time logged.") do |since|
|
22
|
+
options.since = since
|
23
|
+
end
|
24
|
+
option.on("-e", "--emitii", "update time log in emitii?") do |since|
|
25
|
+
options.emitii = true
|
26
|
+
end
|
27
|
+
option.on("-h","--help","help") do
|
28
|
+
puts option_parse
|
29
|
+
end
|
30
|
+
end
|
31
|
+
begin
|
32
|
+
option_parse.parse! ARGV
|
33
|
+
if options.emitii == true
|
34
|
+
to_emitii(options.since)
|
35
|
+
else
|
36
|
+
if options.format == "json"
|
37
|
+
json_format(options.since)
|
38
|
+
elsif options.format == "ordered" || options.format == "unordered"
|
39
|
+
to_clipboard(options.format, options.since)
|
40
|
+
puts 'Copied to clipboard. Please paste as required.'
|
41
|
+
else
|
42
|
+
puts 'invalid format'
|
43
|
+
end
|
44
|
+
end
|
45
|
+
rescue OptionParser::InvalidOption, OptionParser::MissingArgument , OptionParser::ParseError => e
|
46
|
+
puts e
|
47
|
+
puts "Type -h or --help for help"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
7
51
|
def git_timelog(from_time = '6am')
|
8
|
-
`git log --pretty=format:"git__title:%sgit__description:%bgit__date:%cd" --author="#{current_author}" --since={#{from_time}} --reverse`
|
52
|
+
`git log --pretty=format:"git__title:%sgit__description:%bgit__date:%cd" --author="#{current_author}" --since={#{from_time}} --reverse --all`
|
9
53
|
end
|
10
54
|
|
11
55
|
def current_author
|
12
|
-
`git config user.name
|
56
|
+
`git config user.name`.chomp
|
13
57
|
end
|
14
58
|
|
15
|
-
def json_format
|
16
|
-
data = git_timelog
|
59
|
+
def json_format(from_time = '6am')
|
60
|
+
data = git_timelog(from_time)
|
17
61
|
gf = GitFormatter.new(data)
|
18
|
-
gf.json_formatted.to_json
|
62
|
+
puts gf.json_formatted.to_json
|
19
63
|
end
|
20
64
|
|
21
65
|
# list_style = 'ordered' || 'unordered'
|
22
|
-
def to_clipboard(list_style = 'ordered')
|
23
|
-
data = git_timelog
|
66
|
+
def to_clipboard(list_style = 'ordered', from_time = '6am')
|
67
|
+
data = git_timelog(from_time)
|
68
|
+
gf = GitFormatter.new(data)
|
69
|
+
if `uname` == "Darwin\n"
|
70
|
+
`echo "#{gf.title_list(list_style)}" | pbcopy`
|
71
|
+
elsif `uname` == "Linux\n"
|
72
|
+
`echo "#{gf.title_list(list_style)}" | xclip -selection clipboard`
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def to_emitii(from_time = '6am')
|
77
|
+
obj = EmitiiApiConnector.new
|
78
|
+
puts "Your Access Token Please:"
|
79
|
+
obj.access_token = gets.chomp
|
80
|
+
puts "Your Subdomain Please:"
|
81
|
+
obj.emitii_subdomain = gets.chomp
|
82
|
+
puts "Your Project Name Please:"
|
83
|
+
obj.project_name = gets.chomp
|
84
|
+
data = git_timelog(from_time)
|
24
85
|
gf = GitFormatter.new(data)
|
25
|
-
|
86
|
+
response = obj.update_time_tracks(gf.json_formatted)
|
87
|
+
if response["status"] == 200
|
88
|
+
puts "Emitii Successfully Updated."
|
89
|
+
else
|
90
|
+
puts "Something went wrong. Please try again."
|
91
|
+
end
|
26
92
|
end
|
27
|
-
end
|
93
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git_timelog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sushil Shrestha
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-02-
|
13
|
+
date: 2016-02-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -54,6 +54,20 @@ dependencies:
|
|
54
54
|
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: '3.4'
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: httparty
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - "~>"
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0.13'
|
64
|
+
type: :development
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - "~>"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0.13'
|
57
71
|
description: The tool can return json of the tasks done along with start and end time.
|
58
72
|
As well as simply copy the list of commits done as plain-text list which can be
|
59
73
|
ordered or unordered.
|
@@ -61,21 +75,18 @@ email:
|
|
61
75
|
- sushil@jyaasa.com
|
62
76
|
- ganesh@jyaasa.com
|
63
77
|
- surya@jyaasa.com
|
64
|
-
executables:
|
78
|
+
executables:
|
79
|
+
- git_timelog
|
65
80
|
extensions: []
|
66
81
|
extra_rdoc_files: []
|
67
82
|
files:
|
68
|
-
- ".gitignore"
|
69
|
-
- Gemfile
|
70
83
|
- LICENSE.txt
|
71
84
|
- README.md
|
72
|
-
-
|
73
|
-
- git_timelog.gemspec
|
85
|
+
- bin/git_timelog
|
74
86
|
- lib/git_formatter.rb
|
75
87
|
- lib/git_timelog.rb
|
88
|
+
- lib/git_timelog/emitii_api_connector.rb
|
76
89
|
- lib/git_timelog/version.rb
|
77
|
-
- spec/git_log_extraction_spec.rb
|
78
|
-
- spec/spec_helper.rb
|
79
90
|
homepage: http://jyaasa.com/git_timelog
|
80
91
|
licenses:
|
81
92
|
- MIT
|
@@ -100,6 +111,4 @@ rubygems_version: 2.4.5
|
|
100
111
|
signing_key:
|
101
112
|
specification_version: 4
|
102
113
|
summary: A tool to extract daily update from GIT commits.
|
103
|
-
test_files:
|
104
|
-
- spec/git_log_extraction_spec.rb
|
105
|
-
- spec/spec_helper.rb
|
114
|
+
test_files: []
|
data/.gitignore
DELETED
data/Gemfile
DELETED
data/Rakefile
DELETED
data/git_timelog.gemspec
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'git_timelog/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "git_timelog"
|
8
|
-
spec.version = GitTimelog::VERSION
|
9
|
-
spec.authors = ["Sushil Shrestha", "Ganesh Kunwar", "Surya Siwakoti"]
|
10
|
-
spec.email = ["sushil@jyaasa.com", "ganesh@jyaasa.com", "surya@jyaasa.com"]
|
11
|
-
spec.summary = "A tool to extract daily update from GIT commits."
|
12
|
-
spec.description = "The tool can return json of the tasks done along with start and end time. As well as simply copy the list of commits done as plain-text list which can be ordered or unordered."
|
13
|
-
spec.homepage = "http://jyaasa.com/git_timelog"
|
14
|
-
spec.license = "MIT"
|
15
|
-
|
16
|
-
spec.files = `git ls-files -z`.split("\x0")
|
17
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = ["lib"]
|
20
|
-
|
21
|
-
spec.add_development_dependency "bundler", "~> 1.7"
|
22
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
-
spec.add_development_dependency "rspec", "~> 3.4"
|
24
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe GitTimelog do
|
4
|
-
|
5
|
-
# TODO: Refactor
|
6
|
-
describe '#git_timelog' do
|
7
|
-
it "should extract git commits" do
|
8
|
-
expect(git_timelog).to eql(`git log --pretty=format:"git__title:%sgit__description:%bgit__date:%cd" --author="#{current_author}" --since={6am} --reverse`)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
# TODO: Refactor
|
13
|
-
describe '#current_author' do
|
14
|
-
it "should return authors name" do
|
15
|
-
expect(current_author).to eql(`git config user.name`)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
describe '#json_format' do
|
20
|
-
it "should return json formatted update" do
|
21
|
-
formatted_json = json_format
|
22
|
-
puts formatted_json
|
23
|
-
expect(formatted_json).to eql(formatted_json) # LOL
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
describe '#to_clipboard' do
|
28
|
-
it "should copy ordered list to clipboard" do
|
29
|
-
to_clipboard
|
30
|
-
puts "Ordered List copied to clipboard. Paste to test."
|
31
|
-
end
|
32
|
-
it "should copy unordered list to clipboard" do
|
33
|
-
to_clipboard('unordered')
|
34
|
-
puts "Unordered List copied to clipboard"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|