dn not assume a particular profile
This commit is contained in:
Родитель
90278e0dd6
Коммит
3607fd4a5a
|
@ -28,18 +28,12 @@ namespace Steeltoe.Tooling.Models
|
||||||
public class ProjectBuilder
|
public class ProjectBuilder
|
||||||
{
|
{
|
||||||
private static readonly ILogger Logger = Logging.LoggerFactory.CreateLogger<ProjectBuilder>();
|
private static readonly ILogger Logger = Logging.LoggerFactory.CreateLogger<ProjectBuilder>();
|
||||||
private static readonly List<Protocol> DefaultProtocols = new List<Protocol>();
|
|
||||||
|
|
||||||
private Context _context;
|
private Context _context;
|
||||||
private readonly string _projectFile;
|
private readonly string _projectFile;
|
||||||
private readonly string _launchSettingsFile;
|
private readonly string _launchSettingsFile;
|
||||||
private XmlDocument _projectDoc;
|
private XmlDocument _projectDoc;
|
||||||
|
|
||||||
static ProjectBuilder()
|
|
||||||
{
|
|
||||||
DefaultProtocols.Add(new Protocol("http", 8080));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Project file.
|
/// Project file.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -108,35 +102,40 @@ namespace Steeltoe.Tooling.Models
|
||||||
|
|
||||||
private List<Protocol> GetProtocols()
|
private List<Protocol> GetProtocols()
|
||||||
{
|
{
|
||||||
if (!File.Exists(_launchSettingsFile))
|
var protocols = new List<Protocol>();
|
||||||
|
if (File.Exists(_launchSettingsFile))
|
||||||
{
|
{
|
||||||
return DefaultProtocols;
|
Logger.LogDebug($"loading launch settings: {_launchSettingsFile}");
|
||||||
|
var yaml = new YamlStream();
|
||||||
|
using (var reader = new StreamReader(_launchSettingsFile))
|
||||||
|
{
|
||||||
|
yaml.Load(reader);
|
||||||
|
}
|
||||||
|
|
||||||
|
var root = (YamlMappingNode) yaml.Documents[0].RootNode;
|
||||||
|
var profiles = (YamlMappingNode) root.Children[new YamlScalarNode("profiles")];
|
||||||
|
foreach (var entry in profiles.Children)
|
||||||
|
{
|
||||||
|
var profile = (YamlMappingNode) entry.Value;
|
||||||
|
if (profile.Children.ContainsKey(new YamlScalarNode("applicationUrl")))
|
||||||
|
{
|
||||||
|
var urlSpec = profile.Children[new YamlScalarNode("applicationUrl")];
|
||||||
|
var urls = $"{urlSpec}".Split(';');
|
||||||
|
foreach (var url in urls)
|
||||||
|
{
|
||||||
|
var uri = new Uri(url);
|
||||||
|
protocols.Add(new Protocol(uri.Scheme, uri.Port));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger.LogDebug($"loading launch settings: {_launchSettingsFile}");
|
// ensure a default protocol
|
||||||
var yaml = new YamlStream();
|
if (protocols.Count == 0)
|
||||||
using (var reader = new StreamReader(_launchSettingsFile))
|
|
||||||
{
|
{
|
||||||
yaml.Load(reader);
|
protocols.Add(new Protocol("http", 8080));
|
||||||
}
|
}
|
||||||
|
|
||||||
var root = (YamlMappingNode) yaml.Documents[0].RootNode;
|
|
||||||
var profiles = (YamlMappingNode) root.Children[new YamlScalarNode("profiles")];
|
|
||||||
var profile =
|
|
||||||
(YamlMappingNode) profiles.Children[new YamlScalarNode(Path.GetFileNameWithoutExtension(_projectFile))];
|
|
||||||
if (!profile.Children.ContainsKey(new YamlScalarNode("applicationUrl")))
|
|
||||||
{
|
|
||||||
return DefaultProtocols;
|
|
||||||
}
|
|
||||||
|
|
||||||
var urlSpec = profile.Children[new YamlScalarNode("applicationUrl")];
|
|
||||||
var urls = $"{urlSpec}".Split(';');
|
|
||||||
if (urls.Length == 0)
|
|
||||||
{
|
|
||||||
return DefaultProtocols;
|
|
||||||
}
|
|
||||||
|
|
||||||
var protocols = urls.Select(url => new Uri(url)).Select(uri => new Protocol(uri.Scheme, uri.Port)).ToList();
|
|
||||||
protocols.Sort();
|
protocols.Sort();
|
||||||
return protocols;
|
return protocols;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче