powirb 1.0 → 1.1
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/Rakefile +1 -1
- data/lib/powirb/handler.rb +20 -19
- data/lib/powirb/version.rb +1 -1
- data/lib/powirb/workitem.rb +30 -20
- data/lib/powirb.rb +15 -15
- data/powirb.gemspec +2 -1
- data/test/test_powirb_workitem.rb +14 -1
- metadata +4 -4
data/Rakefile
CHANGED
data/lib/powirb/handler.rb
CHANGED
@@ -13,31 +13,31 @@ class Handler
|
|
13
13
|
# Initialize the handler with the project path (usually a subversion
|
14
14
|
# working copy)
|
15
15
|
def initialize(project_path)
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
unless File.exist?(project_path)
|
17
|
+
msg = "Invalid project path '#{project_path}'"
|
18
|
+
Powirb.log.error(msg)
|
19
|
+
raise msg
|
20
|
+
end
|
21
21
|
@project_path = project_path
|
22
|
-
|
22
|
+
Powirb.log.debug("Initialized handler for #{@project_path}")
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
@workitems_count = 0
|
25
|
+
self.workitems_paths.each do |path|
|
26
|
+
@workitems_count += Dir[File.join(@project_path, path, "/**/workitem.xml")].size
|
27
|
+
end
|
28
|
+
Powirb.log.debug("Found #{@workitems_count} workitems.")
|
29
29
|
end
|
30
30
|
|
31
31
|
# Return all workitems in the project
|
32
32
|
def workitems
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
tmp = []
|
34
|
+
self.workitems_paths.each do |path|
|
35
|
+
Dir[File.join(@project_path, path, "/**/workitem.xml")].each do |filename|
|
36
|
+
tmp << Workitem.new(filename)
|
37
|
+
Powirb.log.debug("Added workitem from #{filename}")
|
38
|
+
end
|
38
39
|
end
|
39
|
-
|
40
|
-
tmp
|
40
|
+
tmp
|
41
41
|
end
|
42
42
|
|
43
43
|
# Return the number of total workitems found in the project
|
@@ -47,7 +47,8 @@ class Handler
|
|
47
47
|
|
48
48
|
# Returns the path for workitems in the specified project
|
49
49
|
def workitems_paths
|
50
|
-
[
|
50
|
+
[ File.join('.polarion', 'tracker', 'workitems'),
|
51
|
+
File.join('modules', '**', 'workitems') ]
|
51
52
|
end
|
52
53
|
end
|
53
54
|
|
data/lib/powirb/version.rb
CHANGED
data/lib/powirb/workitem.rb
CHANGED
@@ -15,46 +15,46 @@ class Workitem
|
|
15
15
|
# in the standard way Polarion does it
|
16
16
|
def initialize(filename)
|
17
17
|
@filename = filename
|
18
|
-
|
18
|
+
Powirb.log.debug("Initializing workitem with #{filename}")
|
19
19
|
end
|
20
20
|
|
21
21
|
# Read workitem content
|
22
22
|
def read
|
23
23
|
Powirb.log.debug("Retrieving workitem from #{@filename}")
|
24
24
|
begin
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
@doc = Nokogiri::XML(open(@filename))
|
26
|
+
rescue Exception => e
|
27
|
+
Powirb.log.error(e)
|
28
|
+
end
|
29
29
|
end
|
30
30
|
|
31
31
|
# Return a field value
|
32
32
|
def [](fname)
|
33
33
|
fname = fname.to_s
|
34
34
|
node = @doc.xpath("//field[@id=\"#{fname}\"]")
|
35
|
-
|
36
|
-
|
35
|
+
return nil if node.text.empty?
|
36
|
+
node.text
|
37
37
|
end
|
38
38
|
|
39
39
|
# Set/remove a field
|
40
40
|
def []=(fname, fvalue)
|
41
41
|
fname = fname.to_s
|
42
42
|
if self[fname].nil?
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
# inserting new field
|
44
|
+
Powirb.log.debug("[#{wid}] adding new field '#{fname}' with value '#{fvalue}'")
|
45
|
+
@doc.xpath('//field[@id="type"]').last.add_next_sibling("\n <field id=\"#{fname}\">#{fvalue}</field>")
|
46
46
|
else
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
47
|
+
if fvalue.nil?
|
48
|
+
# removing existing field
|
49
|
+
Powirb.log.debug("[#{wid}] removing field '#{fname}'")
|
50
|
+
@doc.xpath("//field[@id=\"#{fname}\"]").last.remove
|
51
|
+
else
|
52
|
+
# updating existing field
|
53
|
+
Powirb.log.debug("[#{wid}] updating field '#{fname}' with value '#{fvalue}'")
|
54
|
+
e = @doc.xpath("//field[@id=\"#{fname}\"]").last
|
55
|
+
e.content = fvalue
|
56
|
+
end
|
56
57
|
end
|
57
|
-
end
|
58
58
|
end
|
59
59
|
|
60
60
|
# Save workitem on filesystem
|
@@ -67,6 +67,16 @@ class Workitem
|
|
67
67
|
def wid
|
68
68
|
File.basename(File.dirname(@filename))
|
69
69
|
end
|
70
|
+
|
71
|
+
# Return XML content
|
72
|
+
def to_xml
|
73
|
+
@doc.to_xml
|
74
|
+
end
|
75
|
+
|
76
|
+
# Return a list with all field names
|
77
|
+
def fields
|
78
|
+
@doc.xpath("//field").map{|node| node['id']}.sort
|
79
|
+
end
|
70
80
|
end
|
71
81
|
|
72
82
|
end
|
data/lib/powirb.rb
CHANGED
@@ -23,21 +23,21 @@ module Powirb
|
|
23
23
|
# +filename+ if not specified STDOUT is used
|
24
24
|
def self.set_logger(level, filename=STDOUT)
|
25
25
|
@logger = Logger.new(filename)
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
26
|
+
@logger.datetime_format = "%Y-%m-%d %H:%M:%S"
|
27
|
+
@logger.level = case level.to_s
|
28
|
+
when 'debug'
|
29
|
+
Logger::DEBUG
|
30
|
+
when 'info'
|
31
|
+
Logger::INFO
|
32
|
+
when 'warn'
|
33
|
+
Logger::WARN
|
34
|
+
when 'error'
|
35
|
+
Logger::ERROR
|
36
|
+
when 'fatal'
|
37
|
+
Logger::FATAL
|
38
|
+
else
|
39
|
+
Logger::WARN
|
40
|
+
end
|
41
41
|
end
|
42
42
|
|
43
43
|
# we have to provide a default logger
|
data/powirb.gemspec
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
require 'Nokogiri'
|
2
3
|
|
3
4
|
class PowirbWorkitemTest < Test::Unit::TestCase
|
4
5
|
|
@@ -70,5 +71,17 @@ class PowirbWorkitemTest < Test::Unit::TestCase
|
|
70
71
|
w.read
|
71
72
|
assert_nil w['priority']
|
72
73
|
end
|
73
|
-
|
74
|
+
|
75
|
+
def test_xml
|
76
|
+
xml = @wi.to_xml
|
77
|
+
assert_kind_of String, xml
|
78
|
+
assert xml.include?("<field id=\"title\">#{@wi[:title]}</field>")
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_fields
|
82
|
+
fields = @wi.fields
|
83
|
+
assert_kind_of Array, fields
|
84
|
+
assert fields.include?('title')
|
85
|
+
assert !fields.include?('foo')
|
86
|
+
end
|
74
87
|
end
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: powirb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 13
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: "1.
|
8
|
+
- 1
|
9
|
+
version: "1.1"
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Carlo Pecchia
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-04-
|
17
|
+
date: 2011-04-18 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|