Skip to content

Commit e627748

Browse files
TalZaccaivazois
andauthored
Adding silent-mode option to command line args parser (#1060)
Co-authored-by: Vasileios Zois <[email protected]>
1 parent 0116fc1 commit e627748

File tree

3 files changed

+54
-49
lines changed

3 files changed

+54
-49
lines changed

libs/host/GarnetServer.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public GarnetServer(string[] commandLineArgs, ILoggerFactory loggerFactory = nul
9797
this.initLogger = (MemoryLogger)memLogProvider.CreateLogger("ArgParser");
9898
}
9999

100-
if (!ServerSettingsManager.TryParseCommandLineArguments(commandLineArgs, out var serverSettings, out _, out var exitGracefully, this.initLogger))
100+
if (!ServerSettingsManager.TryParseCommandLineArguments(commandLineArgs, out var serverSettings, out _, out var exitGracefully, logger: this.initLogger))
101101
{
102102
if (exitGracefully)
103103
Environment.Exit(0);

libs/host/ServerSettingsManager.cs

+10-5
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,13 @@ internal static class ServerSettingsManager
2929
/// then overridden by any options specified in the command line arguments (if any).
3030
/// </summary>
3131
/// <param name="args">Command line arguments</param>
32-
/// <param name="logger">Logger</param>
3332
/// <param name="options">Options object containing parsed configuration settings</param>
3433
/// <param name="invalidOptions">List of Options properties that did not pass validation</param>
3534
/// <param name="exitGracefully">True if should exit gracefully when parse is unsuccessful</param>
35+
/// <param name="silentMode">If true, help text will not be printed to console when parse is unsuccessful</param>
36+
/// <param name="logger">Logger</param>
3637
/// <returns>True if parsing succeeded</returns>
37-
internal static bool TryParseCommandLineArguments(string[] args, out Options options, out List<string> invalidOptions, out bool exitGracefully, ILogger logger = null)
38+
internal static bool TryParseCommandLineArguments(string[] args, out Options options, out List<string> invalidOptions, out bool exitGracefully, bool silentMode = false, ILogger logger = null)
3839
{
3940
options = null;
4041
invalidOptions = [];
@@ -63,7 +64,7 @@ internal static bool TryParseCommandLineArguments(string[] args, out Options opt
6364

6465
var consolidatedArgs = ConsolidateFlagArguments(args);
6566
// Parse command line arguments
66-
if (!parser.TryParseArguments<Options>(consolidatedArgs, argNameToDefaultValue, out var cmdLineOptions, out exitGracefully))
67+
if (!parser.TryParseArguments<Options>(consolidatedArgs, argNameToDefaultValue, out var cmdLineOptions, out exitGracefully, silentMode: silentMode))
6768
return false;
6869

6970
// Check if any arguments were not parsed
@@ -114,7 +115,7 @@ internal static bool TryParseCommandLineArguments(string[] args, out Options opt
114115

115116
// Re-parse command line arguments after initializing Options object with initialization function
116117
// In order to override options specified in the command line arguments
117-
if (!parser.TryParseArguments(consolidatedArgs, argNameToDefaultValue, out options, out exitGracefully, () => initOptions))
118+
if (!parser.TryParseArguments(consolidatedArgs, argNameToDefaultValue, out options, out exitGracefully, () => initOptions, silentMode))
118119
return false;
119120

120121
// Validate options
@@ -175,15 +176,19 @@ private static Dictionary<string, object> GetArgumentNameToValue(Options options
175176
/// <param name="obj">Parsed object, default(T) if parse unsuccessful</param>
176177
/// <param name="exitGracefully">True if should exit gracefully when parse is unsuccessful</param>
177178
/// <param name="factory">Optional T factory for object initialization</param>
179+
/// <param name="silentMode">If true, help messages will not be printed to console.</param>
178180
/// <returns>True if parse successful</returns>
179-
private static bool TryParseArguments<T>(this Parser parser, string[] args, IDictionary<string, object> argNameToDefaultValue, out T obj, out bool exitGracefully, Func<T> factory = null) where T : new()
181+
private static bool TryParseArguments<T>(this Parser parser, string[] args, IDictionary<string, object> argNameToDefaultValue, out T obj, out bool exitGracefully, Func<T> factory = null, bool silentMode = false) where T : new()
180182
{
181183
var result = parser.ParseArguments(factory ?? (() => new T()), args);
182184
var tmpExitGracefully = true;
183185

184186
obj = result.MapResult(parsed => parsed,
185187
notParsed =>
186188
{
189+
if (silentMode)
190+
return default;
191+
187192
var errors = notParsed.ToList();
188193
if (errors.IsVersion()) // Check if error is version request
189194
{

0 commit comments

Comments
 (0)