99
99
kArgStartUpAgeName ,
100
100
kArgPvdFile ,
101
101
kArgSkipIntroMovies ,
102
- kArgRenderer
102
+ kArgRenderer ,
103
+ kArgUsername
103
104
};
104
105
105
106
static const plCmdArgDef s_cmdLineArgs[] = {
@@ -112,6 +113,7 @@ static const plCmdArgDef s_cmdLineArgs[] = {
112
113
{ kCmdArgFlagged | kCmdTypeString , " PvdFile" , kArgPvdFile },
113
114
{ kCmdArgFlagged | kCmdTypeBool , " SkipIntroMovies" , kArgSkipIntroMovies },
114
115
{ kCmdArgFlagged | kCmdTypeString , " Renderer" , kArgRenderer },
116
+ { kCmdArgFlagged | kCmdTypeString , " Username" , kArgUsername },
115
117
};
116
118
117
119
//
@@ -242,7 +244,7 @@ static size_t CurlCallback(void *buffer, size_t size, size_t nmemb, void *param)
242
244
return size * nmemb;
243
245
}
244
246
245
- static bool ConsoleLoginScreen ()
247
+ static bool ConsoleLoginScreen (const ST::string& cliUsername )
246
248
{
247
249
std::thread statusThread = std::thread ([]() {
248
250
ST::string statusUrl = GetServerStatusUrl ();
@@ -273,19 +275,22 @@ static bool ConsoleLoginScreen()
273
275
statusFlag.Wait ();
274
276
statusThread.join ();
275
277
276
- fprintf (stdout, " [Use Ctrl+D to cancel] \n Username 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] \n Username or Email: " );
281
+ fflush (stdout) ;
280
282
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;
283
288
}
284
289
285
290
pfPasswordStore* store = pfPasswordStore::Instance ();
286
291
ST::string password = store->GetPassword (username);
287
292
288
- if (!password.empty ()) {
293
+ if (!password.empty () && cliUsername. empty () ) {
289
294
fprintf (stdout, " Use saved password? [y/n] " );
290
295
fflush (stdout);
291
296
char c;
@@ -650,6 +655,7 @@ int main(int argc, const char** argv)
650
655
cmdParser.Parse (args);
651
656
652
657
bool doIntroDialogs = true ;
658
+ ST::string cliUsername;
653
659
#ifndef PLASMA_EXTERNAL_RELEASE
654
660
if (cmdParser.IsSpecified (kArgSkipLoginDialog ))
655
661
doIntroDialogs = false ;
@@ -668,6 +674,8 @@ int main(int argc, const char** argv)
668
674
plPXSimulation::SetDefaultDebuggerEndpoint (cmdParser.GetString (kArgPvdFile ));
669
675
if (cmdParser.IsSpecified (kArgRenderer ))
670
676
gClient .SetRequestedRenderingBackend (ParseRendererArgument (cmdParser.GetString (kArgRenderer )));
677
+ if (cmdParser.IsSpecified (kArgUsername ))
678
+ cliUsername = cmdParser.GetString (kArgUsername );
671
679
#endif
672
680
673
681
plFileName serverIni = " server.ini" ;
@@ -720,7 +728,7 @@ int main(int argc, const char** argv)
720
728
curl_global_init (CURL_GLOBAL_ALL);
721
729
722
730
// Login stuff
723
- if (!ConsoleLoginScreen ()) {
731
+ if (!ConsoleLoginScreen (cliUsername )) {
724
732
gClient .ShutdownStart ();
725
733
gClient .ShutdownEnd ();
726
734
NetCommShutdown ();
0 commit comments