using AssetStudio; using AssetStudioCLI.Options; using System; namespace AssetStudioCLI { class Program { public static void Main(string[] args) { CLIOptions.ParseArgs(args); if (CLIOptions.isParsed) { CLIRun(); } else if (CLIOptions.showHelp) { CLIOptions.ShowHelp(); } else { Console.WriteLine(); CLIOptions.ShowHelp(showUsageOnly: true); } } private static void CLIRun() { var cliLogger = new CLILogger(); Logger.Default = cliLogger; CLIOptions.ShowCurrentOptions(); try { if (CLIOptions.o_workMode.Value == WorkMode.Extract) { Studio.ExtractBundles(); } else if (Studio.LoadAssets()) { Studio.ParseAssets(); if (CLIOptions.filterBy != FilterBy.None) { Studio.Filter(); } if (CLIOptions.o_exportAssetList.Value != ExportListType.None) { Studio.ExportAssetList(); } switch (CLIOptions.o_workMode.Value) { case WorkMode.Info: Studio.ShowExportableAssetsInfo(); break; case WorkMode.Live2D: Studio.ExportLive2D(); break; case WorkMode.SplitObjects: Studio.ExportSplitObjects(); break; default: Studio.ExportAssets(); break; } } } catch (Exception ex) { Logger.Error(ex.ToString()); } finally { cliLogger.LogToFile(LoggerEvent.Verbose, "---Program ended---"); } } } }