Fusion.Build.BuildContext.ResolveDirectory C# (CSharp) Method

ResolveDirectory() private method

private ResolveDirectory ( string dir ) : string
dir string
return string
		string ResolveDirectory ( string dir )
		{
			if ( dir.StartsWith("%") && dir.EndsWith("%") ) {
				var envVar = Environment.GetEnvironmentVariable( dir.Substring(1, dir.Length-2) );
				if (envVar==null) {
					Log.Warning("  {0} : environment variable not found", dir);
					return null;
				}
				if (!Directory.Exists( envVar )) {
					Log.Warning("  {0} = {1} : path not found", dir, envVar );
					return null;
				}
				return envVar;
			}

			if ( dir.StartsWith("HKEY_") ) {

				var keyValue	=	dir.Split(new[]{'@'}, 2);
				var key			=	keyValue[0];
				var value		=	keyValue.Length == 2 ? keyValue[1] : "";

				var regValue	=	Registry.GetValue(key, value, null);

				if (regValue==null) {
					Log.Warning("  {0} : registry variable not found", dir);
					return null;
				}
				if (!(regValue is string)) {
					Log.Warning("  {0} : registry variable must be string", dir);
					return null;
				}
				
				if (!Directory.Exists( (string)regValue )) {
					Log.Warning("  {0} = {1} : path not found", dir, (string)regValue );
					return null;
				}

				return (string)regValue;
			}

			if (Path.IsPathRooted( dir )) {
				if (Directory.Exists( dir )) {
					return dir;
				}
			} else {
				var fullDir = Path.GetFullPath( dir );
				if (Directory.Exists( fullDir )) {
					return fullDir;
				}
			}

			Log.Warning("  {0} : not resolved", dir);
			return null;
		}