【特性】新增 --input_convert_data_dir 参数,用于覆盖table的input值,从convert目录读取每个表的源数据

main
walon 2021-11-05 12:10:55 +08:00
parent 21676657a5
commit d292f12070
3 changed files with 24 additions and 5 deletions

View File

@ -14,6 +14,9 @@ namespace Luban.Job.Cfg
[Option("output_data_dir", Required = true, HelpText = "output data directory")] [Option("output_data_dir", Required = true, HelpText = "output data directory")]
public string OutputDataDir { get; set; } public string OutputDataDir { get; set; }
[Option("input_convert_data_dir", Required = false, HelpText = "override input data dir with convert data dir")]
public string InputConvertDataDir { get; set; }
[Option("output_data_resource_list_file", Required = false, HelpText = "output resource list file")] [Option("output_data_resource_list_file", Required = false, HelpText = "output resource list file")]
public string OutputDataResourceListFile { get; set; } public string OutputDataResourceListFile { get; set; }

View File

@ -173,7 +173,7 @@ namespace Luban.Job.Cfg
hasLoadCfgData = true; hasLoadCfgData = true;
var timer = new ProfileTimer(); var timer = new ProfileTimer();
timer.StartPhase("load config data"); timer.StartPhase("load config data");
await DataLoaderUtil.LoadCfgDataAsync(agent, ass, args.InputDataDir, args.PatchName, args.PatchInputDataDir); await DataLoaderUtil.LoadCfgDataAsync(agent, ass, args.InputDataDir, args.PatchName, args.PatchInputDataDir, args.InputConvertDataDir);
timer.EndPhaseAndLog(); timer.EndPhaseAndLog();
if (needL10NTextConvert) if (needL10NTextConvert)

View File

@ -95,10 +95,26 @@ namespace Luban.Job.Cfg.Utils
} }
} }
public static async Task LoadTableAsync(IAgent agent, DefTable table, string dataDir, string patchName, string patchDataDir) public static async Task LoadTableAsync(IAgent agent, DefTable table, string dataDir, string patchName, string patchDataDir, string inputConvertDataDir)
{ {
var mainLoadTasks = new List<Task<List<Record>>>(); var mainLoadTasks = new List<Task<List<Record>>>();
var mainGenerateTask = GenerateLoadRecordFromFileTasksAsync(agent, table, dataDir, table.InputFiles, mainLoadTasks);
// 如果指定了 inputConvertDataDir, 则覆盖dataDir为 inputConvertDataDir
// 同时 修改所有表的input为 table.FullName
string finalDataDir;
List<string> finalInputFiles;
if (string.IsNullOrWhiteSpace(inputConvertDataDir))
{
finalDataDir = dataDir;
finalInputFiles = table.InputFiles;
}
else
{
finalDataDir = inputConvertDataDir;
finalInputFiles = new List<string>() { table.FullName };
}
var mainGenerateTask = GenerateLoadRecordFromFileTasksAsync(agent, table, finalDataDir, finalInputFiles, mainLoadTasks);
var patchLoadTasks = new List<Task<List<Record>>>(); var patchLoadTasks = new List<Task<List<Record>>>();
@ -138,7 +154,7 @@ namespace Luban.Job.Cfg.Utils
s_logger.Trace("table:{name} record num:{num}", table.FullName, mainRecords.Count); s_logger.Trace("table:{name} record num:{num}", table.FullName, mainRecords.Count);
} }
public static async Task LoadCfgDataAsync(IAgent agent, DefAssembly ass, string dataDir, string patchName, string patchDataDir) public static async Task LoadCfgDataAsync(IAgent agent, DefAssembly ass, string dataDir, string patchName, string patchDataDir, string inputConvertDataDir)
{ {
var ctx = agent; var ctx = agent;
List<DefTable> exportTables = ass.Types.Values.Where(t => t is DefTable ct && ct.NeedExport).Select(t => (DefTable)t).ToList(); List<DefTable> exportTables = ass.Types.Values.Where(t => t is DefTable ct && ct.NeedExport).Select(t => (DefTable)t).ToList();
@ -152,7 +168,7 @@ namespace Luban.Job.Cfg.Utils
genDataTasks.Add(Task.Run(async () => genDataTasks.Add(Task.Run(async () =>
{ {
long beginTime = TimeUtil.NowMillis; long beginTime = TimeUtil.NowMillis;
await LoadTableAsync(agent, table, dataDir, patchName, patchDataDir); await LoadTableAsync(agent, table, dataDir, patchName, patchDataDir, inputConvertDataDir);
long endTime = TimeUtil.NowMillis; long endTime = TimeUtil.NowMillis;
if (endTime - beginTime > 100) if (endTime - beginTime > 100)
{ {