happy-commit 0.0.4 → 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.
- data/VERSION +1 -1
- data/bin/happy-commit-stats +7 -0
- data/happy-commit.gemspec +6 -4
- data/lib/happy-commit.rb +4 -5
- data/lib/happy-commit/hook.rb +10 -0
- data/lib/happy-commit/on_commit.rb +73 -0
- metadata +9 -5
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/happy-commit.gemspec
CHANGED
@@ -5,15 +5,14 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{happy-commit}
|
8
|
-
s.version = "0.0
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["David A. Cuadrado"]
|
12
|
-
s.date = %q{2010-09-
|
13
|
-
s.default_executable = %q{happy-commit}
|
12
|
+
s.date = %q{2010-09-28}
|
14
13
|
s.description = %q{happy commits!}
|
15
14
|
s.email = %q{krawek@gmail.com}
|
16
|
-
s.executables = ["happy-commit"]
|
15
|
+
s.executables = ["happy-commit-stats", "happy-commit"]
|
17
16
|
s.extra_rdoc_files = [
|
18
17
|
"LICENSE",
|
19
18
|
"README.rdoc"
|
@@ -26,8 +25,11 @@ Gem::Specification.new do |s|
|
|
26
25
|
"Rakefile",
|
27
26
|
"VERSION",
|
28
27
|
"bin/happy-commit",
|
28
|
+
"bin/happy-commit-stats",
|
29
29
|
"happy-commit.gemspec",
|
30
30
|
"lib/happy-commit.rb",
|
31
|
+
"lib/happy-commit/hook.rb",
|
32
|
+
"lib/happy-commit/on_commit.rb",
|
31
33
|
"sounds/070-who2.wav",
|
32
34
|
"sounds/Engineer_cheers01.wav",
|
33
35
|
"sounds/Engineer_cheers02.wav",
|
data/lib/happy-commit.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'fileutils'
|
2
|
+
require 'happy-commit/on_commit'
|
2
3
|
|
3
4
|
module HappyCommit
|
5
|
+
include HappyCommit::OnCommit
|
6
|
+
|
4
7
|
def self.sounds
|
5
8
|
@sounds ||= Dir.glob(File.dirname(__FILE__)+"/../sounds/*.wav")
|
6
9
|
end
|
@@ -13,11 +16,7 @@ module HappyCommit
|
|
13
16
|
end
|
14
17
|
|
15
18
|
File.open(self.post_commit_path, "w") do |f|
|
16
|
-
f <<
|
17
|
-
sounds = Dir.glob(".git/sounds/*.wav")
|
18
|
-
command = %w[aplay afplay play].find { |w| `#\{w} --version 2>/dev/null`; $?.success? }
|
19
|
-
system("#\{command} #\{sounds.at(rand(sounds.size))} 2>/dev/null &")
|
20
|
-
@
|
19
|
+
f << File.read(File.expand_path("../happy-commit/hook.rb", __FILE__))
|
21
20
|
end
|
22
21
|
FileUtils.chmod(0755, self.post_commit_path)
|
23
22
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
git_dir = File.expand_path("../../", __FILE__)
|
4
|
+
|
5
|
+
sounds = Dir.glob("#{git_dir}/sounds/*.wav")
|
6
|
+
command = %w[aplay afplay play].find { |w| `#\{w} --version 2>/dev/null`; $?.success? }
|
7
|
+
sound = sounds.at(rand(sounds.size))
|
8
|
+
system("#{command} #{sound} 2>/dev/null &")
|
9
|
+
|
10
|
+
system("happy-commit-stats")
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module HappyCommit
|
2
|
+
module OnCommit
|
3
|
+
def self.included(base)
|
4
|
+
base.class_eval do
|
5
|
+
base.extend ClassMethods
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
def on_commit
|
11
|
+
order, commits = self.commits
|
12
|
+
pos = order.index(current_name)+1
|
13
|
+
|
14
|
+
if pos == 1
|
15
|
+
puts ">> Congrats!! you are the most committer of all time with #{commits[current_name]} commits!"
|
16
|
+
elsif pos == 2
|
17
|
+
puts ">> You need #{commits[order.first] - commits[current_name]} commits to reach #{order.first}(the champion)"
|
18
|
+
end
|
19
|
+
|
20
|
+
order, commits = self.commits_today
|
21
|
+
pos = order.index(current_name)+1
|
22
|
+
if pos == 1
|
23
|
+
puts ">> Congrats!! you are the most committer today with #{commits[current_name]} commits!"
|
24
|
+
elsif pos == 2
|
25
|
+
puts ">> You need #{commits[order.first] - commits[current_name]} commits to reach #{order.first}(the champion)"
|
26
|
+
elsif pos
|
27
|
+
puts ">> You have committed #{commits[current_name]} times today, congrats!"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def current_name
|
32
|
+
@current_name||=`git config user.name`.strip
|
33
|
+
end
|
34
|
+
|
35
|
+
def commits
|
36
|
+
commits = {}
|
37
|
+
order = []
|
38
|
+
count = 0
|
39
|
+
`git shortlog -s -n -m HEAD`.each_line do |line|
|
40
|
+
if line =~ /\s+(\d+)\s+(.+)$/
|
41
|
+
name = $2.strip
|
42
|
+
commits[name] = $1.to_i
|
43
|
+
order << name
|
44
|
+
count += 1
|
45
|
+
|
46
|
+
break if count >= 5
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
[order, commits]
|
51
|
+
end
|
52
|
+
|
53
|
+
def commits_today
|
54
|
+
hours = Time.now.strftime("%k").to_i-5
|
55
|
+
order = []
|
56
|
+
count = 0
|
57
|
+
commits = {}
|
58
|
+
`git shortlog -s -n -m --since="#{hours} hours ago" HEAD`.each_line do |line|
|
59
|
+
if line =~ /\s+(\d+)\s+(.+)$/
|
60
|
+
name = $2.strip
|
61
|
+
commits[name] = $1.to_i
|
62
|
+
order << name
|
63
|
+
count += 1
|
64
|
+
|
65
|
+
break if count >= 5
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
[order, commits]
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: happy-commit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.4
|
10
|
+
version: 0.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- David A. Cuadrado
|
@@ -15,8 +15,8 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-09-
|
19
|
-
default_executable:
|
18
|
+
date: 2010-09-28 00:00:00 -05:00
|
19
|
+
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: thoughtbot-shoulda
|
@@ -35,6 +35,7 @@ dependencies:
|
|
35
35
|
description: happy commits!
|
36
36
|
email: krawek@gmail.com
|
37
37
|
executables:
|
38
|
+
- happy-commit-stats
|
38
39
|
- happy-commit
|
39
40
|
extensions: []
|
40
41
|
|
@@ -49,8 +50,11 @@ files:
|
|
49
50
|
- Rakefile
|
50
51
|
- VERSION
|
51
52
|
- bin/happy-commit
|
53
|
+
- bin/happy-commit-stats
|
52
54
|
- happy-commit.gemspec
|
53
55
|
- lib/happy-commit.rb
|
56
|
+
- lib/happy-commit/hook.rb
|
57
|
+
- lib/happy-commit/on_commit.rb
|
54
58
|
- sounds/070-who2.wav
|
55
59
|
- sounds/Engineer_cheers01.wav
|
56
60
|
- sounds/Engineer_cheers02.wav
|