1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-12-04 10:34:59 +02:00

Cleaned up Environment.ApplicationPath

This commit is contained in:
kay.one 2011-11-20 16:52:40 -08:00
parent 6778a6ed99
commit 115b06821e
2 changed files with 36 additions and 19 deletions

View File

@ -44,28 +44,42 @@ public virtual string ApplicationPath
{
get
{
var dir = new DirectoryInfo(Environment.CurrentDirectory);
string applicationPath;
while (!ContainsIIS(dir))
{
if (dir.Parent == null) break;
dir = dir.Parent;
}
applicationPath = GetApplicationPath(Environment.CurrentDirectory);
if (!string.IsNullOrWhiteSpace(applicationPath))
return applicationPath;
if (ContainsIIS(dir)) return dir.FullName;
applicationPath = GetApplicationPath(StartUpPath);
if (!string.IsNullOrWhiteSpace(applicationPath))
return applicationPath;
dir = new FileInfo(Assembly.GetExecutingAssembly().Location).Directory;
applicationPath = GetApplicationPath(NzbDronePathFromEnviroment);
if (!string.IsNullOrWhiteSpace(applicationPath))
return applicationPath;
while (!ContainsIIS(dir))
{
if (dir.Parent == null) throw new ApplicationException("Can't fine IISExpress folder.");
dir = dir.Parent;
}
return dir.FullName;
throw new ApplicationException("Can't fine IISExpress folder.");
}
}
private string GetApplicationPath(string dir)
{
var directoryInfo = new DirectoryInfo(dir);
while (!ContainsIIS(directoryInfo))
{
if (directoryInfo.Parent == null) break;
directoryInfo = directoryInfo.Parent;
}
return directoryInfo.FullName;
}
private static bool ContainsIIS(DirectoryInfo dir)
{
return dir.GetDirectories(IIS_FOLDER_NAME).Length != 0;
}
public virtual string StartUpPath
{
@ -110,9 +124,14 @@ public virtual int NzbDroneProcessIdFromEnviroment
}
}
private static bool ContainsIIS(DirectoryInfo dir)
public virtual string NzbDronePathFromEnviroment
{
return dir.GetDirectories(IIS_FOLDER_NAME).Length != 0;
get
{
return Environment.GetEnvironmentVariable(NZBDRONE_PATH);
}
}
}
}

View File

@ -1,10 +1,8 @@
using System;
using System.Diagnostics;
using System.IO;
using NLog;
using Ninject;
using NzbDrone.Common;
using NzbDrone.Common.Model;
namespace NzbDrone.Providers
{