mirror of
https://github.com/Sonarr/Sonarr.git
synced 2024-12-16 11:37:58 +02:00
Pass data cmd argument between application and update.
This commit is contained in:
parent
9b715ee078
commit
cb3d5fbfe7
@ -38,5 +38,29 @@ public void should_parse_args_with_alues(string arg)
|
||||
}
|
||||
|
||||
|
||||
[TestCase("/data=test", "/data=test")]
|
||||
[TestCase("/Data=/a/b/c", "/data=/a/b/c")]
|
||||
public void should_preserver_data(string arg, string preserved)
|
||||
{
|
||||
var args = new StartupContext(new[] { arg });
|
||||
args.PreservedArguments.Should().Be(preserved);
|
||||
}
|
||||
|
||||
[TestCase("/nobrowser", "/nobrowser")]
|
||||
[TestCase("/Nobrowser", "/nobrowser")]
|
||||
[TestCase("-Nobrowser", "/nobrowser")]
|
||||
public void should_preserver_no_browser(string arg, string preserved)
|
||||
{
|
||||
var args = new StartupContext(new[] { arg });
|
||||
args.PreservedArguments.Should().Be(preserved);
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void should_preserver_both()
|
||||
{
|
||||
var args = new StartupContext(new[] { "/data=test", "/Nobrowser" });
|
||||
args.PreservedArguments.Should().Be("/data=test /nobrowser");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using NLog;
|
||||
using NzbDrone.Common.Instrumentation;
|
||||
|
||||
namespace NzbDrone.Common.EnvironmentInfo
|
||||
{
|
||||
@ -15,6 +17,9 @@ public class AppFolderInfo : IAppFolderInfo
|
||||
{
|
||||
private readonly Environment.SpecialFolder DATA_SPECIAL_FOLDER = Environment.SpecialFolder.CommonApplicationData;
|
||||
|
||||
|
||||
private static readonly Logger Logger = NzbDroneLogger.GetLogger(typeof(AppFolderInfo));
|
||||
|
||||
public AppFolderInfo(IStartupContext startupContext)
|
||||
{
|
||||
if (OsInfo.IsNotWindows)
|
||||
@ -25,6 +30,7 @@ public AppFolderInfo(IStartupContext startupContext)
|
||||
if (startupContext.Args.ContainsKey(StartupContext.APPDATA))
|
||||
{
|
||||
AppDataFolder = startupContext.Args[StartupContext.APPDATA];
|
||||
Logger.Info("Data directory is being overridden to [{0}]", AppDataFolder);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices.ComTypes;
|
||||
|
||||
namespace NzbDrone.Common.EnvironmentInfo
|
||||
{
|
||||
@ -8,6 +9,8 @@ public interface IStartupContext
|
||||
Dictionary<string, string> Args { get; }
|
||||
bool InstallService { get; }
|
||||
bool UninstallService { get; }
|
||||
|
||||
string PreservedArguments { get; }
|
||||
}
|
||||
|
||||
public class StartupContext : IStartupContext
|
||||
@ -60,5 +63,25 @@ public bool UninstallService
|
||||
return Flags.Contains(UNINSTALL_SERVICE);
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -27,6 +27,7 @@ public class InstallUpdateService : IExecute<ApplicationUpdateCommand>, IExecute
|
||||
private readonly IArchiveService _archiveService;
|
||||
private readonly IProcessProvider _processProvider;
|
||||
private readonly IVerifyUpdates _updateVerifier;
|
||||
private readonly IStartupContext _startupContext;
|
||||
private readonly IConfigFileProvider _configFileProvider;
|
||||
private readonly IRuntimeInfo _runtimeInfo;
|
||||
private readonly IBackupService _backupService;
|
||||
@ -36,6 +37,7 @@ public InstallUpdateService(ICheckUpdateService checkUpdateService, IAppFolderIn
|
||||
IDiskProvider diskProvider, IHttpClient httpClient,
|
||||
IArchiveService archiveService, IProcessProvider processProvider,
|
||||
IVerifyUpdates updateVerifier,
|
||||
IStartupContext startupContext,
|
||||
IConfigFileProvider configFileProvider,
|
||||
IRuntimeInfo runtimeInfo,
|
||||
IBackupService backupService,
|
||||
@ -52,6 +54,7 @@ public InstallUpdateService(ICheckUpdateService checkUpdateService, IAppFolderIn
|
||||
_archiveService = archiveService;
|
||||
_processProvider = processProvider;
|
||||
_updateVerifier = updateVerifier;
|
||||
_startupContext = startupContext;
|
||||
_configFileProvider = configFileProvider;
|
||||
_runtimeInfo = runtimeInfo;
|
||||
_backupService = backupService;
|
||||
@ -142,7 +145,7 @@ private string GetUpdaterArgs(string updateSandboxFolder)
|
||||
var processId = _processProvider.GetCurrentProcess().Id.ToString();
|
||||
var executingApplication = _runtimeInfo.ExecutingApplication;
|
||||
|
||||
return String.Join(" ", processId, updateSandboxFolder.TrimEnd(Path.DirectorySeparatorChar).WrapInQuotes(), executingApplication.WrapInQuotes());
|
||||
return String.Join(" ", processId, updateSandboxFolder.TrimEnd(Path.DirectorySeparatorChar).WrapInQuotes(), executingApplication.WrapInQuotes(), _startupContext.PreservedArguments);
|
||||
}
|
||||
|
||||
private void EnsureAppDataSafety()
|
||||
|
@ -17,12 +17,14 @@ public class StartNzbDrone : IStartNzbDrone
|
||||
{
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly IProcessProvider _processProvider;
|
||||
private readonly IStartupContext _startupContext;
|
||||
private readonly Logger _logger;
|
||||
|
||||
public StartNzbDrone(IServiceProvider serviceProvider, IProcessProvider processProvider, Logger logger)
|
||||
public StartNzbDrone(IServiceProvider serviceProvider, IProcessProvider processProvider, IStartupContext startupContext, Logger logger)
|
||||
{
|
||||
_serviceProvider = serviceProvider;
|
||||
_processProvider = processProvider;
|
||||
_startupContext = startupContext;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
@ -73,7 +75,12 @@ private void Start(string installationFolder, string fileName)
|
||||
_logger.Info("Starting {0}", fileName);
|
||||
var path = Path.Combine(installationFolder, fileName);
|
||||
|
||||
_processProvider.SpawnNewProcess(path, "--" + StartupContext.NO_BROWSER);
|
||||
if (!_startupContext.Flags.Contains(StartupContext.NO_BROWSER))
|
||||
{
|
||||
_startupContext.Flags.Add(StartupContext.NO_BROWSER);
|
||||
}
|
||||
|
||||
_processProvider.SpawnNewProcess(path, _startupContext.PreservedArguments);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user