2021-03-07 15:54:23 +00:00
|
|
|
using System.Collections.Generic;
|
2013-07-09 00:47:09 +00:00
|
|
|
|
|
|
|
namespace NzbDrone.Common.EnvironmentInfo
|
|
|
|
{
|
2013-11-26 06:53:36 +00:00
|
|
|
public interface IStartupContext
|
2013-07-09 00:47:09 +00:00
|
|
|
{
|
2013-08-13 05:08:37 +00:00
|
|
|
HashSet<string> Flags { get; }
|
|
|
|
Dictionary<string, string> Args { get; }
|
2019-06-14 03:54:25 +00:00
|
|
|
bool Help { get; }
|
2013-11-26 05:36:06 +00:00
|
|
|
bool InstallService { get; }
|
|
|
|
bool UninstallService { get; }
|
2019-06-14 03:54:25 +00:00
|
|
|
bool RegisterUrl { get; }
|
2014-12-17 22:44:02 +00:00
|
|
|
|
|
|
|
string PreservedArguments { get; }
|
2013-08-13 05:08:37 +00:00
|
|
|
}
|
2013-07-09 00:47:09 +00:00
|
|
|
|
2013-11-26 06:53:36 +00:00
|
|
|
public class StartupContext : IStartupContext
|
2013-08-13 05:08:37 +00:00
|
|
|
{
|
|
|
|
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";
|
2013-07-09 00:47:09 +00:00
|
|
|
public const string HELP = "?";
|
2014-01-14 01:35:16 +00:00
|
|
|
public const string TERMINATE = "terminateexisting";
|
2014-03-10 05:35:50 +00:00
|
|
|
public const string RESTART = "restart";
|
2019-06-14 03:54:25 +00:00
|
|
|
public const string REGISTER_URL = "registerurl";
|
2020-08-17 21:27:05 +00:00
|
|
|
public const string NO_SINGLE_INSTANCE_CHECK = "nosingleinstancecheck";
|
2021-03-07 15:54:23 +00:00
|
|
|
public const string EXIT_IMMEDIATELY = "exitimmediately";
|
2013-07-09 00:47:09 +00:00
|
|
|
|
2013-11-26 06:53:36 +00:00
|
|
|
public StartupContext(params string[] args)
|
2013-07-09 00:47:09 +00:00
|
|
|
{
|
|
|
|
Flags = new HashSet<string>();
|
2013-08-13 05:08:37 +00:00
|
|
|
Args = new Dictionary<string, string>();
|
2013-07-09 00:47:09 +00:00
|
|
|
|
|
|
|
foreach (var s in args)
|
|
|
|
{
|
2014-10-17 07:36:56 +00:00
|
|
|
var flag = s.Trim(' ', '/', '-');
|
2013-08-13 05:08:37 +00:00
|
|
|
|
|
|
|
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(' ', '"'));
|
2013-08-13 05:08:37 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2014-10-17 07:36:56 +00:00
|
|
|
Flags.Add(flag.ToLower());
|
2013-08-13 05:08:37 +00:00
|
|
|
}
|
2013-07-09 00:47:09 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public HashSet<string> Flags { get; private set; }
|
2013-08-13 05:08:37 +00:00
|
|
|
public Dictionary<string, string> Args { get; private set; }
|
2013-11-26 05:36:06 +00:00
|
|
|
|
2019-06-14 03:54:25 +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);
|
2019-06-14 03:54:25 +00:00
|
|
|
public bool RegisterUrl => Flags.Contains(REGISTER_URL);
|
2021-03-07 15:54:23 +00:00
|
|
|
public bool ExitImmediately => Flags.Contains(EXIT_IMMEDIATELY);
|
2014-12-17 22:44:02 +00:00
|
|
|
|
|
|
|
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();
|
|
|
|
}
|
|
|
|
}
|
2013-07-09 00:47:09 +00:00
|
|
|
}
|
2019-06-14 03:54:25 +00:00
|
|
|
}
|