aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavidPack <javidpack@gmail.com>2022-03-02 01:51:37 -0700
committerGitHub <noreply@github.com>2022-03-02 09:51:37 +0100
commita3dd04deef7d2555726378293df891f3877f4489 (patch)
tree05a1fa8909951e167f9512b158af5d7dc5c84c3f
parent3705c206688c69d3348f5cec84dc480d8d7c578e (diff)
Implement -p or --profile command line argument (#2947)1.1.55
* Implement -p or --profile command line argument * Put command line logic all in Program and reference it elsewhere * Address feedback
-rw-r--r--Ryujinx.HLE/HOS/Services/Account/Acc/AccountManager.cs12
-rw-r--r--Ryujinx/Program.cs13
-rw-r--r--Ryujinx/Ui/MainWindow.cs2
3 files changed, 24 insertions, 3 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Account/Acc/AccountManager.cs b/Ryujinx.HLE/HOS/Services/Account/Acc/AccountManager.cs
index e28fe106..9d9cb6ff 100644
--- a/Ryujinx.HLE/HOS/Services/Account/Acc/AccountManager.cs
+++ b/Ryujinx.HLE/HOS/Services/Account/Acc/AccountManager.cs
@@ -3,6 +3,7 @@ using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Shim;
using Ryujinx.Common;
+using Ryujinx.Common.Logging;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
@@ -25,7 +26,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
public UserProfile LastOpenedUser { get; private set; }
- public AccountManager(HorizonClient horizonClient)
+ public AccountManager(HorizonClient horizonClient, string initialProfileName = null)
{
_horizonClient = horizonClient;
@@ -43,7 +44,14 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
}
else
{
- OpenUser(_accountSaveDataManager.LastOpened);
+ UserId commandLineUserProfileOverride = default;
+ if (!string.IsNullOrEmpty(initialProfileName))
+ {
+ commandLineUserProfileOverride = _profiles.Values.FirstOrDefault(x => x.Name == initialProfileName)?.UserId ?? default;
+ if (commandLineUserProfileOverride.IsNull)
+ Logger.Warning?.Print(LogClass.Application, $"The command line specified profile named '{initialProfileName}' was not found");
+ }
+ OpenUser(commandLineUserProfileOverride.IsNull ? _accountSaveDataManager.LastOpened : commandLineUserProfileOverride);
}
}
diff --git a/Ryujinx/Program.cs b/Ryujinx/Program.cs
index 8cd5a996..26b89d06 100644
--- a/Ryujinx/Program.cs
+++ b/Ryujinx/Program.cs
@@ -27,6 +27,8 @@ namespace Ryujinx
public static string ConfigurationPath { get; set; }
+ public static string CommandLineProfile { get; set; }
+
[DllImport("libX11")]
private extern static int XInitThreads();
@@ -52,6 +54,17 @@ namespace Ryujinx
baseDirPathArg = args[++i];
}
+ else if (arg == "-p" || arg == "--profile")
+ {
+ if (i + 1 >= args.Length)
+ {
+ Logger.Error?.Print(LogClass.Application, $"Invalid option '{arg}'");
+
+ continue;
+ }
+
+ CommandLineProfile = args[++i];
+ }
else if (arg == "-f" || arg == "--fullscreen")
{
startFullscreenArg = true;
diff --git a/Ryujinx/Ui/MainWindow.cs b/Ryujinx/Ui/MainWindow.cs
index 92689307..0c94fc67 100644
--- a/Ryujinx/Ui/MainWindow.cs
+++ b/Ryujinx/Ui/MainWindow.cs
@@ -178,7 +178,7 @@ namespace Ryujinx.Ui
VirtualFileSystem.FixExtraData(_libHacHorizonManager.RyujinxClient);
_contentManager = new ContentManager(_virtualFileSystem);
- _accountManager = new AccountManager(_libHacHorizonManager.RyujinxClient);
+ _accountManager = new AccountManager(_libHacHorizonManager.RyujinxClient, Program.CommandLineProfile);
_userChannelPersistence = new UserChannelPersistence();
// Instantiate GUI objects.