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)