Lidarr/src/NzbDrone.Common/EnvironmentInfo/StartupContext.cs

82 lines
2.5 KiB
C#
Raw Normal View History

using System.Collections.Generic;
namespace NzbDrone.Common.EnvironmentInfo
{
2013-11-26 06:53:36 +00:00
public interface IStartupContext
{
HashSet<string> Flags { get; }
Dictionary<string, string> Args { get; }
bool Help { get; }
2013-11-26 05:36:06 +00:00
bool InstallService { get; }
bool UninstallService { get; }
bool RegisterUrl { get; }
string PreservedArguments { get; }
}
2013-11-26 06:53:36 +00:00
public class StartupContext : IStartupContext
{
public const string APPDATA = "data";
public const string NO_BROWSER = "nobrowser";
2013-11-26 05:36:06 +00:00
internal const string INSTALL_SERVICE = "i";
internal const string UNINSTALL_SERVICE = "u";
public const string HELP = "?";
2014-01-14 01:35:16 +00:00
public const string TERMINATE = "terminateexisting";
public const string RESTART = "restart";
public const string REGISTER_URL = "registerurl";
public const string NO_SINGLE_INSTANCE_CHECK = "nosingleinstancecheck";
public const string EXIT_IMMEDIATELY = "exitimmediately";
2013-11-26 06:53:36 +00:00
public StartupContext(params string[] args)
{
Flags = new HashSet<string>();
Args = new Dictionary<string, string>();
foreach (var s in args)
{
2014-10-17 07:36:56 +00:00
var flag = s.Trim(' ', '/', '-');
var argParts = flag.Split('=');
if (argParts.Length == 2)
{
2014-10-17 07:36:56 +00:00
Args.Add(argParts[0].Trim().ToLower(), argParts[1].Trim(' ', '"'));
}
else
{
2014-10-17 07:36:56 +00:00
Flags.Add(flag.ToLower());
}
}
}
public HashSet<string> Flags { get; private set; }
public Dictionary<string, string> Args { get; private set; }
2013-11-26 05:36:06 +00:00
public bool Help => Flags.Contains(HELP);
2016-12-09 06:54:15 +00:00
public bool InstallService => Flags.Contains(INSTALL_SERVICE);
public bool UninstallService => Flags.Contains(UNINSTALL_SERVICE);
public bool RegisterUrl => Flags.Contains(REGISTER_URL);
public bool ExitImmediately => Flags.Contains(EXIT_IMMEDIATELY);
public string PreservedArguments
{
get
{
var args = "";
if (Args.ContainsKey(APPDATA))
{
args = "/data=" + Args[APPDATA];
}
if (Flags.Contains(NO_BROWSER))
{
args += " /" + NO_BROWSER;
}
return args.Trim();
}
}
}
}