lib/md2site/init.rb in md2site-0.1.2 vs lib/md2site/init.rb in md2site-0.1.4
- old
+ new
@@ -1,11 +1,35 @@
module Md2site
+ #
+ # initサブコマンドクラス
class Init
- attr_reader :hs, :confFile, :templateDir
+ #
+ # ハッシュ
+ #
+ # return [Hash]
+ attr_reader :hs
+ #
+ # 構成ファイルのパス
+ #
+ # return [String]
+ attr_reader :conf_file
+
+ #
+ # テンプレートディレクトリ
+ #
+ # return [String]
+ attr_reader :template_dir
+
require "md2site/testdata"
+ #
+ # 初期化
+ #
+ # @param src_root_dir [String] コピー元ルートディレクトリ
+ # @param mes [Messagex] Messagexクラスのインスタンス
+ # @param verbose [Boolean] FileUtilsクラスのメソッドのverbose引数に与える値
def initialize(src_root_dir, mes, verbose)
@mes = mes
@verbose = verbose
@src_root_dir = src_root_dir
@@ -27,10 +51,16 @@
"categoryConfPrefix" => CATEGORY_CONF_PREFIX,
"defaultTableTampleteFile" => DEFAULT_TABLE_TEMPLATE_FILE,
}
end
+ #
+ # サブコマンド実行
+ #
+ # @param option [Struct] オプションストラクト
+ # @param option_url [Struct] URLオプションストラクト
+ # @return [void]
def execute_subcommand(option, option_url)
root_dir = option.value
unless File.exist?(root_dir)
@mes.exc_make_directory(root_dir) { FileUtils.mkdir_p(root_dir, { verbose: @verbose }) }
end
@@ -40,41 +70,67 @@
url = %Q(URL=#{option_url.value})
else
url = DEFAULT_URL_SETTING
end
- @hs[KEY_ABSOLUTE_PATH_ROOT] = absolute_path_root
@hs[KEY_URL] = url
td = Testdata.new(@src_root_dir, @template_dir, hs)
copy_all_files(@src_root_dir, @conf_dir, absolute_path_root, @conf_dir)
+ testdata_dir_array = td.testdata_dir_array
+ testdata_dir_array.map {|dir| copy_all_files(@src_root_dir, dir, absolute_path_root, @conf_dir) }
template_dir_array = td.template_dir_array
copy_templatefile(@src_root_dir, template_dir_array, absolute_path_root, @template_dir)
files = expand_and_write_files(@src_root_dir, @conf_dir, absolute_path_root, [@conf_file], @hs)
root_output_path = File.join(absolute_path_root, @root_output_dir)
@mes.exc_make_directory(root_output_path) { FileUtils.mkdir_p(root_output_path, { verbose: @verbose }) }
@env = Env.new(files[0], @mes, @verbose)
end
private
+ #
+ # 読込元のファイル群を書込先ディレクトリに変数展開して書き込む
+ #
+ # @param src_root_dir [String] 読込元ルートディレクトリ
+ # @param src_dir [String] 読込元ディレクトリ
+ # @param dest_root_dir [String] 書込先ルートディレクトリ
+ # @param files [Array<String>] 変数展開対象ファイル群
+ # @param hash [Hash] 置換用ハッシュ
+ # @return [Array<String>] 書き込んだだファイルへのパスの配列
def expand_and_write_files(src_root_dir, src_dir, dest_root_dir, files, hash)
- files.map do |x|
- src_path = File.join(src_root_dir, src_dir, x)
+ files.map do |fname|
+ src_path = File.join(src_root_dir, src_dir, fname)
content = Filex::Filex.check_and_expand_file(src_path, hash, @mes)
dest_dir = File.join(dest_root_dir, src_dir)
@mes.exc_make_directory(dest_dir) { FileUtils.mkdir_p(dest_dir, { verbose: @verbose }) }
- dest_path = File.join(dest_dir, x)
+ dest_path = File.join(dest_dir, fname)
@mes.exc_file_write(dest_path) { File.open(dest_path, "w") {|f| f.puts(content) } }
dest_path
end
end
+ #
+ # コピー元ディレクトリ下のファイル群をコピー先ディレクトリにコピーする
+ #
+ # @param src_root_dir [String] コピー元ルートディレクトリ
+ # @param src_dir_array [Array<String>] コピー元ディレクトリ群
+ # @param dest_root_dir [String] コピー先ルートディレクトリ
+ # @param dest_dir [String] コピー先ディレクトリ
+ # @return [void]
def copy_templatefile(src_root_dir, src_dir_array, dest_root_dir, dest_dir)
src_dir_array.map {|x| copy_all_files(src_root_dir, x, dest_root_dir, dest_dir) }.flatten
end
+ #
+ # コピー元のファイル群をコピー先ディレクトリにコピーする
+ #
+ # @param src_root_dir [String] コピー元ルートディレクトリ
+ # @param src_dir [String] コピー元ディレクトリ
+ # @param dest_root_dir [String] コピー先ルートディレクトリ
+ # @param dest_dir [String] コピー先ディレクトリ
+ # @return [void]
def copy_all_files(src_root_dir, src_dir, dest_root_dir, dest_dir)
dir = File.join(src_root_dir, src_dir)
files = Dir[%Q(#{dir}/*)].map do |x|
fname = File.basename(x)
dest_path = File.join(dest_root_dir, dest_dir, fname)