Skip to content

Commit a4a365b

Browse files
committed
Provide a username CLI flag for fast login
1 parent fa12a3a commit a4a365b

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
@@ -99,7 +99,8 @@ enum
9999
kArgStartUpAgeName,
100100
kArgPvdFile,
101101
kArgSkipIntroMovies,
102-
kArgRenderer
102+
kArgRenderer,
103+
kArgUsername
103104
};
104105

105106
static const plCmdArgDef s_cmdLineArgs[] = {
@@ -112,6 +113,7 @@ static const plCmdArgDef s_cmdLineArgs[] = {
112113
{ kCmdArgFlagged | kCmdTypeString, "PvdFile", kArgPvdFile },
113114
{ kCmdArgFlagged | kCmdTypeBool, "SkipIntroMovies", kArgSkipIntroMovies },
114115
{ kCmdArgFlagged | kCmdTypeString, "Renderer", kArgRenderer },
116+
{ kCmdArgFlagged | kCmdTypeString, "Username", kArgUsername },
115117
};
116118

117119
//
@@ -242,7 +244,7 @@ static size_t CurlCallback(void *buffer, size_t size, size_t nmemb, void *param)
242244
return size * nmemb;
243245
}
244246

245-
static bool ConsoleLoginScreen()
247+
static bool ConsoleLoginScreen(const ST::string& cliUsername)
246248
{
247249
std::thread statusThread = std::thread([]() {
248250
ST::string statusUrl = GetServerStatusUrl();
@@ -273,19 +275,22 @@ static bool ConsoleLoginScreen()
273275
statusFlag.Wait();
274276
statusThread.join();
275277

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

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

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

288-
if (!password.empty()) {
293+
if (!password.empty() && cliUsername.empty()) {
289294
fprintf(stdout, "Use saved password? [y/n] ");
290295
fflush(stdout);
291296
char c;
@@ -650,6 +655,7 @@ int main(int argc, const char** argv)
650655
cmdParser.Parse(args);
651656

652657
bool doIntroDialogs = true;
658+
ST::string cliUsername;
653659
#ifndef PLASMA_EXTERNAL_RELEASE
654660
if (cmdParser.IsSpecified(kArgSkipLoginDialog))
655661
doIntroDialogs = false;
@@ -668,6 +674,8 @@ int main(int argc, const char** argv)
668674
plPXSimulation::SetDefaultDebuggerEndpoint(cmdParser.GetString(kArgPvdFile));
669675
if (cmdParser.IsSpecified(kArgRenderer))
670676
gClient.SetRequestedRenderingBackend(ParseRendererArgument(cmdParser.GetString(kArgRenderer)));
677+
if (cmdParser.IsSpecified(kArgUsername))
678+
cliUsername = cmdParser.GetString(kArgUsername);
671679
#endif
672680

673681
plFileName serverIni = "server.ini";
@@ -720,7 +728,7 @@ int main(int argc, const char** argv)
720728
curl_global_init(CURL_GLOBAL_ALL);
721729

722730
// Login stuff
723-
if (!ConsoleLoginScreen()) {
731+
if (!ConsoleLoginScreen(cliUsername)) {
724732
gClient.ShutdownStart();
725733
gClient.ShutdownEnd();
726734
NetCommShutdown();

0 commit comments

Comments
 (0)