md2site 0.1.2 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -19
- data/Gemfile +1 -1
- data/Gemfile.lock +21 -28
- data/bin/md2site +26 -31
- data/data/_x/diff.txt +337 -0
- data/data/_x/list.txt +495 -0
- data/data/_x/list2.txt +495 -0
- data/data/_x/list3.txt +415 -0
- data/data/_x/list4.txt +415 -0
- data/data/_x/list5.txt +392 -0
- data/data/_x/list6.txt +298 -0
- data/data/_x/list7.txt +201 -0
- data/data/_x/list8.txt +199 -0
- data/data/_x/outer_url.txt +94 -0
- data/data/_x/s.txt +140 -0
- data/data/conf/conf.sh +0 -2
- data/data/testdata/{conf-blog.yml → conf/conf-blog.yml} +0 -0
- data/data/testdata/{conf-download.yml → conf/conf-download.yml} +0 -0
- data/data/testdata/{conf-link.yml → conf/conf-link.yml} +0 -0
- data/data/testdata/{conf-profile.yml → conf/conf-profile.yml} +0 -0
- data/data/testdata/{conf-top.yml → conf/conf-top.yml} +0 -0
- data/data/testdata/{site.tsv → conf/site.tsv} +0 -0
- data/data/testdata0/{conf-appliction.yml → conf/conf-appliction.yml} +0 -0
- data/data/testdata0/{conf-attempt.yml → conf/conf-attempt.yml} +16 -16
- data/data/testdata0/conf/conf-autosar.yml +11 -0
- data/data/testdata0/{conf-community.yml → conf/conf-community.yml} +0 -0
- data/data/testdata0/{conf-document.yml → conf/conf-document.yml} +0 -0
- data/data/testdata0/{conf-download.yml → conf/conf-download.yml} +0 -0
- data/data/testdata0/{conf-edu.yml → conf/conf-edu.yml} +18 -19
- data/data/testdata0/{conf-etc.yml → conf/conf-etc.yml} +0 -0
- data/data/testdata0/{conf-members.yml → conf/conf-members.yml} +0 -0
- data/data/testdata0/{conf-product.yml → conf/conf-product.yml} +9 -9
- data/data/testdata0/{conf-project.yml → conf/conf-project.yml} +2 -2
- data/data/testdata0/conf/conf-rtk.yml +25 -0
- data/data/testdata0/conf/conf-sample.yml +5 -0
- data/data/testdata0/{conf-top.yml → conf/conf-top.yml} +0 -0
- data/data/testdata0/conf/conf.sh +32 -0
- data/data/testdata0/{setting.yml → conf/setting.yml} +11 -0
- data/data/testdata0/{site.tsv → conf/site.tsv} +109 -2
- data/data/testdata0/conf/status.txt +6 -0
- data/lib/md2site/env.rb +248 -276
- data/lib/md2site/envcheck.rb +186 -0
- data/lib/md2site/htmlutils0.rb +64 -2
- data/lib/md2site/info.rb +12 -0
- data/lib/md2site/init.rb +61 -5
- data/lib/md2site/listfile.rb +16 -0
- data/lib/md2site/make.rb +92 -31
- data/lib/md2site/nkfguess.rb +8 -0
- data/lib/md2site/setup.rb +104 -28
- data/lib/md2site/statusfile.rb +98 -6
- data/lib/md2site/testdata.rb +43 -3
- data/lib/md2site/testx.rb +28 -1
- data/lib/md2site/version.rb +1 -1
- data/lib/md2site.rb +93 -26
- data/md2site.gemspec +5 -6
- metadata +77 -76
- data/data/testdata0/conf-autosar.yml +0 -11
- data/data/testdata0/conf-rtk.yml +0 -25
@@ -0,0 +1,186 @@
|
|
1
|
+
module Md2site
|
2
|
+
#
|
3
|
+
# 環境検査クラス
|
4
|
+
#
|
5
|
+
class EnvCheck
|
6
|
+
#
|
7
|
+
# 初期化
|
8
|
+
#
|
9
|
+
# @param mes [Messagex] Messagexクラスのインスタンス
|
10
|
+
# @param conf_path [String] 構成ファイルのパス
|
11
|
+
# @param verbose [Boolean] FileUtilsクラスのメソッドのverbose引数に与える値
|
12
|
+
def initialize(mes, conf_path)
|
13
|
+
@mes = mes
|
14
|
+
@conf_path = conf_path
|
15
|
+
end
|
16
|
+
|
17
|
+
#
|
18
|
+
# 有効な構成ファイルへのパスであるか調べる(無効であればexitする)
|
19
|
+
#
|
20
|
+
# @return [void]
|
21
|
+
def check_conf_path
|
22
|
+
unless @conf_path
|
23
|
+
@mes.output_error("Not specified conf file")
|
24
|
+
exit(@mes.ec("EXIT_CODE_NOT_SPECIFIED_CONFFILE"))
|
25
|
+
end
|
26
|
+
|
27
|
+
unless File.exist?(@conf_path)
|
28
|
+
@mes.output_fatal("Cannot find conf file(#{confPath})")
|
29
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_FIND_CONFFILE"))
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
#
|
34
|
+
# Envクラスのattributeとして有効な値が構成ファイル中に指定されているか調べる(無効であればexitする)
|
35
|
+
#
|
36
|
+
# @param conf_hs [Hash] 構成ハッシュ
|
37
|
+
# @return [void]
|
38
|
+
def check_conf_hs_for_attribute(conf_hs)
|
39
|
+
@absolute_path_root_conf = conf_hs["ABSOLUTE_PATH_ROOT_CONF"]
|
40
|
+
unless @absolute_path_root_conf
|
41
|
+
@mes.output_fatal("Cannot get ABSOLUTE_PATH_ROOT_CONF in #{@conf_path}")
|
42
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_ABSOLUTE_PATH_ROOT_CONF"))
|
43
|
+
end
|
44
|
+
unless File.exist?(@absolute_path_root_conf)
|
45
|
+
@mes.output_fatal("Cannot find root conf dir(#{@absolute_path_root_conf})")
|
46
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_FIND_ROOTCONFFILE"))
|
47
|
+
end
|
48
|
+
|
49
|
+
@absolutepath_root_settingfile = conf_hs["ABSOLUTE_PATH_ROOT_SETTINGFILE"]
|
50
|
+
unless @absolutepath_root_settingfile
|
51
|
+
@mes.output_error("Can't get ABSOLUTE_PATH_ROOT_SETTINGFILE in #{@conf_path}")
|
52
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_ABSOLUTE_PATH_ROOT_SETTINGFILE"))
|
53
|
+
end
|
54
|
+
[@absolute_path_root_conf, @absolutepath_root_settingfile]
|
55
|
+
end
|
56
|
+
|
57
|
+
#
|
58
|
+
# 構成ファイルから変換したハッシュに有効な値が指定されているか調べる(無効であればexitする)
|
59
|
+
#
|
60
|
+
# @param conf_hs [Hash] 構成ハッシュ
|
61
|
+
# @param absolutepath_root [String] プロジェクトルートへの絶対パス
|
62
|
+
# @param root_output_dir [String] ルート出力ディレクトリ
|
63
|
+
# @return [void]
|
64
|
+
def check_conf_hs(conf_hs, absolutepath_root, root_output_dir) # rubocop:disable Metrics/MethodLength
|
65
|
+
default_table_template = conf_hs["DEFAULT_TABLE_TEMPLATE"] # 5col_no_attr_b.erb
|
66
|
+
unless default_table_template || !FileTest.exist?(default_table_template)
|
67
|
+
@mes.output_fatal("Cannot find valid DEFAULT_TABLE_TEMPLATE(=#{default_table_template}) in #{@conf_path}")
|
68
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_FIND_DEFAULT_TABLE_TEMPLATE"))
|
69
|
+
end
|
70
|
+
|
71
|
+
sitefile_path = conf_hs["ABSOLUTE_PATH_SITE_FILE"]
|
72
|
+
unless sitefile_path || !FileTest.exist?(sitefile_path)
|
73
|
+
@mes.output_error("Can't get valid ABSOLUTE_PATH_SITE_FILE in #{@conf_path}")
|
74
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_ABSOLUTE_PATH_SITE_FILE"))
|
75
|
+
end
|
76
|
+
|
77
|
+
absolute_path_status_file = conf_hs["ABSOLUTE_PATH_STATUS_FILE"]
|
78
|
+
unless absolute_path_status_file || !FileTest.exist?(absolute_path_status_file)
|
79
|
+
@mes.output_error("Can't find valid ABSOLUTE_PATH_STATUS_FILE in #{@conf_path}")
|
80
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_ABSOLUTE_PATH_STATUS_FILE"))
|
81
|
+
end
|
82
|
+
|
83
|
+
unless conf_hs["TEMPLELATE_DIR"]
|
84
|
+
@mes.output_error("Can't get TEPLATE_DIR in #{@conf_path}")
|
85
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_TEPLATE_DIR"))
|
86
|
+
end
|
87
|
+
|
88
|
+
unless conf_hs["CONF_DIR"]
|
89
|
+
@mes.output_error("Can't get CONF_DIR in #{@conf_path}")
|
90
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_CONF_DIR"))
|
91
|
+
end
|
92
|
+
|
93
|
+
unless conf_hs["URL"]
|
94
|
+
@mes.output_error("Can't get URL in #{@conf_path}")
|
95
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_URL"))
|
96
|
+
end
|
97
|
+
|
98
|
+
unless conf_hs["ROOT_TEMPLATE_FUNCTIONS_VARIABLE"]
|
99
|
+
@mes.output_fatal("Cannot get value by ROOT_TEMPLATE_FUNCTIONS_VARIABLE from #{@conf_path}")
|
100
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_ROOT_TEMPLATE_FUNCTIONS_VARIABLE"))
|
101
|
+
end
|
102
|
+
root_output_path = File.join(absolutepath_root, root_output_dir)
|
103
|
+
unless File.exist?(root_output_path)
|
104
|
+
@mes.output_error("Can't find root_output_dir(=#{root_output_dir})")
|
105
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_FIND_ROOTOUTPUTDIR"))
|
106
|
+
end
|
107
|
+
|
108
|
+
sitefile_path
|
109
|
+
end
|
110
|
+
|
111
|
+
#
|
112
|
+
# 構成ファイルから変換したハッシュに指定されている値が有効であれば、インスタンス変数で参照できるようにする(無効であればexitする)
|
113
|
+
#
|
114
|
+
# @param conf_hs [Hash] 構成ハッシュ
|
115
|
+
# @return [void]
|
116
|
+
def check_conf_hs_and_set(conf_hs) # rubocop:disable Metrics/MethodLength
|
117
|
+
@category_conf_prefix = conf_hs["CATEGORY_CONF_PREFIX"]
|
118
|
+
unless @category_conf_prefix
|
119
|
+
@mes.output_fatal("Cannot get category conf prefix from #{@conf_path}")
|
120
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_CATEGORY_CONF_PREFIX"))
|
121
|
+
end
|
122
|
+
|
123
|
+
@root_output_dir = conf_hs["OUTPUT_DIR"]
|
124
|
+
unless @root_output_dir
|
125
|
+
@mes.output_fatal("Cannot get rootOutputDir from #{@conf_path}")
|
126
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_ROOTOUTPUTDIR"))
|
127
|
+
end
|
128
|
+
|
129
|
+
@src_dir = conf_hs["SRC_DIR"]
|
130
|
+
unless @src_dir
|
131
|
+
@mes.output_error("Can't get SRC_DIR in #{@conf_path}")
|
132
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_SRC_DIR"))
|
133
|
+
end
|
134
|
+
|
135
|
+
@data_dir = conf_hs["DATA_DIR"]
|
136
|
+
unless @data_dir
|
137
|
+
@mes.output_fatal("Cannot get DATA_DIR in #{@conf_path}")
|
138
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_DATA_DIR"))
|
139
|
+
end
|
140
|
+
|
141
|
+
@work_dir = conf_hs["WORK_DIR"]
|
142
|
+
unless @work_dir
|
143
|
+
@mes.output_fatal("Cannot get WORK_DIR in #{@conf_path}")
|
144
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_WORK_DIR"))
|
145
|
+
end
|
146
|
+
|
147
|
+
@material_dir = conf_hs["MATERIAL_DIR"]
|
148
|
+
unless @material_dir
|
149
|
+
@mes.output_fatal("Cannot get MATERIAL_DIR in #{@conf_path}")
|
150
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_MATERIAL_DIR"))
|
151
|
+
end
|
152
|
+
|
153
|
+
@target_command_index = conf_hs["TARGET_COMMAND_INDEX"].to_i
|
154
|
+
unless @target_command_index
|
155
|
+
@mes.output_fatal("Cannot get targetCommandIndex from #{@conf_path}")
|
156
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_CANNOT_GET_TARGET_COMMAND_INDEX"))
|
157
|
+
end
|
158
|
+
|
159
|
+
@subtarget_command_index = conf_hs["SUBTARGET_COMMAND_INDEX"].to_i
|
160
|
+
unless @subtarget_command_index
|
161
|
+
@mes.output_fatal("Cannot get subTargetCommandIndex from #{@conf_path}")
|
162
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_SUBTARGET_COMMAND_INDEX"))
|
163
|
+
end
|
164
|
+
|
165
|
+
@key_index = conf_hs["KEY_INDEX"].to_i
|
166
|
+
unless @key_index
|
167
|
+
@mes.output_fatal("Cannot get keyIndex from #{@conf_path}")
|
168
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_KEY_INDEX"))
|
169
|
+
end
|
170
|
+
|
171
|
+
@htmlfile_index = conf_hs["HTMLFILE_INDEX"].to_i
|
172
|
+
unless @htmlfile_index
|
173
|
+
@mes.output_fatal("Cannot get htmlfileIndex from #{@conf_path}")
|
174
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_HTMLFILE_INDEX"))
|
175
|
+
end
|
176
|
+
|
177
|
+
@alias_htmlfile_index = conf_hs["ALIAS_HTMLFILE_INDEX"].to_i
|
178
|
+
unless @alias_htmlfile_index
|
179
|
+
@mes.output_fatal("Cannot get aliasHtmlfileIndex from #{@conf_path}")
|
180
|
+
exit(@mes.ec("EXIT_CODE_CANNOT_GET_ALIAS_HTMLFILE_INDEX"))
|
181
|
+
end
|
182
|
+
|
183
|
+
[@category_conf_prefix, @root_output_dir, @src_dir, @data_dir, @work_dir, @material_dir, @target_command_index, @subtarget_command_index, @key_index, @htmlfile_index, @alias_htmlfile_index]
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
data/lib/md2site/htmlutils0.rb
CHANGED
@@ -1,12 +1,26 @@
|
|
1
1
|
module Md2site
|
2
|
+
#
|
3
|
+
# HTMLファイル分割クラス
|
2
4
|
class HTMLUtils
|
3
5
|
require "md2site/nkfguess"
|
4
6
|
|
7
|
+
#
|
8
|
+
# 初期化
|
9
|
+
#
|
10
|
+
# @param htmlfname [String] 分割対象HTMLファイル名
|
11
|
+
# @param mes [Messagex] Messagexクラスのインスタンス
|
12
|
+
# @return [void]
|
5
13
|
def initialize(htmlfname, mes)
|
6
14
|
@htmlfname = htmlfname
|
7
15
|
@mes = mes
|
8
16
|
end
|
9
17
|
|
18
|
+
#
|
19
|
+
# 1行解析
|
20
|
+
#
|
21
|
+
# @param state [Symbol] 分割対象HTMLファイル名
|
22
|
+
# @param line [String] 解析対象行
|
23
|
+
# @return [Symbol] 構文解析上の次の状態
|
10
24
|
def parse_line(state, line)
|
11
25
|
event = get_event(line)
|
12
26
|
|
@@ -29,6 +43,10 @@ module Md2site
|
|
29
43
|
next_state
|
30
44
|
end
|
31
45
|
|
46
|
+
#
|
47
|
+
# HTMLファイル分割
|
48
|
+
#
|
49
|
+
# @return [Array] 第0要素:HTML先頭部 第1要素:HTML中間部 第2要素:HTML末尾部
|
32
50
|
def divide_html
|
33
51
|
part_struct = Struct.new(:lines, :status)
|
34
52
|
@part0 = part_struct.new([], false)
|
@@ -58,6 +76,11 @@ module Md2site
|
|
58
76
|
|
59
77
|
private
|
60
78
|
|
79
|
+
#
|
80
|
+
# 解析対象行からトークン取得
|
81
|
+
#
|
82
|
+
# @param line [String] 解析対象行
|
83
|
+
# @return [Symbol] トークン種別
|
61
84
|
def get_event(line)
|
62
85
|
line.chomp!
|
63
86
|
@lineno += 1
|
@@ -81,6 +104,11 @@ module Md2site
|
|
81
104
|
event
|
82
105
|
end
|
83
106
|
|
107
|
+
#
|
108
|
+
# part0部のCONTENTS_ENDイベント処理
|
109
|
+
#
|
110
|
+
# @param line [String] 解析対象行
|
111
|
+
# @return [Symbol] 構文解析上の次の状態
|
84
112
|
def state_in_part0_contents_end(line)
|
85
113
|
@part0.lines << @lines
|
86
114
|
if !@div_body_main.nil? && !@div_cse.nil?
|
@@ -93,6 +121,12 @@ module Md2site
|
|
93
121
|
:IN_PART2
|
94
122
|
end
|
95
123
|
|
124
|
+
#
|
125
|
+
# part0部のイベント処理
|
126
|
+
#
|
127
|
+
# @param event [Symbol] トークン種別
|
128
|
+
# @param line [String] 解析対象行
|
129
|
+
# @return [Symbol] 構文解析上の次の状態
|
96
130
|
def state_in_part0(event, line)
|
97
131
|
case event
|
98
132
|
when :CONTENTS_BEGIN
|
@@ -125,7 +159,12 @@ module Md2site
|
|
125
159
|
next_state
|
126
160
|
end
|
127
161
|
|
128
|
-
|
162
|
+
#
|
163
|
+
# part0_contents部のcontents_endイベント処理
|
164
|
+
#
|
165
|
+
# @param line [String] 解析対象行
|
166
|
+
# @return [Symbol] 構文解析上の次の状態
|
167
|
+
def state_in_part0_contents_contents_end(line)
|
129
168
|
@part1.lines << @lines
|
130
169
|
if !@div_body_main.nil? && !@div_cse.nil?
|
131
170
|
@part1.status = true
|
@@ -137,13 +176,19 @@ module Md2site
|
|
137
176
|
:IN_PART2
|
138
177
|
end
|
139
178
|
|
179
|
+
#
|
180
|
+
# part0_contents部のイベント処理
|
181
|
+
#
|
182
|
+
# @param event [Symbol] トークン種別
|
183
|
+
# @param line [String] 解析対象行
|
184
|
+
# @return [Symbol] 構文解析上の次の状態
|
140
185
|
def state_in_part0_contents(event, line)
|
141
186
|
case event
|
142
187
|
when :CONTENTS_BEGIN
|
143
188
|
@lines << line
|
144
189
|
next_state = :IN_PART0_CONTENTS
|
145
190
|
when :CONTENTS_END
|
146
|
-
next_state =
|
191
|
+
next_state = state_in_part0_contents_contents_end(line)
|
147
192
|
when :ID_BODY_MAIN
|
148
193
|
@lines << line
|
149
194
|
@div_body_main = line
|
@@ -169,6 +214,11 @@ module Md2site
|
|
169
214
|
next_state
|
170
215
|
end
|
171
216
|
|
217
|
+
#
|
218
|
+
# part1部のcontents_endイベント処理
|
219
|
+
#
|
220
|
+
# @param line [String] 解析対象行
|
221
|
+
# @return [Symbol] 構文解析上の次の状態
|
172
222
|
def state_in_part1_contents_end(line)
|
173
223
|
@part1.lines << @lines
|
174
224
|
if !@div_body_main.nil? && !@div_cse.nil?
|
@@ -181,6 +231,12 @@ module Md2site
|
|
181
231
|
:IN_PART2
|
182
232
|
end
|
183
233
|
|
234
|
+
#
|
235
|
+
# part1部のイベント処理
|
236
|
+
#
|
237
|
+
# @param event [Symbol] トークン種別
|
238
|
+
# @param line [String] 解析対象行
|
239
|
+
# @return [Symbol] 構文解析上の次の状態
|
184
240
|
def state_in_part1(event, line)
|
185
241
|
case event
|
186
242
|
when :CONTENTS_BEGIN
|
@@ -214,6 +270,12 @@ module Md2site
|
|
214
270
|
next_state
|
215
271
|
end
|
216
272
|
|
273
|
+
#
|
274
|
+
# part2部のイベント処理
|
275
|
+
#
|
276
|
+
# @param event [Symbol] トークン種別
|
277
|
+
# @param line [String] 解析対象行
|
278
|
+
# @return [Symbol] 構文解析上の次の状態
|
217
279
|
def state_in_part2(event, line)
|
218
280
|
@lines << line
|
219
281
|
|
data/lib/md2site/info.rb
CHANGED
@@ -1,10 +1,22 @@
|
|
1
1
|
module Md2site
|
2
|
+
#
|
3
|
+
# infoサブコマンドクラス
|
2
4
|
class Info
|
5
|
+
#
|
6
|
+
# 初期化
|
7
|
+
#
|
8
|
+
# @param env [Env] Envクラスのインスタンス
|
9
|
+
# @param mes [Messagex] Messagexクラスのインスタンス
|
3
10
|
def initialize(env, mes)
|
4
11
|
@env = env
|
5
12
|
@mes = mes
|
6
13
|
end
|
7
14
|
|
15
|
+
#
|
16
|
+
# サブコマンド実行
|
17
|
+
#
|
18
|
+
# @param option [Struct] オプションストラクト
|
19
|
+
# @return [void]
|
8
20
|
def execute_subcommand(option)
|
9
21
|
case option.name
|
10
22
|
when "zlist"
|
data/lib/md2site/init.rb
CHANGED
@@ -1,9 +1,33 @@
|
|
1
1
|
module Md2site
|
2
|
+
#
|
3
|
+
# initサブコマンドクラス
|
2
4
|
class Init
|
3
|
-
|
5
|
+
#
|
6
|
+
# ハッシュ
|
7
|
+
#
|
8
|
+
# return [Hash]
|
9
|
+
attr_reader :hs
|
10
|
+
|
11
|
+
#
|
12
|
+
# 構成ファイルのパス
|
13
|
+
#
|
14
|
+
# return [String]
|
15
|
+
attr_reader :conf_file
|
16
|
+
|
17
|
+
#
|
18
|
+
# テンプレートディレクトリ
|
19
|
+
#
|
20
|
+
# return [String]
|
21
|
+
attr_reader :template_dir
|
4
22
|
|
5
23
|
require "md2site/testdata"
|
6
24
|
|
25
|
+
#
|
26
|
+
# 初期化
|
27
|
+
#
|
28
|
+
# @param src_root_dir [String] コピー元ルートディレクトリ
|
29
|
+
# @param mes [Messagex] Messagexクラスのインスタンス
|
30
|
+
# @param verbose [Boolean] FileUtilsクラスのメソッドのverbose引数に与える値
|
7
31
|
def initialize(src_root_dir, mes, verbose)
|
8
32
|
@mes = mes
|
9
33
|
@verbose = verbose
|
@@ -29,6 +53,12 @@ module Md2site
|
|
29
53
|
}
|
30
54
|
end
|
31
55
|
|
56
|
+
#
|
57
|
+
# サブコマンド実行
|
58
|
+
#
|
59
|
+
# @param option [Struct] オプションストラクト
|
60
|
+
# @param option_url [Struct] URLオプションストラクト
|
61
|
+
# @return [void]
|
32
62
|
def execute_subcommand(option, option_url)
|
33
63
|
root_dir = option.value
|
34
64
|
unless File.exist?(root_dir)
|
@@ -42,12 +72,13 @@ module Md2site
|
|
42
72
|
url = DEFAULT_URL_SETTING
|
43
73
|
end
|
44
74
|
|
45
|
-
@hs[KEY_ABSOLUTE_PATH_ROOT] = absolute_path_root
|
46
75
|
@hs[KEY_URL] = url
|
47
76
|
|
48
77
|
td = Testdata.new(@src_root_dir, @template_dir, hs)
|
49
78
|
|
50
79
|
copy_all_files(@src_root_dir, @conf_dir, absolute_path_root, @conf_dir)
|
80
|
+
testdata_dir_array = td.testdata_dir_array
|
81
|
+
testdata_dir_array.map {|dir| copy_all_files(@src_root_dir, dir, absolute_path_root, @conf_dir) }
|
51
82
|
template_dir_array = td.template_dir_array
|
52
83
|
copy_templatefile(@src_root_dir, template_dir_array, absolute_path_root, @template_dir)
|
53
84
|
files = expand_and_write_files(@src_root_dir, @conf_dir, absolute_path_root, [@conf_file], @hs)
|
@@ -58,22 +89,47 @@ module Md2site
|
|
58
89
|
|
59
90
|
private
|
60
91
|
|
92
|
+
#
|
93
|
+
# 読込元のファイル群を書込先ディレクトリに変数展開して書き込む
|
94
|
+
#
|
95
|
+
# @param src_root_dir [String] 読込元ルートディレクトリ
|
96
|
+
# @param src_dir [String] 読込元ディレクトリ
|
97
|
+
# @param dest_root_dir [String] 書込先ルートディレクトリ
|
98
|
+
# @param files [Array<String>] 変数展開対象ファイル群
|
99
|
+
# @param hash [Hash] 置換用ハッシュ
|
100
|
+
# @return [Array<String>] 書き込んだだファイルへのパスの配列
|
61
101
|
def expand_and_write_files(src_root_dir, src_dir, dest_root_dir, files, hash)
|
62
|
-
files.map do |
|
63
|
-
src_path = File.join(src_root_dir, src_dir,
|
102
|
+
files.map do |fname|
|
103
|
+
src_path = File.join(src_root_dir, src_dir, fname)
|
64
104
|
content = Filex::Filex.check_and_expand_file(src_path, hash, @mes)
|
65
105
|
dest_dir = File.join(dest_root_dir, src_dir)
|
66
106
|
@mes.exc_make_directory(dest_dir) { FileUtils.mkdir_p(dest_dir, { verbose: @verbose }) }
|
67
|
-
dest_path = File.join(dest_dir,
|
107
|
+
dest_path = File.join(dest_dir, fname)
|
68
108
|
@mes.exc_file_write(dest_path) { File.open(dest_path, "w") {|f| f.puts(content) } }
|
69
109
|
dest_path
|
70
110
|
end
|
71
111
|
end
|
72
112
|
|
113
|
+
#
|
114
|
+
# コピー元ディレクトリ下のファイル群をコピー先ディレクトリにコピーする
|
115
|
+
#
|
116
|
+
# @param src_root_dir [String] コピー元ルートディレクトリ
|
117
|
+
# @param src_dir_array [Array<String>] コピー元ディレクトリ群
|
118
|
+
# @param dest_root_dir [String] コピー先ルートディレクトリ
|
119
|
+
# @param dest_dir [String] コピー先ディレクトリ
|
120
|
+
# @return [void]
|
73
121
|
def copy_templatefile(src_root_dir, src_dir_array, dest_root_dir, dest_dir)
|
74
122
|
src_dir_array.map {|x| copy_all_files(src_root_dir, x, dest_root_dir, dest_dir) }.flatten
|
75
123
|
end
|
76
124
|
|
125
|
+
#
|
126
|
+
# コピー元のファイル群をコピー先ディレクトリにコピーする
|
127
|
+
#
|
128
|
+
# @param src_root_dir [String] コピー元ルートディレクトリ
|
129
|
+
# @param src_dir [String] コピー元ディレクトリ
|
130
|
+
# @param dest_root_dir [String] コピー先ルートディレクトリ
|
131
|
+
# @param dest_dir [String] コピー先ディレクトリ
|
132
|
+
# @return [void]
|
77
133
|
def copy_all_files(src_root_dir, src_dir, dest_root_dir, dest_dir)
|
78
134
|
dir = File.join(src_root_dir, src_dir)
|
79
135
|
files = Dir[%Q(#{dir}/*)].map do |x|
|
data/lib/md2site/listfile.rb
CHANGED
@@ -1,7 +1,14 @@
|
|
1
1
|
module Md2site
|
2
2
|
require "csv"
|
3
3
|
|
4
|
+
#
|
5
|
+
# ダウンロード一覧ファイルクラス
|
4
6
|
class ListFile
|
7
|
+
#
|
8
|
+
# 初期化
|
9
|
+
#
|
10
|
+
# @param dir [String] 書込先ディレクトリ
|
11
|
+
# @param mes [Messagex] Messagexクラスのインスタンス
|
5
12
|
def initialize(dir, mes)
|
6
13
|
@fname = File.join(dir, LIST_FILE)
|
7
14
|
@mes = mes
|
@@ -11,10 +18,19 @@ module Md2site
|
|
11
18
|
@csv.add_row([FIELD_FILENMAE, FIELD_DATETIMESTR, FIELD_UNIXTIME, FIELD_MD5])
|
12
19
|
end
|
13
20
|
|
21
|
+
#
|
22
|
+
# 行追加
|
23
|
+
#
|
24
|
+
# @param row [Array<String>] 1行分のフィールドの配列
|
25
|
+
# @return [void]
|
14
26
|
def add(row)
|
15
27
|
@csv.add_row(row)
|
16
28
|
end
|
17
29
|
|
30
|
+
#
|
31
|
+
# ダウンロード一覧ファイルクローズ
|
32
|
+
#
|
33
|
+
# @return [void]
|
18
34
|
def close
|
19
35
|
@mes.exc_file_close(@fname) { @csv.close }
|
20
36
|
end
|