From 49574a99f51f52bdde482a11a718adcb3b1be227 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Mestre?= Date: Tue, 22 Oct 2024 20:48:59 -0300 Subject: [PATCH] Added a command line option (-c, --config) to load a configuration file through the command line parameters (#59) --- src/Ryujinx.Gtk3/Program.cs | 5 ++++ .../Helper/CommandLineState.cs | 25 +++++++++++++++++++ src/Ryujinx/Program.cs | 5 ++++ 3 files changed, 35 insertions(+) diff --git a/src/Ryujinx.Gtk3/Program.cs b/src/Ryujinx.Gtk3/Program.cs index 2d350374..f4c1a9d7 100644 --- a/src/Ryujinx.Gtk3/Program.cs +++ b/src/Ryujinx.Gtk3/Program.cs @@ -165,6 +165,11 @@ namespace Ryujinx ? appDataConfigurationPath : null; + if (!string.IsNullOrEmpty(CommandLineState.OverrideConfigFile) && File.Exists(CommandLineState.OverrideConfigFile)) + { + ConfigurationPath = CommandLineState.OverrideConfigFile; + } + if (ConfigurationPath == null) { // No configuration, we load the default values and save it to disk diff --git a/src/Ryujinx.UI.Common/Helper/CommandLineState.cs b/src/Ryujinx.UI.Common/Helper/CommandLineState.cs index ae0e4d90..7f8854c3 100644 --- a/src/Ryujinx.UI.Common/Helper/CommandLineState.cs +++ b/src/Ryujinx.UI.Common/Helper/CommandLineState.cs @@ -1,5 +1,6 @@ using Ryujinx.Common.Logging; using System.Collections.Generic; +using System.IO; namespace Ryujinx.UI.Common.Helper { @@ -16,6 +17,7 @@ namespace Ryujinx.UI.Common.Helper public static string LaunchPathArg { get; private set; } public static string LaunchApplicationId { get; private set; } public static bool StartFullscreenArg { get; private set; } + public static string OverrideConfigFile { get; private set; } public static void ParseArguments(string[] args) { @@ -96,6 +98,29 @@ namespace Ryujinx.UI.Common.Helper case "--software-gui": OverrideHardwareAcceleration = false; break; + case "-c": + case "--config": + if (i + 1 >= args.Length) + { + Logger.Error?.Print(LogClass.Application, $"Invalid option '{arg}'"); + + continue; + } + + string configFile = args[++i]; + + if (Path.GetExtension(configFile).ToLower() != ".json") + { + Logger.Error?.Print(LogClass.Application, $"Invalid option '{arg}'"); + + continue; + } + + OverrideConfigFile = configFile; + + arguments.Add(arg); + arguments.Add(args[i]); + break; default: LaunchPathArg = arg; break; diff --git a/src/Ryujinx/Program.cs b/src/Ryujinx/Program.cs index 6c83cedc..c1e5a4d4 100644 --- a/src/Ryujinx/Program.cs +++ b/src/Ryujinx/Program.cs @@ -150,6 +150,11 @@ namespace Ryujinx.Ava ConfigurationPath = appDataConfigurationPath; } + if (!string.IsNullOrEmpty(CommandLineState.OverrideConfigFile) && File.Exists(CommandLineState.OverrideConfigFile)) + { + ConfigurationPath = CommandLineState.OverrideConfigFile; + } + if (ConfigurationPath == null) { // No configuration, we load the default values and save it to disk