cuker 0.3.17 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cuker/cuker_cmd.rb +3 -2
- data/lib/cuker/gherkin_reporter.rb +2 -2
- data/lib/cuker/high.rb +19 -15
- data/lib/cuker/version.rb +1 -1
- data/lib/cuker/writer_helper/abstract_model.rb +6 -7
- data/lib/cuker/writer_helper/abstract_writer.rb +24 -8
- data/lib/cuker/writer_helper/csv_writer.rb +8 -7
- data/lib/cuker/writer_helper/jira_model.rb +70 -13
- data/lib/cuker/writer_helper/jira_mono_model.rb +60 -0
- data/lib/cuker/writer_helper/jira_writer.rb +9 -9
- data/lib/cuker/writer_helper/ruby_x_l_writer.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: 0bdf1f98d5596286d2b3f14b542c400255e1a45db25832550b1bfff6ba33ae66
|
4
|
+
data.tar.gz: c14d46c7af705d2f90ab86b32e84c0f6a2875e6db66f7a3bc52d05eb5aba5fc7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6bb47ac4ec1d74ff23c6ad8cfe6980e273231c1e9e6c949f6f77ee7f08c84fdf4df5a591bfd8438c0e4686f60d7415f5378da95c90b09cc4a74f7581146ad83d
|
7
|
+
data.tar.gz: 4edf5dde8c2b961809ba439cab9f426d4dcd7879f053bd30b08d8b6acfd390c14657e22a11b9518d1f46888a7d58e35ab3b676b386a9722d460392e21b0632b5
|
data/lib/cuker/cuker_cmd.rb
CHANGED
@@ -22,12 +22,13 @@ module Cuker
|
|
22
22
|
PRESETS = {
|
23
23
|
:simple_csv => [CsvModel, CsvWriter],
|
24
24
|
:simple_jira => [JiraModel, JiraWriter],
|
25
|
+
:monospaced_jira => [JiraMonoModel, JiraWriter],
|
25
26
|
}
|
26
27
|
|
27
28
|
# desc "report PRESET_KEY [FEATURE_PATH [REPORT_PATH [REPORT_FILE_NAME [LOG_LEVEL]]]]",
|
28
29
|
# "reports parsed results into \nREPORT_PATH/REPORT_FILE_NAME \nfor all '*.feature' files in the given FEATURE_PATH\nSTDIO LOG_LEVEL adjustable\n"
|
29
30
|
|
30
|
-
def report preset_key,
|
31
|
+
def report preset_key, feat_path = "../", report_file_name = 'sample_report', report_path = ".", log_level = :error
|
31
32
|
init_logger log_level
|
32
33
|
report_path = File.join report_path, 'reports', LOG_TIME_TODAY
|
33
34
|
|
@@ -43,7 +44,7 @@ module Cuker
|
|
43
44
|
preset_model = model.new ast_map
|
44
45
|
preset_writer = writer.new
|
45
46
|
grr = GherkinReporter.new preset_writer, preset_model, report_path, report_file_name
|
46
|
-
grr.write
|
47
|
+
File.expand_path grr.write
|
47
48
|
end
|
48
49
|
|
49
50
|
private
|
@@ -21,10 +21,10 @@ class GherkinReporter
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def write
|
24
|
-
@writer.
|
24
|
+
file_name = @writer.make_new_file @file_path
|
25
25
|
@writer.write_title @model.title
|
26
26
|
@model.data.each {|row| @writer.write_new_row row}
|
27
|
-
|
27
|
+
file_name
|
28
28
|
end
|
29
29
|
|
30
30
|
private
|
data/lib/cuker/high.rb
CHANGED
@@ -5,34 +5,38 @@
|
|
5
5
|
# CLI = HighLine.new
|
6
6
|
#
|
7
7
|
# DEFAULT_REPORT_FILE_NAME = 'DEFAULT_REPORT_NAME'
|
8
|
-
# # DEFAULT_FEATURES_PATH = "../../features/
|
8
|
+
# # DEFAULT_FEATURES_PATH = "../../features/"
|
9
9
|
# DEFAULT_FEATURES_PATH = "."
|
10
10
|
# # DEFAULT_REPORT_PATH = './reports'
|
11
11
|
#
|
12
12
|
# def ask_for_input_location
|
13
13
|
# loc = CLI.ask "\nType your JIRA number:\n"
|
14
|
-
# File.join
|
14
|
+
# [File.join(DEFAULT_FEATURES_PATH, '**', loc), loc]
|
15
15
|
# end
|
16
16
|
#
|
17
|
-
# def ask_for_output_file_name
|
18
|
-
# name = CLI.ask "\nType your report file name: \n[hit enter to use default name => '#{
|
19
|
-
# name.
|
17
|
+
# def ask_for_output_file_name default = DEFAULT_REPORT_FILE_NAME
|
18
|
+
# # name = CLI.ask "\nType your report file name: \n[hit enter to use this default name => '#{default}']\n"
|
19
|
+
# name = CLI.ask "\nHit enter to use this default name for your output file => '#{default}'\n[if not, please type in the name you want]\n"
|
20
|
+
# name.empty? ? default : name
|
20
21
|
# end
|
21
22
|
#
|
22
23
|
# def handle_call preset
|
23
24
|
# begin
|
24
|
-
# feat_path = ask_for_input_location
|
25
|
-
# report_name = ask_for_output_file_name
|
26
|
-
# file_name = CCC.report preset,
|
27
|
-
# CLI.say("\n\nCreated '#{preset}' @ '#{file_name}' ... Enjoy!\n") if file_name
|
25
|
+
# feat_path, default_file_name = ask_for_input_location
|
26
|
+
# report_name = ask_for_output_file_name("#{preset}_#{default_file_name.empty? ? DEFAULT_REPORT_FILE_NAME : default_file_name}")
|
27
|
+
# file_name = CCC.report preset, feat_path, report_name
|
28
|
+
# CLI.say("\n\nCreated '#{preset}' @ \n'#{file_name}' ... Enjoy!\n") if file_name
|
28
29
|
# rescue Exception
|
29
|
-
# puts "An Error occured\nplease contact NarenSS (v675166) for more details\n"
|
30
|
+
# puts "An Error occured while \nplease contact NarenSS (v675166) for more details\n"
|
30
31
|
# puts e
|
31
32
|
# end
|
32
33
|
# end
|
33
34
|
#
|
34
35
|
# def exit_message
|
35
|
-
# CLI.say("
|
36
|
+
# CLI.say("\nThank you for using Cuker (a Gherkin Reporting Tool) :)\n
|
37
|
+
# Have Feature requests or Usage questions?
|
38
|
+
# Feel free to reach out to NarenSS (v675166)\n
|
39
|
+
# Have a very good day!")
|
36
40
|
# exit
|
37
41
|
# end
|
38
42
|
#
|
@@ -50,13 +54,13 @@
|
|
50
54
|
# end
|
51
55
|
# end
|
52
56
|
#
|
53
|
-
# menu.choice(:quit) {exit_message}
|
57
|
+
# menu.choice(:quit) { exit_message }
|
54
58
|
# menu.default = :quit
|
55
59
|
# end
|
56
60
|
#
|
57
|
-
# answer = CLI.
|
58
|
-
# break
|
61
|
+
# answer = CLI.agree "\nWant to rerun? \n y [n]\n"
|
62
|
+
# break unless answer
|
59
63
|
# puts "\n... rebooting ...\n\n"
|
60
64
|
# end
|
61
65
|
#
|
62
|
-
# exit_message
|
66
|
+
# exit_message
|
data/lib/cuker/version.rb
CHANGED
@@ -4,7 +4,7 @@ module IModel
|
|
4
4
|
method :write_title
|
5
5
|
method :write_new_row
|
6
6
|
|
7
|
-
method :
|
7
|
+
method :make_new_file
|
8
8
|
method :write_new_sheet
|
9
9
|
end
|
10
10
|
|
@@ -34,18 +34,17 @@ class AbstractModel
|
|
34
34
|
ary_of_hshs.map(&:keys).flatten
|
35
35
|
end
|
36
36
|
|
37
|
-
#
|
38
|
-
# used by any model
|
37
|
+
# utility methods
|
38
|
+
# used by any model
|
39
39
|
|
40
40
|
def name_merge hsh
|
41
41
|
str = ""
|
42
42
|
@log.warn "name merge for #{hsh}"
|
43
43
|
str += hsh[:name].strip.force_encoding("UTF-8") if hsh[:name]
|
44
|
-
str += "
|
44
|
+
str += "\n#{hsh[:description].strip.force_encoding("UTF-8")}" if hsh[:description]
|
45
45
|
str
|
46
46
|
end
|
47
47
|
|
48
|
-
|
49
48
|
def union feat_tags, tags
|
50
49
|
(feat_tags.to_set | tags.to_set).to_a # union
|
51
50
|
end
|
@@ -56,8 +55,8 @@ class AbstractModel
|
|
56
55
|
simple_surround ary.join(sep), sep
|
57
56
|
end
|
58
57
|
|
59
|
-
def simple_surround item, sep
|
60
|
-
"#{sep}#{item}#{sep}"
|
58
|
+
def simple_surround item, sep, r_sep = nil
|
59
|
+
"#{sep}#{item}#{r_sep || sep}"
|
61
60
|
end
|
62
61
|
|
63
62
|
# def padded_surround item, sep, pad
|
@@ -4,7 +4,7 @@ module IWriter
|
|
4
4
|
method :write_title
|
5
5
|
method :write_new_row
|
6
6
|
|
7
|
-
method :
|
7
|
+
method :make_new_file
|
8
8
|
method :write_new_sheet
|
9
9
|
end
|
10
10
|
|
@@ -14,7 +14,12 @@ class AbstractWriter
|
|
14
14
|
|
15
15
|
NoNewFileMadeError = Class.new IOError
|
16
16
|
|
17
|
+
# File Extension
|
17
18
|
attr_accessor :ext
|
19
|
+
|
20
|
+
# Active file name
|
21
|
+
attr_accessor :active_file_name
|
22
|
+
|
18
23
|
attr_accessor :sheets, :active_sheet
|
19
24
|
attr_reader :out_dir
|
20
25
|
|
@@ -36,18 +41,28 @@ class AbstractWriter
|
|
36
41
|
end
|
37
42
|
|
38
43
|
def raise_unless_active_loc data
|
39
|
-
raise NoNewFileMadeError.new "Please run '
|
44
|
+
raise NoNewFileMadeError.new "Please run 'make_new_file' before trying to write: '#{data}'" if @active_sheet.nil?
|
40
45
|
end
|
41
46
|
|
42
47
|
def make_new_sheet name = nil
|
43
|
-
|
44
|
-
@log.debug "make a new abstract sheet: #{
|
45
|
-
|
46
|
-
# todo: file name collision handle
|
48
|
+
sheet = new_name name
|
49
|
+
@log.debug "make a new abstract sheet: #{sheet}"
|
50
|
+
sheet
|
51
|
+
# todo: file name collision handle!!
|
52
|
+
end
|
53
|
+
|
54
|
+
def make_new_file name
|
55
|
+
@log.debug "make a new abstract file: #{name}#{@ext}"
|
56
|
+
make_name name
|
47
57
|
end
|
48
58
|
|
49
|
-
|
50
|
-
|
59
|
+
# @return [String] name with ext path added
|
60
|
+
def make_name name
|
61
|
+
"#{new_name name}#{@ext}"
|
62
|
+
end
|
63
|
+
|
64
|
+
def new_name name
|
65
|
+
name.nil? ? "Sheet_#{@sheets.size + 1}" : name
|
51
66
|
end
|
52
67
|
end
|
53
68
|
|
@@ -68,6 +83,7 @@ class AbstractSheet
|
|
68
83
|
def add_row ary
|
69
84
|
@rows << ary
|
70
85
|
end
|
86
|
+
|
71
87
|
alias :add_line :add_row
|
72
88
|
|
73
89
|
# @return ary of rows
|
@@ -21,13 +21,15 @@ class CsvWriter < AbstractWriter
|
|
21
21
|
|
22
22
|
def make_new_sheet name
|
23
23
|
@log.debug "csv make new sheet"
|
24
|
-
path
|
25
|
-
|
26
|
-
@
|
24
|
+
#todo: dangit! handling this path naming properly
|
25
|
+
file_name = "#{name.nil? ? super(name) : name}#{ext}"
|
26
|
+
@sheets[file_name] = CsvSheet.new file_name
|
27
|
+
@active_sheet = @sheets[file_name]
|
28
|
+
file_name
|
27
29
|
end
|
28
30
|
|
29
|
-
def
|
30
|
-
super name
|
31
|
+
def make_new_file name
|
32
|
+
path = super name
|
31
33
|
make_new_sheet name
|
32
34
|
end
|
33
35
|
end
|
@@ -38,8 +40,7 @@ require 'csv'
|
|
38
40
|
# {file:https://docs.ruby-lang.org/en/2.1.0/CSV.html CSV usage documentation}
|
39
41
|
|
40
42
|
class CsvSheet < AbstractSheet
|
41
|
-
def initialize
|
42
|
-
file_name = "#{path}#{ext}"
|
43
|
+
def initialize file_name
|
43
44
|
super file_name
|
44
45
|
@csv_sheet = CSV.open(file_name, "wb")
|
45
46
|
end
|
@@ -3,14 +3,23 @@ module Cuker
|
|
3
3
|
class JiraModel < AbstractModel
|
4
4
|
include LoggerSetup
|
5
5
|
|
6
|
+
JIRA_BLANK = ' '
|
7
|
+
JIRA_TITLE_SEP = '||'
|
8
|
+
JIRA_ROW_SEP = '|'
|
9
|
+
JIRA_EMPTY_LINE = '(empty line)'
|
10
|
+
JIRA_NEW_LINE = '\\\\'
|
11
|
+
JIRA_HORIZ_RULER = '----'
|
12
|
+
|
6
13
|
JIRA_ICONS = {
|
7
14
|
info: "(i)",
|
8
15
|
pass: "(/)",
|
9
16
|
fail: "(x)",
|
10
17
|
exclam: "(!)",
|
11
18
|
question: "(?)",
|
19
|
+
empty: JIRA_BLANK
|
12
20
|
}
|
13
21
|
|
22
|
+
|
14
23
|
def initialize ast_map
|
15
24
|
super
|
16
25
|
@log.trace "initing #{self.class}"
|
@@ -55,34 +64,41 @@ module Cuker
|
|
55
64
|
@asts.each do |file_path, ast|
|
56
65
|
@file_path = file_path
|
57
66
|
in_feat_counter = 0
|
67
|
+
@feat_printed = false
|
58
68
|
if ast[:type] == :GherkinDocument
|
59
69
|
in_feature(ast) do |feat_tags_ary, feat_title, feat_item|
|
60
70
|
in_item(feat_item) do |tags_ary, title, type, content_ary|
|
61
71
|
row_hsh = {}
|
62
|
-
if type == :Background
|
72
|
+
if type == :Background or type == :Feature
|
73
|
+
@feat_printed = true
|
74
|
+
title_str = ''
|
75
|
+
# feat handle
|
76
|
+
title_str += jira_title 'Feature', feat_title
|
77
|
+
title_str += jira_title('Background', title) if title
|
63
78
|
row_hsh = {
|
64
79
|
:s_num => "#{feat_counter}",
|
65
|
-
:s_title =>
|
80
|
+
:s_title => surround_panel(title_str),
|
66
81
|
:s_content => surround_panel(content_ary.join("\n")),
|
67
82
|
:item => simple_surround(JIRA_ICONS[:empty], '|'),
|
68
83
|
}
|
69
84
|
elsif type == :Scenario or type == :ScenarioOutline
|
70
85
|
row_hsh = {
|
71
86
|
:s_num => "#{feat_counter}.#{in_feat_counter += 1}",
|
72
|
-
:s_title => title,
|
87
|
+
:s_title => surround_panel(jira_title(type, title)),
|
73
88
|
:s_content => surround_panel(content_ary.join("\n")),
|
74
|
-
:item => simple_surround(JIRA_ICONS[type == :ScenarioOutline ? :info : :exclam], '|'),
|
89
|
+
# :item => simple_surround(JIRA_ICONS[type == :ScenarioOutline ? :info : :exclam], '|'),
|
90
|
+
:item => simple_surround(JIRA_ICONS[:info], '|'),
|
75
91
|
}
|
76
92
|
elsif type == :Examples
|
77
93
|
row_hsh = {
|
78
94
|
:s_num => "#{feat_counter}.#{in_feat_counter}.x",
|
79
|
-
:s_title => title, # example title
|
95
|
+
:s_title => surround_panel(jira_title(type, title)), # example title
|
80
96
|
:s_content => surround_panel(content_ary.join("\n")),
|
81
97
|
:item => simple_surround(JIRA_ICONS[:info], '|'),
|
82
98
|
}
|
83
99
|
end
|
84
100
|
row_ary = []
|
85
|
-
get_keys_ary(@order).each {|k| row_ary << row_hsh[k]}
|
101
|
+
get_keys_ary(@order).each {|k| row_ary << jira_arg_hilight(row_hsh[k])}
|
86
102
|
res << surround(row_ary, '|')
|
87
103
|
end
|
88
104
|
end
|
@@ -112,6 +128,9 @@ module Cuker
|
|
112
128
|
tags = get_tags child
|
113
129
|
if child[:type] == :Background
|
114
130
|
yield tags, item_title, child[:type], get_steps(child)
|
131
|
+
elsif !@feat_printed
|
132
|
+
yield [], JIRA_BLANK, :Feature, [JIRA_BLANK]
|
133
|
+
yield tags, item_title, child[:type], get_steps(child)
|
115
134
|
elsif child[:type] == :Scenario
|
116
135
|
yield tags, item_title, child[:type], get_steps(child)
|
117
136
|
elsif child[:type] == :ScenarioOutline
|
@@ -141,9 +160,9 @@ module Cuker
|
|
141
160
|
res = []
|
142
161
|
examples.each do |example|
|
143
162
|
if example[:type] == :Examples
|
144
|
-
res <<
|
163
|
+
res << JIRA_HORIZ_RULER
|
145
164
|
|
146
|
-
eg_title =
|
165
|
+
eg_title = jira_title 'Examples', name_merge(example)
|
147
166
|
res << eg_title
|
148
167
|
|
149
168
|
eg_header = surround(in_table_row(example[:tableHeader]), '||')
|
@@ -170,9 +189,11 @@ module Cuker
|
|
170
189
|
|
171
190
|
def in_table_cell cell_hsh
|
172
191
|
if cell_hsh[:type] == :TableCell
|
173
|
-
cell_hsh[:value]
|
192
|
+
val = cell_hsh[:value].strip
|
193
|
+
val.empty? ? JIRA_BLANK : val
|
174
194
|
else
|
175
195
|
@log.warn "Expected :TableCell in #{cell_hsh} @ #{@file_path}"
|
196
|
+
JIRA_BLANK
|
176
197
|
end
|
177
198
|
end
|
178
199
|
|
@@ -180,10 +201,14 @@ module Cuker
|
|
180
201
|
steps.each do |step|
|
181
202
|
if step[:type] == :Step
|
182
203
|
step_ary = []
|
183
|
-
|
184
|
-
|
185
|
-
step[:text].strip
|
186
|
-
].join(
|
204
|
+
step_str = [
|
205
|
+
((jira_bold(step[:keyword].strip)).rjust(7)), # bolding the keywords
|
206
|
+
(step[:text].strip)
|
207
|
+
].join(' ')
|
208
|
+
|
209
|
+
# step_ary << jira_monospace(step_str)
|
210
|
+
step_ary << (step_str)
|
211
|
+
|
187
212
|
step_ary += in_step_args(step[:argument]) if step[:argument]
|
188
213
|
# todo: padding as needed
|
189
214
|
yield step_ary
|
@@ -193,6 +218,7 @@ module Cuker
|
|
193
218
|
end
|
194
219
|
end
|
195
220
|
|
221
|
+
# helps handle tables for now
|
196
222
|
def in_step_args arg
|
197
223
|
if arg[:type] == :DataTable
|
198
224
|
res = []
|
@@ -218,5 +244,36 @@ module Cuker
|
|
218
244
|
end
|
219
245
|
end
|
220
246
|
|
247
|
+
def surround_color str, color = nil
|
248
|
+
if title
|
249
|
+
"{color:#{color}} #{str} {color}"
|
250
|
+
else
|
251
|
+
"{color} #{str} {color}"
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
def jira_title keyword, title
|
256
|
+
"#{jira_bold "#{keyword}:"} #{title}\n "
|
257
|
+
end
|
258
|
+
|
259
|
+
def jira_arg_hilight(str)
|
260
|
+
str.gsub(/<(.*)>/, jira_bold_italics('<\1>'))
|
261
|
+
end
|
262
|
+
|
263
|
+
def jira_bold str
|
264
|
+
simple_surround str, '*'
|
265
|
+
end
|
266
|
+
|
267
|
+
def jira_monospace str
|
268
|
+
simple_surround str, '{{', '}}'
|
269
|
+
end
|
270
|
+
|
271
|
+
def jira_bold_italics(str)
|
272
|
+
jira_bold(jira_italics(str))
|
273
|
+
end
|
274
|
+
|
275
|
+
def jira_italics(str)
|
276
|
+
simple_surround(str, '_')
|
277
|
+
end
|
221
278
|
end
|
222
279
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require_relative 'abstract_writer'
|
2
|
+
module Cuker
|
3
|
+
class JiraMonoModel < JiraModel
|
4
|
+
include LoggerSetup
|
5
|
+
|
6
|
+
def in_table_cell cell_hsh
|
7
|
+
if cell_hsh[:type] == :TableCell
|
8
|
+
val = cell_hsh[:value].strip
|
9
|
+
val.empty? ? JIRA_BLANK : jira_monospace(val)
|
10
|
+
else
|
11
|
+
@log.warn "Expected :TableCell in #{cell_hsh} @ #{@file_path}"
|
12
|
+
JIRA_BLANK
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def in_step(steps)
|
17
|
+
steps.each do |step|
|
18
|
+
if step[:type] == :Step
|
19
|
+
step_ary = []
|
20
|
+
step_str = [
|
21
|
+
(jira_monospace(jira_bold(step[:keyword].strip)).rjust(11)), # bolding the keywords
|
22
|
+
jira_monospace(step[:text].strip)
|
23
|
+
].join(' ')
|
24
|
+
|
25
|
+
# step_ary << jira_monospace(step_str)
|
26
|
+
step_ary << (step_str)
|
27
|
+
|
28
|
+
step_ary += in_step_args(step[:argument]) if step[:argument]
|
29
|
+
# todo: padding as needed
|
30
|
+
yield step_ary
|
31
|
+
else
|
32
|
+
@log.warn "Unknown type '#{item[:type]}' found in file @ #{@file_path}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# helps handle tables for now
|
38
|
+
def in_step_args arg
|
39
|
+
if arg[:type] == :DataTable
|
40
|
+
res = []
|
41
|
+
arg[:rows].each_with_index do |row, i|
|
42
|
+
sep = i == 0 ? '||' : '|'
|
43
|
+
res << surround(row[:cells].map {|hsh| jira_monospace(hsh[:value])}, sep)
|
44
|
+
end
|
45
|
+
return res
|
46
|
+
elsif arg[:type] == :DocString
|
47
|
+
# todo: handle if needed
|
48
|
+
@log.warn "Docstrings found in '#{arg}' found in file @ #{@file_path}"
|
49
|
+
else
|
50
|
+
@log.warn "Unknown type '#{arg[:type]}' found in file @ #{@file_path}"
|
51
|
+
end
|
52
|
+
[]
|
53
|
+
end
|
54
|
+
|
55
|
+
def jira_monospace str
|
56
|
+
simple_surround str, '{{', '}}'
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
@@ -22,26 +22,26 @@ class JiraWriter < AbstractWriter
|
|
22
22
|
def make_new_sheet name = nil
|
23
23
|
@log.debug "JW make new sheet"
|
24
24
|
path = super name
|
25
|
-
|
26
|
-
@active_sheet = @sheets[path]
|
25
|
+
path
|
27
26
|
end
|
28
27
|
|
29
|
-
def
|
30
|
-
super name
|
31
|
-
|
28
|
+
def make_new_file name
|
29
|
+
path = super name
|
30
|
+
@sheets[path] = JiraFile.new path
|
31
|
+
@active_sheet = @sheets[path]
|
32
|
+
path
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
35
36
|
class JiraFile < AbstractSheet
|
36
|
-
def initialize
|
37
|
-
file_name = "#{path}#{ext}"
|
37
|
+
def initialize file_name
|
38
38
|
super file_name
|
39
|
-
@
|
39
|
+
@jira_file = File.open(file_name, "wb")
|
40
40
|
end
|
41
41
|
|
42
42
|
def add_line line
|
43
43
|
super line
|
44
|
-
@log.
|
44
|
+
@log.error "argument not a String.. instead is a '#{line.class}' -> '#{line}'" unless line.is_a? String
|
45
45
|
File.open(@name, "ab") do |file|
|
46
46
|
file << "#{line}\n"
|
47
47
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cuker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ufo2mstar
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-05-
|
11
|
+
date: 2019-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -183,6 +183,7 @@ files:
|
|
183
183
|
- lib/cuker/writer_helper/csv_model.rb
|
184
184
|
- lib/cuker/writer_helper/csv_writer.rb
|
185
185
|
- lib/cuker/writer_helper/jira_model.rb
|
186
|
+
- lib/cuker/writer_helper/jira_mono_model.rb
|
186
187
|
- lib/cuker/writer_helper/jira_writer.rb
|
187
188
|
- lib/cuker/writer_helper/ruby_x_l_writer.rb
|
188
189
|
- lib/cuker/writer_helper/title.rb
|