itools 0.4.6 → 0.4.7
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/Gemfile.lock +1 -1
- data/README.md +2 -2
- data/lib/itools/git_sets.rb +6 -0
- data/lib/itools/temple-commit-msg.dat +112 -0
- data/lib/itools/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f3b5c349732e2bb90e9fc7aec7f8ab9e1b6535fa073f4f28907eaf20b46234aa
|
4
|
+
data.tar.gz: ababa610ee5cdec9bb35c93a5ff37bb7d5ba7dba94f30c967dba3445ca2a4e34
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3041ce76c44e3a65a733766a0141758cd9e6535591406256e255b745d6e3de532920c72891d1bdad3ae60e972a58d098be0eb812339e8b4f93b0435cd5315c3e
|
7
|
+
data.tar.gz: 96045040c53f1f1ffd08e93cad27f42bd0407b41c7eeab43d87701b74b52ba72088c1c7ec801c965e1a595e57c3ec58b3b4e5402ffcf4f25aa7af5194d03aab4
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -129,5 +129,5 @@ itools count_code_line /User/zhanggui/mydemoapp #统计mydemoapp项目的代码
|
|
129
129
|
|
130
130
|
Bug reports and pull requests are welcome on GitHub at https://github.com/ScottZg/itools. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the
|
131
131
|
|
132
|
-
## Warning
|
133
|
-
如有误删而导致的线上问题,本人概不负责!
|
132
|
+
## FBI Warning
|
133
|
+
如有误删而导致的线上问题,本人概不负责!
|
data/lib/itools/git_sets.rb
CHANGED
@@ -16,7 +16,13 @@ echo '''\n#TYPE类型\n#新功能 feature\n#bug修复 bugfix\n#性
|
|
16
16
|
File.open('.git/hooks/pre-commit', 'w') do |f|
|
17
17
|
f.puts a
|
18
18
|
end
|
19
|
+
logo_path = File.join( File.dirname(__FILE__), 'temple-commit-msg.dat' )
|
20
|
+
content = File.read( logo_path )
|
21
|
+
File.open('.git/hooks/commit-msg', 'w') do |f|
|
22
|
+
f.puts content
|
23
|
+
end
|
19
24
|
system('chmod a+x .git/hooks/pre-commit')
|
25
|
+
system('chmod a+x .git/hooks/commit-msg')
|
20
26
|
puts "\033[32m配置成功,后续请直接使用git commit ,不要加 -m\033[0m"
|
21
27
|
end
|
22
28
|
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'find'
|
3
|
+
class CommitMsg
|
4
|
+
attr_accessor :edit_file_path, :branch_name
|
5
|
+
def initialize(editing_file_path,branch_name)
|
6
|
+
@edit_file_path = editing_file_path
|
7
|
+
@branch_name = branch_name
|
8
|
+
end
|
9
|
+
|
10
|
+
# type 规范判断
|
11
|
+
def is_white_list_branch_type
|
12
|
+
if @branch_name.match(/^(feature|bugfix|refactor|pref|hotfix|release|docs)\//)
|
13
|
+
return true
|
14
|
+
else
|
15
|
+
return false
|
16
|
+
end
|
17
|
+
end
|
18
|
+
# subject校验
|
19
|
+
def verify_subject(str)
|
20
|
+
subject = ''
|
21
|
+
contain_subs = str.split(" ")
|
22
|
+
if contain_subs.size == 2 #理想情况,也是大多数情况,只取subject即可
|
23
|
+
subject = contain_subs[1]
|
24
|
+
elsif contain_subs.size == 1
|
25
|
+
subject = str.gsub(/#{@branch_name}/,"")
|
26
|
+
else
|
27
|
+
contain_subs.delete_at(0)
|
28
|
+
subject = contain_subs.join("") #把剩下的数据组合起来
|
29
|
+
end
|
30
|
+
if subject.size > 50
|
31
|
+
fail_with_msg("subject内容过长,请不要超过50个字")
|
32
|
+
elsif subject == "subject"
|
33
|
+
fail_with_msg("请完善subject的内容")
|
34
|
+
else
|
35
|
+
puts "subject校验通过..."
|
36
|
+
end
|
37
|
+
end
|
38
|
+
# cause校验
|
39
|
+
def verify_cause(str)
|
40
|
+
if str.strip.size > 6
|
41
|
+
puts "Cause校验通过..."
|
42
|
+
else
|
43
|
+
fail_with_msg("请完善Cause内容")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
#solution校验
|
47
|
+
def verify_solution(str)
|
48
|
+
if str.strip.size > 9
|
49
|
+
puts "Solution校验通过..."
|
50
|
+
else
|
51
|
+
fail_with_msg("请完善Solution内容")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
# doc address校验
|
55
|
+
def verify_doc_address(str)
|
56
|
+
if str.strip.size > 21
|
57
|
+
puts "Doc Address校验通过..."
|
58
|
+
else
|
59
|
+
fail_with_msg("请完善Doc Address内容")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# 逐行校验
|
64
|
+
def handle_line(line)
|
65
|
+
handle_line_method = ''
|
66
|
+
if line.match(/^#{@branch_name.strip}/)
|
67
|
+
handle_line_method = 'verify_subject'
|
68
|
+
elsif line.match(/^Cause/)
|
69
|
+
handle_line_method = 'verify_cause'
|
70
|
+
elsif line.match(/^Solution/)
|
71
|
+
handle_line_method = 'verify_solution'
|
72
|
+
elsif line.match(/^Releated Doc Address/)
|
73
|
+
handle_line_method = 'verify_doc_address'
|
74
|
+
else
|
75
|
+
fail_with_msg("系统错误")
|
76
|
+
end
|
77
|
+
self.send(handle_line_method,line)
|
78
|
+
end
|
79
|
+
# 校验commit message内容是否符合规范
|
80
|
+
def verify_content
|
81
|
+
if File.file?(@edit_file_path)
|
82
|
+
File.read(@edit_file_path).each_line do |line|
|
83
|
+
match_data = line.match(/^#|^$/)
|
84
|
+
if match_data == nil #过滤注释内容
|
85
|
+
handle_line(line)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
# faile method
|
91
|
+
def fail_with_msg(msg)
|
92
|
+
puts "\033[31m#{msg}\033[0m"
|
93
|
+
puts "\033[31mcommit fail!\033[0m"
|
94
|
+
exit 1
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
puts "commit message校验中..."
|
99
|
+
branch_name = `git symbolic-ref --short HEAD`
|
100
|
+
file_path = ARGV[0]
|
101
|
+
commit_msg = CommitMsg.new(file_path,branch_name)
|
102
|
+
# 校验分支名是否符合规范,这里没有对taskid进行校验
|
103
|
+
# -------------------------------type校验-------------------------------
|
104
|
+
if commit_msg.is_white_list_branch_type
|
105
|
+
puts "分支名称校验通过..."
|
106
|
+
else
|
107
|
+
commit_msg.fail_with_msg("分支名称不符合规则,请按照约定规则处理")
|
108
|
+
end
|
109
|
+
|
110
|
+
if commit_msg.verify_content
|
111
|
+
puts "\033[32mcommit success!\033[0m"
|
112
|
+
end
|
data/lib/itools/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: itools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- zhanggui
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01-
|
11
|
+
date: 2019-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -114,6 +114,7 @@ files:
|
|
114
114
|
- lib/itools/git_sets.rb
|
115
115
|
- lib/itools/link_map.rb
|
116
116
|
- lib/itools/string_searcher.rb
|
117
|
+
- lib/itools/temple-commit-msg.dat
|
117
118
|
- lib/itools/version.rb
|
118
119
|
homepage: https://github.com/ScottZg/itools
|
119
120
|
licenses:
|