From 4ae151e7082f4ab2463df050d1d705a8192c4a89 Mon Sep 17 00:00:00 2001 From: Zach Day Date: Wed, 9 Oct 2024 23:19:39 -0400 Subject: [PATCH 1/4] Add CLI option to standardize ogkr fumen output --- .../DefaultImp/DefaultArgProcessManager.cs | 5 +---- .../FumenConverter/FumenConvertOption.cs | 7 +++++-- .../Kernel/FumenConverterWrapper.cs | 14 +++++++++++++ .../Properties/Resources.Designer.cs | 20 ++++++++++++++++++- OngekiFumenEditor/Properties/Resources.resx | 6 ++++++ 5 files changed, 45 insertions(+), 7 deletions(-) diff --git a/OngekiFumenEditor/Kernel/ArgProcesser/DefaultImp/DefaultArgProcessManager.cs b/OngekiFumenEditor/Kernel/ArgProcesser/DefaultImp/DefaultArgProcessManager.cs index 84d30ecf..2ad1699a 100644 --- a/OngekiFumenEditor/Kernel/ArgProcesser/DefaultImp/DefaultArgProcessManager.cs +++ b/OngekiFumenEditor/Kernel/ArgProcesser/DefaultImp/DefaultArgProcessManager.cs @@ -152,12 +152,9 @@ private async Task ProcessConvertCommand(FumenConvertOption opt) if (CheckRelativePaths(opt.InputFumenFilePath, opt.OutputFumenFilePath)) return; - var converter = IoC.Get(); - var parserManager = IoC.Get(); - var result = await FumenConverterWrapper.Generate(opt); if (!result.IsSuccess) { - await Console.Error.WriteLineAsync($"{Resources.ConvertFail}: {result.Message}"); + await Console.Error.WriteLineAsync($"{Resources.ConvertFail} {result.Message}"); Exit(1); return; } diff --git a/OngekiFumenEditor/Modules/FumenConverter/FumenConvertOption.cs b/OngekiFumenEditor/Modules/FumenConverter/FumenConvertOption.cs index 6de36a93..6872cffa 100644 --- a/OngekiFumenEditor/Modules/FumenConverter/FumenConvertOption.cs +++ b/OngekiFumenEditor/Modules/FumenConverter/FumenConvertOption.cs @@ -6,8 +6,11 @@ namespace OngekiFumenEditor.Modules.FumenConverter; public class FumenConvertOption { [LocalizableOptionBinding("inputFile", nameof(Resources.ProgramOptionInputFile), default, Require = true)] - public string InputFumenFilePath { get; set; } - + public string InputFumenFilePath { get; set; } + [LocalizableOptionBinding("outputFile", nameof(Resources.ProgramOptionOutputFile), default, Require = true)] public string OutputFumenFilePath { get; set; } + + [LocalizableOptionBinding("standardize", nameof(Resources.ProgramOptionStandardizeFumen), default)] + public bool IsStandarizeFumen { get; set; } = false; } \ No newline at end of file diff --git a/OngekiFumenEditor/Modules/FumenConverter/Kernel/FumenConverterWrapper.cs b/OngekiFumenEditor/Modules/FumenConverter/Kernel/FumenConverterWrapper.cs index 805c2062..ad1417c8 100644 --- a/OngekiFumenEditor/Modules/FumenConverter/Kernel/FumenConverterWrapper.cs +++ b/OngekiFumenEditor/Modules/FumenConverter/Kernel/FumenConverterWrapper.cs @@ -7,6 +7,7 @@ using OngekiFumenEditor.Parser; using OngekiFumenEditor.Parser.DefaultImpl; using OngekiFumenEditor.Properties; +using OngekiFumenEditor.Utils.Ogkr; namespace OngekiFumenEditor.Modules.FumenConverter.Kernel; @@ -35,6 +36,19 @@ public static async Task Generate(FumenConvertOption option, Ong if (string.IsNullOrWhiteSpace(option.OutputFumenFilePath)) return new(false, Resources.OutputFumenFileNotSelect); + if (option.IsStandarizeFumen) { + if (!option.OutputFumenFilePath.EndsWith(".ogkr")) { + return new(false, Resources.OutputFumenStandardizeFormatNotSupported); + } + + var res = await StandardizeFormat.Process(fumen); + if (!res.IsSuccess) { + return new(false, res.Message); + } + + fumen = res.SerializedFumen; + } + var converter = IoC.Get(); try { var output = await converter.ConvertFumenAsync(fumen, option.OutputFumenFilePath); diff --git a/OngekiFumenEditor/Properties/Resources.Designer.cs b/OngekiFumenEditor/Properties/Resources.Designer.cs index b30244a6..bf56f572 100644 --- a/OngekiFumenEditor/Properties/Resources.Designer.cs +++ b/OngekiFumenEditor/Properties/Resources.Designer.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // 此代码由工具生成。 // 运行时版本:4.0.30319.42000 @@ -3138,6 +3138,15 @@ public static string OutputFumenNotSupport { } } + /// + /// 查找类似 Cannot standardize for the designated output format 的本地化字符串。 + /// + public static string OutputFumenStandardizeFormatNotSupported { + get { + return ResourceManager.GetString("OutputFumenStandardizeFormatNotSupported", resourceCulture); + } + } + /// /// 查找类似 Output OpenGL logs (may affect performance, and errors will be thrown as exceptions) 的本地化字符串。 /// @@ -3453,6 +3462,15 @@ public static string ProgramOptionPreviewEnd { } } + /// + /// 查找类似 standardize the fumen output (only for .ogkr) 的本地化字符串。 + /// + public static string ProgramOptionStandardizeFumen { + get { + return ResourceManager.GetString("ProgramOptionStandardizeFumen", resourceCulture); + } + } + /// /// 查找类似 maximum X grid bounds 的本地化字符串。 /// diff --git a/OngekiFumenEditor/Properties/Resources.resx b/OngekiFumenEditor/Properties/Resources.resx index 06078585..05d6b314 100644 --- a/OngekiFumenEditor/Properties/Resources.resx +++ b/OngekiFumenEditor/Properties/Resources.resx @@ -1665,4 +1665,10 @@ Save + + standardize the fumen output (only for .ogkr) + + + Cannot standardize for the designated output format + \ No newline at end of file From da03f29f39773675e1d92c7bd64b4df33120c518 Mon Sep 17 00:00:00 2001 From: Zach Day Date: Thu, 10 Oct 2024 01:38:46 -0400 Subject: [PATCH 2/4] Finish localizing CLI --- .../ArgProcesser/DefaultImp/DefaultArgProcessManager.cs | 4 ++-- OngekiFumenEditor/Properties/Resources.Designer.cs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/OngekiFumenEditor/Kernel/ArgProcesser/DefaultImp/DefaultArgProcessManager.cs b/OngekiFumenEditor/Kernel/ArgProcesser/DefaultImp/DefaultArgProcessManager.cs index 2ad1699a..03566018 100644 --- a/OngekiFumenEditor/Kernel/ArgProcesser/DefaultImp/DefaultArgProcessManager.cs +++ b/OngekiFumenEditor/Kernel/ArgProcesser/DefaultImp/DefaultArgProcessManager.cs @@ -176,7 +176,7 @@ private async Task ProcessJacketCommand(JacketGenerateOption arg) } if (!result.IsSuccess) { - await Console.Error.WriteLineAsync($"Failed to generate jacket: {result.Message}"); + await Console.Error.WriteLineAsync($"{Resources.GenerateJacketFileFail} {result.Message}"); Exit(1); return; } @@ -198,7 +198,7 @@ private async Task ProcessAcbCommand(AcbGenerateOption arg) } if (!result.IsSuccess) { - await Console.Error.WriteLineAsync($"Failed to generate audio: {result.Message}"); + await Console.Error.WriteLineAsync($"{Resources.GenerateAudioFileFail} {result.Message}"); Exit(1); return; } diff --git a/OngekiFumenEditor/Properties/Resources.Designer.cs b/OngekiFumenEditor/Properties/Resources.Designer.cs index bf56f572..1c542a4a 100644 --- a/OngekiFumenEditor/Properties/Resources.Designer.cs +++ b/OngekiFumenEditor/Properties/Resources.Designer.cs @@ -2122,7 +2122,7 @@ public static string GenerateAssemblyFileFail { } /// - /// 查找类似 Generate audio file failed: 的本地化字符串。 + /// 查找类似 Failed to generate audio file: 的本地化字符串。 /// public static string GenerateAudioFileFail { get { @@ -2140,7 +2140,7 @@ public static string GenerateAudioSuccess { } /// - /// 查找类似 Generate jacket files fail: 的本地化字符串。 + /// 查找类似 Failed to generate jacket files: 的本地化字符串。 /// public static string GenerateJacketFileFail { get { @@ -3139,7 +3139,7 @@ public static string OutputFumenNotSupport { } /// - /// 查找类似 Cannot standardize for the designated output format 的本地化字符串。 + /// 查找类似 Cannot standardize for the selected output format 的本地化字符串。 /// public static string OutputFumenStandardizeFormatNotSupported { get { From e28912a3ffaccbc70b06992bfbba9dd010b8d8f0 Mon Sep 17 00:00:00 2001 From: Zach Day Date: Thu, 10 Oct 2024 01:39:14 -0400 Subject: [PATCH 3/4] CLI EN TL fix --- OngekiFumenEditor/Properties/Resources.resx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OngekiFumenEditor/Properties/Resources.resx b/OngekiFumenEditor/Properties/Resources.resx index 05d6b314..818dcdd9 100644 --- a/OngekiFumenEditor/Properties/Resources.resx +++ b/OngekiFumenEditor/Properties/Resources.resx @@ -793,13 +793,13 @@ Generate .dll file fail: - Generate audio file failed: + Failed to generate audio file: Generate audio file successfully, open output folder? - Generate jacket files fail: + Failed to generate jacket files: Generate jacket files successfully, open output folder? @@ -1669,6 +1669,6 @@ standardize the fumen output (only for .ogkr) - Cannot standardize for the designated output format + Cannot standardize for the selected output format \ No newline at end of file From 7ea04875a2981ae476b0d53bb1935192fe3a4c75 Mon Sep 17 00:00:00 2001 From: Zach Day Date: Thu, 10 Oct 2024 01:41:19 -0400 Subject: [PATCH 4/4] Use Path func for filetype check --- .../Modules/FumenConverter/Kernel/FumenConverterWrapper.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OngekiFumenEditor/Modules/FumenConverter/Kernel/FumenConverterWrapper.cs b/OngekiFumenEditor/Modules/FumenConverter/Kernel/FumenConverterWrapper.cs index ad1417c8..6efa9343 100644 --- a/OngekiFumenEditor/Modules/FumenConverter/Kernel/FumenConverterWrapper.cs +++ b/OngekiFumenEditor/Modules/FumenConverter/Kernel/FumenConverterWrapper.cs @@ -37,7 +37,7 @@ public static async Task Generate(FumenConvertOption option, Ong return new(false, Resources.OutputFumenFileNotSelect); if (option.IsStandarizeFumen) { - if (!option.OutputFumenFilePath.EndsWith(".ogkr")) { + if (Path.GetExtension(option.OutputFumenFilePath) != ".ogkr") { return new(false, Resources.OutputFumenStandardizeFormatNotSupported); }