aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPloughPuff <ploughpuff@protonmail.com>2019-01-28 20:58:47 +0000
committerBond-009 <bond.009@outlook.com>2019-01-31 18:56:34 +0100
commite18b89ca275feceee21b540878017a2373e7de6c (patch)
treed81c2b3c19a418d609c0ba66c71b85eb3f83106e
parentebd2a3008791ac4043a775d48f0971a554bd9ff4 (diff)
Move Options to Jellyfin.Server and create interface file
Changes following review comments.
-rw-r--r--Emby.Server.Implementations/ApplicationHost.cs7
-rw-r--r--Emby.Server.Implementations/Emby.Server.Implementations.csproj3
-rw-r--r--Emby.Server.Implementations/EntryPoints/StartupWizard.cs2
-rw-r--r--Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs7
-rw-r--r--Emby.Server.Implementations/IStartupOptions.cs55
-rw-r--r--Jellyfin.Server/Jellyfin.Server.csproj1
-rw-r--r--Jellyfin.Server/Program.cs21
-rw-r--r--Jellyfin.Server/StartupOptions.cs (renamed from Emby.Server.Implementations/StartupOptions.cs)34
8 files changed, 95 insertions, 35 deletions
diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs
index 2306fb370..3af9e487e 100644
--- a/Emby.Server.Implementations/ApplicationHost.cs
+++ b/Emby.Server.Implementations/ApplicationHost.cs
@@ -43,6 +43,7 @@ using Emby.Server.Implementations.ScheduledTasks;
using Emby.Server.Implementations.Security;
using Emby.Server.Implementations.Serialization;
using Emby.Server.Implementations.Session;
+using Emby.Server.Implementations.ParsedStartupOptions;
using Emby.Server.Implementations.Threading;
using Emby.Server.Implementations.TV;
using Emby.Server.Implementations.Updates;
@@ -141,7 +142,7 @@ namespace Emby.Server.Implementations
return false;
}
- if (StartupOptions.Service)
+ if (StartupOptions.IsService)
{
return false;
}
@@ -343,7 +344,7 @@ namespace Emby.Server.Implementations
protected IHttpResultFactory HttpResultFactory { get; private set; }
protected IAuthService AuthService { get; private set; }
- public StartupOptions StartupOptions { get; private set; }
+ public IStartupOptions StartupOptions { get; private set; }
internal IImageEncoder ImageEncoder { get; private set; }
@@ -364,7 +365,7 @@ namespace Emby.Server.Implementations
/// </summary>
public ApplicationHost(ServerApplicationPaths applicationPaths,
ILoggerFactory loggerFactory,
- StartupOptions options,
+ IStartupOptions options,
IFileSystem fileSystem,
IEnvironmentInfo environmentInfo,
IImageEncoder imageEncoder,
diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
index bf0546f2e..92e3172f1 100644
--- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj
+++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
@@ -1,4 +1,4 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\Emby.Naming\Emby.Naming.csproj" />
@@ -22,7 +22,6 @@
</ItemGroup>
<ItemGroup>
- <PackageReference Include="CommandLineParser" Version="2.4.3" />
<PackageReference Include="ServiceStack.Text.Core" Version="5.4.0" />
<PackageReference Include="sharpcompress" Version="0.22.0" />
<PackageReference Include="SimpleInjector" Version="4.4.2" />
diff --git a/Emby.Server.Implementations/EntryPoints/StartupWizard.cs b/Emby.Server.Implementations/EntryPoints/StartupWizard.cs
index bb96120f4..43d18e135 100644
--- a/Emby.Server.Implementations/EntryPoints/StartupWizard.cs
+++ b/Emby.Server.Implementations/EntryPoints/StartupWizard.cs
@@ -47,7 +47,7 @@ namespace Emby.Server.Implementations.EntryPoints
{
var options = ((ApplicationHost)_appHost).StartupOptions;
- if (!options.NoAutoRunWebApp)
+ if (options.AutoRunWebApp)
{
BrowserLauncher.OpenWebApp(_appHost);
}
diff --git a/Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs b/Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs
index 4c926b91a..b422b8862 100644
--- a/Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs
+++ b/Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs
@@ -6,6 +6,7 @@ using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Net;
using MediaBrowser.Model.IO;
using Microsoft.Extensions.Logging;
+using Emby.Server.Implementations.ParsedStartupOptions;
namespace Emby.Server.Implementations.FFMpeg
{
@@ -28,10 +29,10 @@ namespace Emby.Server.Implementations.FFMpeg
_ffmpegInstallInfo = ffmpegInstallInfo;
}
- public FFMpegInfo GetFFMpegInfo(StartupOptions options)
+ public FFMpegInfo GetFFMpegInfo(IStartupOptions options)
{
- var customffMpegPath = options.FFmpeg;
- var customffProbePath = options.FFprobe;
+ var customffMpegPath = options.FFmpegPath;
+ var customffProbePath = options.FFprobePath;
if (!string.IsNullOrWhiteSpace(customffMpegPath) && !string.IsNullOrWhiteSpace(customffProbePath))
{
diff --git a/Emby.Server.Implementations/IStartupOptions.cs b/Emby.Server.Implementations/IStartupOptions.cs
new file mode 100644
index 000000000..878bb6640
--- /dev/null
+++ b/Emby.Server.Implementations/IStartupOptions.cs
@@ -0,0 +1,55 @@
+namespace Emby.Server.Implementations.ParsedStartupOptions
+{
+ public interface IStartupOptions
+ {
+ /// <summary>
+ /// --datadir
+ /// </summary>
+ string DataDir { get; }
+
+ /// <summary>
+ /// --configdir
+ /// </summary>
+ string ConfigDir { get; }
+
+ /// <summary>
+ /// --logdir
+ /// </summary>
+ string LogDir { get; }
+
+ /// <summary>
+ /// --ffmpeg
+ /// </summary>
+ string FFmpegPath { get; }
+
+ /// <summary>
+ /// --ffprobe
+ /// </summary>
+ string FFprobePath { get; }
+
+ /// <summary>
+ /// --service
+ /// </summary>
+ bool IsService { get; }
+
+ /// <summary>
+ /// --noautorunwebapp
+ /// </summary>
+ bool AutoRunWebApp { get; }
+
+ /// <summary>
+ /// --package-name
+ /// </summary>
+ string PackageName { get; }
+
+ /// <summary>
+ /// --restartpath
+ /// </summary>
+ string RestartPath { get; }
+
+ /// <summary>
+ /// --restartargs
+ /// </summary>
+ string RestartArgs { get; }
+ }
+}
diff --git a/Jellyfin.Server/Jellyfin.Server.csproj b/Jellyfin.Server/Jellyfin.Server.csproj
index 5a4bf5149..1f72de86d 100644
--- a/Jellyfin.Server/Jellyfin.Server.csproj
+++ b/Jellyfin.Server/Jellyfin.Server.csproj
@@ -32,6 +32,7 @@
</PropertyGroup>
<ItemGroup>
+ <PackageReference Include="CommandLineParser" Version="2.4.3" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" />
<PackageReference Include="Serilog.AspNetCore" Version="2.1.1" />
diff --git a/Jellyfin.Server/Program.cs b/Jellyfin.Server/Program.cs
index 2f7edee65..905cf3aa0 100644
--- a/Jellyfin.Server/Program.cs
+++ b/Jellyfin.Server/Program.cs
@@ -6,8 +6,10 @@ using System.Net;
using System.Net.Security;
using System.Reflection;
using System.Runtime.InteropServices;
+using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
+using CommandLine;
using Emby.Drawing;
using Emby.Server.Implementations;
using Emby.Server.Implementations.EnvironmentInfo;
@@ -26,9 +28,6 @@ using ILogger = Microsoft.Extensions.Logging.ILogger;
namespace Jellyfin.Server
{
- using CommandLine;
- using System.Text.RegularExpressions;
-
public static class Program
{
private static readonly CancellationTokenSource _tokenSource = new CancellationTokenSource();
@@ -41,8 +40,8 @@ namespace Jellyfin.Server
// For backwards compatibility.
// Modify any input arguments now which start with single-hyphen to POSIX standard
// double-hyphen to allow parsing by CommandLineParser package.
- var pattern = @"^(-[^-\s]{2})"; // Match -xx, not -x, not --xx, not xx
- var substitution = @"-$1"; // Prepend with additional single-hyphen
+ const string pattern = @"^(-[^-\s]{2})"; // Match -xx, not -x, not --xx, not xx
+ const string substitution = @"-$1"; // Prepend with additional single-hyphen
var regex = new Regex(pattern);
for (var i = 0; i < args.Length; i++)
@@ -152,9 +151,9 @@ namespace Jellyfin.Server
string programDataPath = Environment.GetEnvironmentVariable("JELLYFIN_DATA_PATH");
if (string.IsNullOrEmpty(programDataPath))
{
- if (options.PathData != null)
+ if (options.DataDir != null)
{
- programDataPath = options.PathData;
+ programDataPath = options.DataDir;
}
else
{
@@ -190,9 +189,9 @@ namespace Jellyfin.Server
string configDir = Environment.GetEnvironmentVariable("JELLYFIN_CONFIG_DIR");
if (string.IsNullOrEmpty(configDir))
{
- if (options.PathConfig != null)
+ if (options.ConfigDir != null)
{
- configDir = options.PathConfig;
+ configDir = options.ConfigDir;
}
else
{
@@ -209,9 +208,9 @@ namespace Jellyfin.Server
string logDir = Environment.GetEnvironmentVariable("JELLYFIN_LOG_DIR");
if (string.IsNullOrEmpty(logDir))
{
- if (options.PathLog != null)
+ if (options.LogDir != null)
{
- logDir = options.PathLog;
+ logDir = options.LogDir;
}
else
{
diff --git a/Emby.Server.Implementations/StartupOptions.cs b/Jellyfin.Server/StartupOptions.cs
index f4bb94f74..97fcb633a 100644
--- a/Emby.Server.Implementations/StartupOptions.cs
+++ b/Jellyfin.Server/StartupOptions.cs
@@ -1,43 +1,47 @@
-namespace Emby.Server.Implementations
-{
- using CommandLine;
+using CommandLine;
+using Emby.Server.Implementations.ParsedStartupOptions;
+namespace Jellyfin.Server
+{
/// <summary>
/// Class used by CommandLine package when parsing the command line arguments.
/// </summary>
- public class StartupOptions
+ public class StartupOptions : IStartupOptions
{
[Option('d', "datadir", Required = false, HelpText = "Path to use for the data folder (databases files etc.).")]
- public string PathData { get; set; }
+ public string DataDir { get; set; }
[Option('c', "configdir", Required = false, HelpText = "Path to use for config data (user policies and puctures).")]
- public string PathConfig { get; set; }
+ public string ConfigDir { get; set; }
[Option('l', "logdir", Required = false, HelpText = "Path to use for writing log files.")]
- public string PathLog { get; set; }
-
+ public string LogDir { get; set; }
[Option("ffmpeg", Required = false, HelpText = "Path to external FFmpeg exe to use in place of built-in.")]
- public string FFmpeg { get; set; }
+ public string FFmpegPath { get; set; }
[Option("ffprobe", Required = false, HelpText = "ffmpeg and ffprobe switches must be supplied together.")]
- public string FFprobe { get; set; }
-
+ public string FFprobePath { get; set; }
[Option("service", Required = false, HelpText = "Run as headless service.")]
- public bool Service { get; set; }
+ public bool IsService { get; set; }
[Option("noautorunwebapp", Required = false, HelpText = "Run headless if startup wizard is complete.")]
- public bool NoAutoRunWebApp { get; set; }
+ public bool AutoRunWebApp { get => !NoautoRunWebApp; set => NoautoRunWebApp = value; }
[Option("package-name", Required = false, HelpText = "Used when packaging Jellyfin (example, synology).")]
public string PackageName { get; set; }
-
[Option("restartpath", Required = false, HelpText = "Path to reset script.")]
public string RestartPath { get; set; }
[Option("restartargs", Required = false, HelpText = "Arguments for restart script.")]
public string RestartArgs { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether to run not run the web app.
+ /// Command line switch is --noautorunwebapp, which we store privately here, but provide inverse (AutoRunWebApp) for users.
+ /// </summary>
+ private bool NoautoRunWebApp { get; set; }
}
- }
+}