/// <summary>
/// Processes the control manifest to yield the set of services available to
/// generate and the Visual Studio project file information used to create
/// new projects for services.
/// </summary>
/// <param name="manifestPath">Path to the manifest file to pull basic info from</param>
/// <param name="versionsPath">Path to _sdk-versions.json file</param>
/// <param name="modelsFolder">Path to the service models to be parsed</param>
public static GenerationManifest Load(string manifestPath, string versionsPath, string modelsFolder)
{
var generationManifest =
new GenerationManifest(
new DefaultConfigurationController(
new FileReader(),
new DefaultConfigurationParser()));
var manifest = LoadJsonFromFile(manifestPath);
var versionsManifest = LoadJsonFromFile(versionsPath);
generationManifest.CoreFileVersion = versionsManifest["CoreVersion"].ToString();
generationManifest.CoreVersion = Utils.GetVersion(versionsManifest["OverrideCoreVersion"]?.ToString() ?? generationManifest.CoreFileVersion);
generationManifest.DefaultToPreview = (bool)versionsManifest["DefaultToPreview"];
if (generationManifest.DefaultToPreview)
{
generationManifest.PreviewLabel = (string)versionsManifest["PreviewLabel"];
}
if (!string.IsNullOrEmpty(generationManifest.PreviewLabel))
{
generationManifest.PreviewLabel = "-" + generationManifest.PreviewLabel;
}
generationManifest.LoadDefaultConfiguration(modelsFolder);
generationManifest.LoadServiceConfigurations(manifest, versionsManifest["ServiceVersions"], modelsFolder);
generationManifest.LoadProjectConfigurations(manifest);
generationManifest.LoadUnitTestProjectConfigurations(manifest);
return(generationManifest);
}