2011-10-08 19:16:11 -07:00
|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
2013-01-06 00:11:14 -08:00
|
|
|
using System.Diagnostics;
|
2011-10-08 19:16:11 -07:00
|
|
|
using System.Linq;
|
2011-10-12 19:24:30 -07:00
|
|
|
using NLog;
|
2011-10-22 22:26:43 -07:00
|
|
|
using NzbDrone.Common;
|
2011-10-09 10:45:08 -07:00
|
|
|
using NzbDrone.Model;
|
2011-10-08 19:16:11 -07:00
|
|
|
|
|
|
|
namespace NzbDrone
|
|
|
|
{
|
2011-10-12 19:24:30 -07:00
|
|
|
public class Router
|
2011-10-08 19:16:11 -07:00
|
|
|
{
|
2012-02-10 16:48:20 -08:00
|
|
|
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
|
2011-10-12 19:24:30 -07:00
|
|
|
|
2011-10-11 00:11:05 -07:00
|
|
|
private readonly ApplicationServer _applicationServer;
|
2011-10-08 19:16:11 -07:00
|
|
|
private readonly ServiceProvider _serviceProvider;
|
|
|
|
private readonly ConsoleProvider _consoleProvider;
|
2012-03-06 18:59:43 -08:00
|
|
|
private readonly EnvironmentProvider _environmentProvider;
|
2013-01-06 00:11:14 -08:00
|
|
|
private readonly ProcessProvider _processProvider;
|
2011-10-08 19:16:11 -07:00
|
|
|
|
2013-01-06 00:11:14 -08:00
|
|
|
public Router(ApplicationServer applicationServer, ServiceProvider serviceProvider,
|
|
|
|
ConsoleProvider consoleProvider, EnvironmentProvider environmentProvider,
|
|
|
|
ProcessProvider processProvider)
|
2011-10-08 19:16:11 -07:00
|
|
|
{
|
2011-10-11 00:11:05 -07:00
|
|
|
_applicationServer = applicationServer;
|
2011-10-08 19:16:11 -07:00
|
|
|
_serviceProvider = serviceProvider;
|
2011-10-12 19:24:30 -07:00
|
|
|
_consoleProvider = consoleProvider;
|
2012-03-06 18:59:43 -08:00
|
|
|
_environmentProvider = environmentProvider;
|
2013-01-06 00:11:14 -08:00
|
|
|
_processProvider = processProvider;
|
2011-10-08 19:16:11 -07:00
|
|
|
}
|
|
|
|
|
2011-10-13 18:22:51 -07:00
|
|
|
public void Route(IEnumerable<string> args)
|
2011-10-08 19:16:11 -07:00
|
|
|
{
|
2011-10-13 18:22:51 -07:00
|
|
|
Route(GetApplicationMode(args));
|
|
|
|
}
|
|
|
|
|
|
|
|
public void Route(ApplicationMode applicationMode)
|
|
|
|
{
|
2013-01-06 00:11:14 -08:00
|
|
|
logger.Info("Application mode: {0}", applicationMode);
|
2012-01-16 23:12:22 -08:00
|
|
|
|
2013-01-06 00:11:14 -08:00
|
|
|
if(!_environmentProvider.IsUserInteractive)
|
2011-10-13 18:22:51 -07:00
|
|
|
{
|
2013-01-06 00:11:14 -08:00
|
|
|
applicationMode = ApplicationMode.Service;
|
2011-10-08 19:16:11 -07:00
|
|
|
}
|
2013-01-06 00:11:14 -08:00
|
|
|
|
2011-10-13 18:22:51 -07:00
|
|
|
switch (applicationMode)
|
2013-01-06 00:11:14 -08:00
|
|
|
{
|
|
|
|
case ApplicationMode.Service:
|
|
|
|
{
|
|
|
|
_serviceProvider.Run(_applicationServer);
|
|
|
|
break;
|
|
|
|
}
|
2011-10-13 18:22:51 -07:00
|
|
|
|
2013-01-06 00:11:14 -08:00
|
|
|
case ApplicationMode.Console:
|
|
|
|
{
|
|
|
|
_applicationServer.Start();
|
|
|
|
_consoleProvider.WaitForClose();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case ApplicationMode.InstallService:
|
|
|
|
{
|
|
|
|
if (_serviceProvider.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME))
|
2011-10-13 18:22:51 -07:00
|
|
|
{
|
2013-01-06 00:11:14 -08:00
|
|
|
_consoleProvider.PrintServiceAlreadyExist();
|
2011-10-13 18:22:51 -07:00
|
|
|
}
|
2013-01-06 00:11:14 -08:00
|
|
|
else
|
2011-10-13 18:22:51 -07:00
|
|
|
{
|
2013-01-06 00:11:14 -08:00
|
|
|
_serviceProvider.Install(ServiceProvider.NZBDRONE_SERVICE_NAME);
|
|
|
|
_serviceProvider.Start(ServiceProvider.NZBDRONE_SERVICE_NAME);
|
2011-10-13 18:22:51 -07:00
|
|
|
}
|
2013-01-06 00:11:14 -08:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
case ApplicationMode.UninstallService:
|
|
|
|
{
|
|
|
|
if (!_serviceProvider.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME))
|
2011-10-13 18:22:51 -07:00
|
|
|
{
|
2013-01-06 00:11:14 -08:00
|
|
|
_consoleProvider.PrintServiceDoestExist();
|
2011-10-13 18:22:51 -07:00
|
|
|
}
|
2013-01-06 00:11:14 -08:00
|
|
|
else
|
2011-10-13 18:22:51 -07:00
|
|
|
{
|
2013-01-06 00:11:14 -08:00
|
|
|
_serviceProvider.UnInstall(ServiceProvider.NZBDRONE_SERVICE_NAME);
|
2011-10-13 18:22:51 -07:00
|
|
|
}
|
2013-01-06 00:11:14 -08:00
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
{
|
|
|
|
_consoleProvider.PrintHelp();
|
|
|
|
break;
|
|
|
|
}
|
2011-10-13 18:22:51 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static ApplicationMode GetApplicationMode(IEnumerable<string> args)
|
|
|
|
{
|
|
|
|
if (args == null) return ApplicationMode.Console;
|
|
|
|
|
|
|
|
var cleanArgs = args.Where(c => c != null && !String.IsNullOrWhiteSpace(c)).ToList();
|
|
|
|
if (cleanArgs.Count == 0) return ApplicationMode.Console;
|
|
|
|
if (cleanArgs.Count != 1) return ApplicationMode.Help;
|
|
|
|
|
|
|
|
var arg = cleanArgs.First().Trim('/', '\\', '-').ToLower();
|
|
|
|
|
|
|
|
if (arg == "i") return ApplicationMode.InstallService;
|
|
|
|
if (arg == "u") return ApplicationMode.UninstallService;
|
|
|
|
|
|
|
|
return ApplicationMode.Help;
|
2011-10-08 19:16:11 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|