0
0
Fork 0

Implement -p or --profile command line argument (#2947)

* Implement -p or --profile command line argument

* Put command line logic all in Program and reference it elsewhere

* Address feedback
This commit is contained in:
JavidPack 2022-03-02 01:51:37 -07:00 committed by GitHub
parent 3705c20668
commit a3dd04deef
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 3 deletions

View file

@ -3,6 +3,7 @@ using LibHac.Common;
using LibHac.Fs; using LibHac.Fs;
using LibHac.Fs.Shim; using LibHac.Fs.Shim;
using Ryujinx.Common; using Ryujinx.Common;
using Ryujinx.Common.Logging;
using System; using System;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Collections.Generic; using System.Collections.Generic;
@ -25,7 +26,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
public UserProfile LastOpenedUser { get; private set; } public UserProfile LastOpenedUser { get; private set; }
public AccountManager(HorizonClient horizonClient) public AccountManager(HorizonClient horizonClient, string initialProfileName = null)
{ {
_horizonClient = horizonClient; _horizonClient = horizonClient;
@ -43,7 +44,14 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
} }
else 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);
} }
} }

View file

@ -27,6 +27,8 @@ namespace Ryujinx
public static string ConfigurationPath { get; set; } public static string ConfigurationPath { get; set; }
public static string CommandLineProfile { get; set; }
[DllImport("libX11")] [DllImport("libX11")]
private extern static int XInitThreads(); private extern static int XInitThreads();
@ -52,6 +54,17 @@ namespace Ryujinx
baseDirPathArg = args[++i]; 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") else if (arg == "-f" || arg == "--fullscreen")
{ {
startFullscreenArg = true; startFullscreenArg = true;

View file

@ -178,7 +178,7 @@ namespace Ryujinx.Ui
VirtualFileSystem.FixExtraData(_libHacHorizonManager.RyujinxClient); VirtualFileSystem.FixExtraData(_libHacHorizonManager.RyujinxClient);
_contentManager = new ContentManager(_virtualFileSystem); _contentManager = new ContentManager(_virtualFileSystem);
_accountManager = new AccountManager(_libHacHorizonManager.RyujinxClient); _accountManager = new AccountManager(_libHacHorizonManager.RyujinxClient, Program.CommandLineProfile);
_userChannelPersistence = new UserChannelPersistence(); _userChannelPersistence = new UserChannelPersistence();
// Instantiate GUI objects. // Instantiate GUI objects.