mirror of https://github.com/winsw/winsw
50 lines
1.5 KiB
C#
50 lines
1.5 KiB
C#
using System;
|
|
using System.IO;
|
|
using winsw.Configuration;
|
|
|
|
namespace winsw
|
|
{
|
|
public class ServiceDescriptorYaml
|
|
{
|
|
public static DefaultWinSWSettings Defaults { get; } = new DefaultWinSWSettings();
|
|
|
|
public string BasePath { get; set; }
|
|
|
|
public string BaseName { get; set; }
|
|
|
|
public virtual string ExecutablePath => Defaults.ExecutablePath;
|
|
|
|
public ServiceDescriptorYaml()
|
|
{
|
|
string p = ExecutablePath;
|
|
string baseName = Path.GetFileNameWithoutExtension(p);
|
|
if (baseName.EndsWith(".vshost"))
|
|
baseName = baseName.Substring(0, baseName.Length - 7);
|
|
|
|
DirectoryInfo d = new DirectoryInfo(Path.GetDirectoryName(p));
|
|
while (true)
|
|
{
|
|
if (File.Exists(Path.Combine(d.FullName, baseName + ".yaml")))
|
|
break;
|
|
|
|
if (d.Parent is null)
|
|
throw new FileNotFoundException("Unable to locate " + baseName + ".yaml file within executable directory or any parents");
|
|
|
|
d = d.Parent;
|
|
}
|
|
|
|
BaseName = baseName;
|
|
BasePath = Path.Combine(d.FullName, BaseName);
|
|
|
|
using(var reader = new StreamReader(BasePath + ".yaml"))
|
|
{
|
|
var file = reader.ReadToEnd();
|
|
Console.WriteLine(file);
|
|
}
|
|
|
|
// yaml <> object - deserialization and schema validation
|
|
// Set environment data
|
|
}
|
|
}
|
|
}
|