Skip to content

Commit 43c913f

Browse files
committed
Provide a username CLI flag for fast login
1 parent 6920cc6 commit 43c913f

File tree

1 file changed

+18
-10
lines changed
  • Sources/Plasma/Apps/plClient/linux

1 file changed

+18
-10
lines changed

Sources/Plasma/Apps/plClient/linux/main.cpp

+18-10
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ enum
9898
kArgStartUpAgeName,
9999
kArgPvdFile,
100100
kArgSkipIntroMovies,
101-
kArgRenderer
101+
kArgRenderer,
102+
kArgUsername
102103
};
103104

104105
static const plCmdArgDef s_cmdLineArgs[] = {
@@ -111,6 +112,7 @@ static const plCmdArgDef s_cmdLineArgs[] = {
111112
{ kCmdArgFlagged | kCmdTypeString, "PvdFile", kArgPvdFile },
112113
{ kCmdArgFlagged | kCmdTypeBool, "SkipIntroMovies", kArgSkipIntroMovies },
113114
{ kCmdArgFlagged | kCmdTypeString, "Renderer", kArgRenderer },
115+
{ kCmdArgFlagged | kCmdTypeString, "Username", kArgUsername },
114116
};
115117

116118
//
@@ -241,7 +243,7 @@ static size_t CurlCallback(void *buffer, size_t size, size_t nmemb, void *param)
241243
return size * nmemb;
242244
}
243245

244-
static bool ConsoleLoginScreen()
246+
static bool ConsoleLoginScreen(const ST::string& cliUsername)
245247
{
246248
std::thread statusThread = std::thread([]() {
247249
ST::string statusUrl = GetServerStatusUrl();
@@ -272,19 +274,22 @@ static bool ConsoleLoginScreen()
272274
statusFlag.Wait();
273275
statusThread.join();
274276

275-
fprintf(stdout, "[Use Ctrl+D to cancel]\nUsername or Email: ");
276-
fflush(stdout);
277-
278-
char username[kMaxAccountNameLength];
277+
ST::string username = cliUsername;
278+
if (cliUsername.empty()) {
279+
fprintf(stdout, "[Use Ctrl+D to cancel]\nUsername or Email: ");
280+
fflush(stdout);
279281

280-
if (fscanf(stdin, "%s", username) != 1) {
281-
return false;
282+
char tmpUsername[kMaxAccountNameLength];
283+
if (fscanf(stdin, "%s", tmpUsername) != 1) {
284+
return false;
285+
}
286+
username = tmpUsername;
282287
}
283288

284289
pfPasswordStore* store = pfPasswordStore::Instance();
285290
ST::string password = store->GetPassword(username);
286291

287-
if (!password.empty()) {
292+
if (!password.empty() && cliUsername.empty()) {
288293
fprintf(stdout, "Use saved password? [y/n] ");
289294
fflush(stdout);
290295
char c;
@@ -610,6 +615,7 @@ int main(int argc, const char** argv)
610615
cmdParser.Parse(args);
611616

612617
bool doIntroDialogs = true;
618+
ST::string cliUsername;
613619
#ifndef PLASMA_EXTERNAL_RELEASE
614620
if (cmdParser.IsSpecified(kArgSkipLoginDialog))
615621
doIntroDialogs = false;
@@ -628,6 +634,8 @@ int main(int argc, const char** argv)
628634
plPXSimulation::SetDefaultDebuggerEndpoint(cmdParser.GetString(kArgPvdFile));
629635
if (cmdParser.IsSpecified(kArgRenderer))
630636
gClient.SetRequestedRenderingBackend(ParseRendererArgument(cmdParser.GetString(kArgRenderer)));
637+
if (cmdParser.IsSpecified(kArgUsername))
638+
cliUsername = cmdParser.GetString(kArgUsername);
631639
#endif
632640

633641
plFileName serverIni = "server.ini";
@@ -680,7 +688,7 @@ int main(int argc, const char** argv)
680688
curl_global_init(CURL_GLOBAL_ALL);
681689

682690
// Login stuff
683-
if (!ConsoleLoginScreen()) {
691+
if (!ConsoleLoginScreen(cliUsername)) {
684692
gClient.ShutdownStart();
685693
gClient.ShutdownEnd();
686694
NetCommShutdown();

0 commit comments

Comments
 (0)