// initialize basic systems for command line help / output static void ConsolePrintInitialize(const std::string& configSource, bool safemode) { spring_clock::PushTickRate(false); spring_time::setstarttime(spring_time::gettime(true)); LOG_DISABLE(); FileSystemInitializer::PreInitializeConfigHandler(configSource, safemode); FileSystemInitializer::InitializeLogOutput(); LOG_ENABLE(); }
void ParseCmdLine(int argc, char* argv[], std::string& scriptName) { #undef LOG_SECTION_CURRENT #define LOG_SECTION_CURRENT LOG_SECTION_DEFAULT #ifndef WIN32 if (!FLAGS_nocolor && (getenv("SPRING_NOCOLOR") == nullptr)) { // don't colorize, if our output is piped to a diff tool or file if (isatty(fileno(stdout))) log_console_colorizedOutput(true); } #endif if (FLAGS_sync_version) { LOG("%s", (SpringVersion::GetSync()).c_str()); exit(0); } if (argc >= 2) scriptName = argv[1]; if (scriptName.empty() && !FLAGS_list_config_vars) { gflags::ShowUsageWithFlags(argv[0]); exit(1); } if (FLAGS_isolation) dataDirLocater.SetIsolationMode(true); if (!FLAGS_isolation_dir.empty()) { dataDirLocater.SetIsolationMode(true); dataDirLocater.SetIsolationModeDir(FLAGS_isolation_dir); } if (FLAGS_list_config_vars) { LOG_DISABLE(); FileSystemInitializer::PreInitializeConfigHandler(FLAGS_config); FileSystemInitializer::InitializeLogOutput(); LOG_ENABLE(); ConfigVariable::OutputMetaDataMap(); exit(0); } //LOG("Run: %s", cmdLine.GetCmdLine().c_str()); FileSystemInitializer::PreInitializeConfigHandler(FLAGS_config); #undef LOG_SECTION_CURRENT #define LOG_SECTION_CURRENT LOG_SECTION_DEDICATED_SERVER }
void DownloadDisableLogging(bool disableLogging) { LOG_DISABLE(disableLogging); }
void ParseCmdLine(int argc, char* argv[], std::string* script_txt) { #undef LOG_SECTION_CURRENT #define LOG_SECTION_CURRENT LOG_SECTION_DEFAULT std::string binaryname = argv[0]; CmdLineParams cmdline(argc, argv); cmdline.SetUsageDescription("Usage: " + binaryname + " [options] path_to_script.txt"); cmdline.AddSwitch(0, "sync-version", "Display program sync version (for online gaming)"); cmdline.AddString('C', "config", "Exclusive configuration file"); cmdline.AddSwitch(0, "list-config-vars", "Dump a list of config vars and meta data to stdout"); cmdline.AddSwitch('i', "isolation", "Limit the data-dir (games & maps) scanner to one directory"); cmdline.AddString(0, "isolation-dir", "Specify the isolation-mode data-dir (see --isolation)"); cmdline.AddSwitch(0, "nocolor", "Disables colorized stdout"); cmdline.AddSwitch('q', "quiet", "Ignore unrecognized arguments"); try { cmdline.Parse(); } catch (const CmdLineParams::unrecognized_option& err) { LOG_L(L_ERROR, "%s\n", err.what()); if (!cmdline.IsSet("quiet")) { cmdline.PrintUsage(); exit(EXIT_FAILURE); } } #ifndef WIN32 if (!cmdline.IsSet("nocolor") && (getenv("SPRING_NOCOLOR") == NULL)) { // don't colorize, if our output is piped to a diff tool or file if (isatty(fileno(stdout))) log_console_colorizedOutput(true); } #endif if (cmdline.IsSet("help")) { cmdline.PrintUsage(); exit(0); } if (cmdline.IsSet("version")) { LOG("%s", (SpringVersion::GetFull()).c_str()); exit(0); } if (cmdline.IsSet("sync-version")) { LOG("%s", (SpringVersion::GetSync()).c_str()); exit(0); } *script_txt = cmdline.GetInputFile(); if (script_txt->empty() && !cmdline.IsSet("list-config-vars")) { cmdline.PrintUsage(); exit(1); } if (cmdline.IsSet("isolation")) { dataDirLocater.SetIsolationMode(true); } if (cmdline.IsSet("isolation-dir")) { dataDirLocater.SetIsolationMode(true); dataDirLocater.SetIsolationModeDir(cmdline.GetString("isolation-dir")); } const std::string configSource = cmdline.IsSet("config") ? cmdline.GetString("config") : ""; if (cmdline.IsSet("list-config-vars")) { LOG_DISABLE(); FileSystemInitializer::PreInitializeConfigHandler(configSource); FileSystemInitializer::InitializeLogOutput(); LOG_ENABLE(); ConfigVariable::OutputMetaDataMap(); exit(0); } LOG("Run: %s", cmdline.GetCmdLine().c_str()); FileSystemInitializer::PreInitializeConfigHandler(configSource); #undef LOG_SECTION_CURRENT #define LOG_SECTION_CURRENT LOG_SECTION_DEDICATED_SERVER }