FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
angular.js/validate-commit-msg.js at master · estkae/angular.js · GitHub
estkae
/
angular.js
Public
forked from
angular/angular.js
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
angular.js
/
validate-commit-msg.js
Copy path
More file actions
More file actions
Latest commit
History
History
History
executable file
·
105 lines (82 loc) · 2.58 KB
Breadcrumbs
angular.js
/
validate-commit-msg.js
Copy path
File metadata and controls
executable file
·
105 lines (82 loc) · 2.58 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/usr/bin/env node
/**
* Git COMMIT-MSG hook for validating commit message
* See https://docs.google.com/document/d/1rk04jEuGfk9kYzfqCuOlPTSJw3hEDZJTBN5E5f1SALo/edit
*
* Installation:
* >> cd <angular-repo>
* >> ln -s validate-commit-msg.js .git/hooks/commit-msg
*/
var
fs
=
require
(
'fs'
)
;
var
util
=
require
(
'util'
)
;
var
MAX_LENGTH
=
70
;
var
PATTERN
=
/
^
(?:
f
i
x
u
p
!
\s
*
)
?
(
\w
*
)
(
\(
(
[
\w
\$
\.
\-
\*
/
]
*
)
\)
)
?
\:
(
.
*
)
$
/
;
var
IGNORED
=
/
^
W
I
P
\:
/
;
var
TYPES
=
{
feat
:
true
,
fix
:
true
,
docs
:
true
,
style
:
true
,
refactor
:
true
,
test
:
true
,
chore
:
true
,
revert
:
true
}
;
var
error
=
function
(
)
{
// gitx does not display it
// http://gitx.lighthouseapp.com/projects/17830/tickets/294-feature-display-hook-error-message-when-hook-fails
// https://groups.google.com/group/gitx/browse_thread/thread/a03bcab60844b812
console
.
error
(
'INVALID COMMIT MSG: '
+
util
.
format
.
apply
(
null
,
arguments
)
)
;
}
;
var
validateMessage
=
function
(
message
)
{
var
isValid
=
true
;
if
(
IGNORED
.
test
(
message
)
)
{
console
.
log
(
'Commit message validation ignored.'
)
;
return
true
;
}
if
(
message
.
length
>
MAX_LENGTH
)
{
error
(
'is longer than %d characters !'
,
MAX_LENGTH
)
;
isValid
=
false
;
}
var
match
=
PATTERN
.
exec
(
message
)
;
if
(
!
match
)
{
error
(
'does not match "<type>(<scope>): <subject>" ! was: '
+
message
)
;
return
false
;
}
var
type
=
match
[
1
]
;
var
scope
=
match
[
3
]
;
var
subject
=
match
[
4
]
;
if
(
!
TYPES
.
hasOwnProperty
(
type
)
)
{
error
(
'"%s" is not allowed type !'
,
type
)
;
return
false
;
}
// Some more ideas, do want anything like this ?
// - allow only specific scopes (eg. fix(docs) should not be allowed ?
// - auto correct the type to lower case ?
// - auto correct first letter of the subject to lower case ?
// - auto add empty line after subject ?
// - auto remove empty () ?
// - auto correct typos in type ?
// - store incorrect messages, so that we can learn
return
isValid
;
}
;
var
firstLineFromBuffer
=
function
(
buffer
)
{
return
buffer
.
toString
(
)
.
split
(
'\n'
)
.
shift
(
)
;
}
;
// publish for testing
exports
.
validateMessage
=
validateMessage
;
// hacky start if not run by jasmine :-D
if
(
process
.
argv
.
join
(
''
)
.
indexOf
(
'jasmine-node'
)
===
-
1
)
{
var
commitMsgFile
=
process
.
argv
[
2
]
;
var
incorrectLogFile
=
commitMsgFile
.
replace
(
'COMMIT_EDITMSG'
,
'logs/incorrect-commit-msgs'
)
;
fs
.
readFile
(
commitMsgFile
,
function
(
err
,
buffer
)
{
var
msg
=
firstLineFromBuffer
(
buffer
)
;
if
(
!
validateMessage
(
msg
)
)
{
fs
.
appendFile
(
incorrectLogFile
,
msg
+
'\n'
,
function
(
)
{
process
.
exit
(
1
)
;
}
)
;
}
else
{
process
.
exit
(
0
)
;
}
}
)
;
}
Back
|
FazBrowse Home
|
New Git URL