svn-hook-tools 0.5.1 → 0.5.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.
- data/README +1 -4
- data/Rakefile +3 -3
- data/VERSION +1 -0
- data/lib/svn_hook_tools.rb +1 -0
- data/lib/svn_jira_hook.rb +41 -12
- data/svn-hook-tools.gemspec +57 -0
- data/test/config/svn_hooks.yml +5 -0
- data/test/test_helper.rb +2 -2
- data/test/test_jira.rb +36 -0
- metadata +8 -3
data/README
CHANGED
@@ -3,10 +3,7 @@ This is a lib for access jira application, use jira4r interface.
|
|
3
3
|
= Prerequisites =
|
4
4
|
SOAP4R (http://dev.ctor.org/soap4r) is required.
|
5
5
|
|
6
|
-
= Build =
|
7
|
-
gem build rujira.gemspec
|
8
|
-
|
9
6
|
= Installation
|
10
7
|
|
11
|
-
sudo gem install
|
8
|
+
sudo gem install svn-jira-hook
|
12
9
|
|
data/Rakefile
CHANGED
@@ -5,12 +5,12 @@ require 'rake'
|
|
5
5
|
begin
|
6
6
|
require 'jeweler'
|
7
7
|
Jeweler::Tasks.new do |gem|
|
8
|
-
gem.name = "svn-
|
8
|
+
gem.name = "svn-hook-tools"
|
9
9
|
# gem.executables = %W(svn-jira-hook)
|
10
10
|
gem.summary = %Q{svn jira hook lib.}
|
11
11
|
gem.description = %Q{svn jira hook ruby lib.}
|
12
12
|
gem.email = "crazycode@gmail.com"
|
13
|
-
gem.homepage = "http://github.com/crazycode/svn-
|
13
|
+
gem.homepage = "http://github.com/crazycode/svn-hook-tools"
|
14
14
|
gem.authors = ["crazycode"]
|
15
15
|
|
16
16
|
gem.add_dependency "soap4r"
|
@@ -50,7 +50,7 @@ Rake::RDocTask.new do |rdoc|
|
|
50
50
|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
51
51
|
|
52
52
|
rdoc.rdoc_dir = 'rdoc'
|
53
|
-
rdoc.title = "
|
53
|
+
rdoc.title = "svn-hook-tools #{version}"
|
54
54
|
rdoc.rdoc_files.include('README*')
|
55
55
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
56
56
|
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.5.2
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'svn_jira_hook'
|
data/lib/svn_jira_hook.rb
CHANGED
@@ -1,22 +1,24 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require "jira4r/jira_tool"
|
3
|
-
|
3
|
+
require "yaml"
|
4
4
|
|
5
5
|
class JiraHook
|
6
6
|
|
7
|
-
def initialize(base_url)
|
8
|
-
@jira = ::Jira4R::JiraTool.new(2, base_url)
|
7
|
+
def initialize(base_url = nil)
|
8
|
+
@jira = ::Jira4R::JiraTool.new(2, base_url) unless base_url.nil?
|
9
9
|
end
|
10
10
|
|
11
11
|
def login(user, pass)
|
12
12
|
@jira.login(user, pass)
|
13
13
|
end
|
14
14
|
|
15
|
-
|
15
|
+
|
16
|
+
def self.check(argv, keyprefix, config = nil)
|
16
17
|
repo_path = argv[0]
|
17
18
|
transaction = argv[1]
|
18
19
|
svnlook = 'svnlook'
|
19
20
|
|
21
|
+
|
20
22
|
#commit_dirs_changed = `#{svnlook} dirs-changed #{repo_path} -t #{transaction}`
|
21
23
|
#commit_changed = `#{svnlook} changed #{repo_path} -t #{transaction}`
|
22
24
|
commit_author = `#{svnlook} author #{repo_path} -t #{transaction}`.chop
|
@@ -25,15 +27,26 @@ class JiraHook
|
|
25
27
|
#commit_date = `#{svnlook} date #{repo_path} -t #{transaction}`
|
26
28
|
|
27
29
|
if commit_log.nil? || commit_log.empty?
|
28
|
-
STDERR.puts("
|
30
|
+
STDERR.puts("'#{commit_log}' doesn't exist as a issue on Jira")
|
29
31
|
exit(1)
|
30
32
|
end
|
31
33
|
|
32
|
-
|
33
|
-
|
34
|
+
check(commit_author, commit_log, keyprefix, config)
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.check(commit_author, commit_log, keyprefix, config = nil)
|
38
|
+
if config
|
39
|
+
jira_configuration = config
|
40
|
+
else
|
41
|
+
# TODO die if configuration file is missing
|
42
|
+
jira_configuration = configuration()
|
43
|
+
end
|
44
|
+
|
45
|
+
jira = JiraHook.new(jira_configuration['jira_url'])
|
46
|
+
jira.login(jira_configuration['jira_username'], jira_configuration['jira_password'])
|
34
47
|
|
35
|
-
unless jira.check_right(commit_author,
|
36
|
-
STDERR.puts("
|
48
|
+
unless jira.check_right(commit_author, keyprefix, commit_log)
|
49
|
+
STDERR.puts("Doesn't exist as a issue on Jira!\n: #{keyprefix}-10: 修改说明")
|
37
50
|
exit(1)
|
38
51
|
end
|
39
52
|
|
@@ -45,7 +58,7 @@ class JiraHook
|
|
45
58
|
if message.nil? || message.empty?
|
46
59
|
return false
|
47
60
|
end
|
48
|
-
issue_id =
|
61
|
+
issue_id = get_issue_number(message, issue_key_regex)
|
49
62
|
if issue_id.nil?
|
50
63
|
return false
|
51
64
|
end
|
@@ -65,13 +78,29 @@ class JiraHook
|
|
65
78
|
end
|
66
79
|
end
|
67
80
|
|
68
|
-
def
|
69
|
-
|
81
|
+
def get_issue_number(message, keyprefix)
|
82
|
+
# key="ab" => key=[Aa][Bb]
|
83
|
+
keyreg = []
|
84
|
+
keyprefix.each_char do |c|
|
85
|
+
keyreg << "[#{c.upcase}#{c.downcase}]"
|
86
|
+
end
|
87
|
+
|
88
|
+
re = Regexp.new("#{keyreg.join("")}-[0-9]+")
|
70
89
|
if message =~ re
|
71
90
|
"#{$&}".upcase
|
72
91
|
end
|
73
92
|
end
|
74
93
|
|
94
|
+
def self.configuration
|
95
|
+
if defined?(SVN_HOOKS_CONFIG_PATH)
|
96
|
+
config_file = SVN_HOOKS_CONFIG_PATH
|
97
|
+
else
|
98
|
+
config_file = '/etc/svn_hooks.yml'
|
99
|
+
end
|
100
|
+
|
101
|
+
YAML::load(IO.read(config_file))
|
102
|
+
end
|
103
|
+
|
75
104
|
end
|
76
105
|
|
77
106
|
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{svn-hook-tools}
|
8
|
+
s.version = "0.5.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["crazycode"]
|
12
|
+
s.date = %q{2011-05-09}
|
13
|
+
s.description = %q{svn jira hook ruby lib.}
|
14
|
+
s.email = %q{crazycode@gmail.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
"LICENSE",
|
21
|
+
"README",
|
22
|
+
"Rakefile",
|
23
|
+
"VERSION",
|
24
|
+
"lib/jira4r/jira4r.rb",
|
25
|
+
"lib/jira4r/jira_tool.rb",
|
26
|
+
"lib/jira4r/v2/JiraSoapServiceDriver.rb",
|
27
|
+
"lib/jira4r/v2/jiraService.rb",
|
28
|
+
"lib/jira4r/v2/jiraServiceMappingRegistry.rb",
|
29
|
+
"lib/jiraService.rb",
|
30
|
+
"lib/jiraServiceMappingRegistry.rb",
|
31
|
+
"lib/svn_hook_tools.rb",
|
32
|
+
"lib/svn_jira_hook.rb",
|
33
|
+
"pre-commit.sample",
|
34
|
+
"svn-hook-tools.gemspec",
|
35
|
+
"test/config/svn_hooks.yml",
|
36
|
+
"test/test_helper.rb",
|
37
|
+
"test/test_jira.rb"
|
38
|
+
]
|
39
|
+
s.homepage = %q{http://github.com/crazycode/svn-hook-tools}
|
40
|
+
s.require_paths = ["lib"]
|
41
|
+
s.rubygems_version = %q{1.3.7}
|
42
|
+
s.summary = %q{svn jira hook lib.}
|
43
|
+
|
44
|
+
if s.respond_to? :specification_version then
|
45
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
46
|
+
s.specification_version = 3
|
47
|
+
|
48
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
49
|
+
s.add_runtime_dependency(%q<soap4r>, [">= 0"])
|
50
|
+
else
|
51
|
+
s.add_dependency(%q<soap4r>, [">= 0"])
|
52
|
+
end
|
53
|
+
else
|
54
|
+
s.add_dependency(%q<soap4r>, [">= 0"])
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
data/test/test_helper.rb
CHANGED
data/test/test_jira.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
SVN_HOOKS_CONFIG_PATH = File.dirname(__FILE__) + '/config/svn_hooks.yml'
|
4
|
+
|
5
|
+
class TestJira < Test::Unit::TestCase
|
6
|
+
def test_simple
|
7
|
+
assert_equal 1, 1
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_get_issue_number
|
11
|
+
jira = JiraHook.new
|
12
|
+
assert_nil jira.get_issue_number("helo,ixist", "SB")
|
13
|
+
assert_nil jira.get_issue_number("SB:helo,ixist", "SB")
|
14
|
+
assert_nil jira.get_issue_number("SB-: helo,ixist", "SB")
|
15
|
+
assert_nil jira.get_issue_number("helo,ixSBist", "SB")
|
16
|
+
assert_nil jira.get_issue_number("helo,iSB-xist", "SB")
|
17
|
+
isn = jira.get_issue_number("SB-1: Test", "SB")
|
18
|
+
assert_not_nil isn
|
19
|
+
assert_equal "SB-1", isn
|
20
|
+
assert_equal "SB-34234", jira.get_issue_number("hello SB-34234", "SB")
|
21
|
+
assert_equal "SB-34234", jira.get_issue_number("hello SB-34234abcd", "SB")
|
22
|
+
assert_equal "SB-34234", jira.get_issue_number("hello SB-34234", "sb")
|
23
|
+
assert_equal "SB-34234", jira.get_issue_number("hello sB-34234abcd", "sb")
|
24
|
+
assert_equal "SB-34234", jira.get_issue_number("hello Sb-34234", "SB")
|
25
|
+
assert_equal "SB-34234", jira.get_issue_number("hello sB-34234abcd", "Sb")
|
26
|
+
assert_equal "SB-34234", jira.get_issue_number("hello Sb-34234", "sb")
|
27
|
+
assert_equal "SB-34234", jira.get_issue_number("hello sb-34234abcd", "sB")
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
def test_check_jira
|
32
|
+
# JiraHook.check("tangliqun", "Message-99:hello", 'Message')
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: svn-hook-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 5
|
9
|
-
-
|
10
|
-
version: 0.5.
|
9
|
+
- 2
|
10
|
+
version: 0.5.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- crazycode
|
@@ -45,6 +45,7 @@ files:
|
|
45
45
|
- LICENSE
|
46
46
|
- README
|
47
47
|
- Rakefile
|
48
|
+
- VERSION
|
48
49
|
- lib/jira4r/jira4r.rb
|
49
50
|
- lib/jira4r/jira_tool.rb
|
50
51
|
- lib/jira4r/v2/JiraSoapServiceDriver.rb
|
@@ -52,9 +53,13 @@ files:
|
|
52
53
|
- lib/jira4r/v2/jiraServiceMappingRegistry.rb
|
53
54
|
- lib/jiraService.rb
|
54
55
|
- lib/jiraServiceMappingRegistry.rb
|
56
|
+
- lib/svn_hook_tools.rb
|
55
57
|
- lib/svn_jira_hook.rb
|
56
58
|
- pre-commit.sample
|
59
|
+
- svn-hook-tools.gemspec
|
60
|
+
- test/config/svn_hooks.yml
|
57
61
|
- test/test_helper.rb
|
62
|
+
- test/test_jira.rb
|
58
63
|
has_rdoc: true
|
59
64
|
homepage: http://github.com/crazycode/svn-hook-tools
|
60
65
|
licenses: []
|