예제 #1
0
 public CommandLineHelper(Options opt)
 {
     options = opt;
 }
예제 #2
0
        static void Main(string[] args)
        {
            var options = new Options();

            //read 必須項目が無かったり、問題があったらヘルプ出して終わり
            if (!CommandLine.Parser.Default.ParseArguments(args, options)) {
                return;
            }

            var helper = new CommandLineHelper(options);

            // 引数に問題があればヘルプ出して終わり
            if (helper.IsRequireHelp()) {
                return;
            }

            // Inputするディレクトリがなければエラー出して終わり
            if (!helper.IsSafeInputDir()) {
                Console.WriteLine("指定のDirectoryが存在しないためキャンセルされました。");
                return;
            }

            var files = Directory.GetFiles(options.InputDirectory);

            // 全言語共通のID一覧
            // Enを一番に読みたいので、他言語化ファイルの命名規則上.が一番少ないものを先頭にしている
            var resxFileList = files.ToList().Where((x) => {
                var ext = Path.GetExtension(x);
                return ext.Equals(@".resx");
            }).OrderBy( x => x.Where(y => y == '.').Count() ).ToList();

            // resxファイルが存在しなかった場合は存在しないと伝えて終わり
            bool resxFileFound = resxFileList.ToArray().Length > 0;
            if (!resxFileFound) {
                Console.WriteLine("指定のDirectoryにresxファイルが存在ないため終了します。");
                return;
            }

            // resxファイルを読み込んでいって出力処理へ
            var loader = new ResxLoader();

            var langs = loader.LoadResxFileLanguageAll(resxFileList);
            var allLanguageDictionary = loader.LoadResxFileAll(resxFileList);

            switch (options.OutputType) {
            case("csv") :
                OutputCsv(langs, allLanguageDictionary);
                break;
            case("excel") :
                OutputExcel(langs, allLanguageDictionary);
                break;
            }

            return;
        }