Files
runner/src/Sdk/DTPipelines/Pipelines/ObjectTemplating/PipelineTemplateSchemaFactory.cs
T

37 lines
1.2 KiB
C#
Raw Normal View History

2019-10-10 00:52:42 -04:00
using System;
using System.ComponentModel;
using System.IO;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
2019-10-10 00:52:42 -04:00
using GitHub.DistributedTask.ObjectTemplating.Schema;
namespace GitHub.DistributedTask.Pipelines.ObjectTemplating
{
[EditorBrowsable(EditorBrowsableState.Never)]
public static class PipelineTemplateSchemaFactory
2019-10-10 00:52:42 -04:00
{
public static TemplateSchema GetSchema()
2019-10-10 00:52:42 -04:00
{
if (s_schema == null)
2019-10-10 00:52:42 -04:00
{
var assembly = Assembly.GetExecutingAssembly();
var json = default(String);
using (var stream = assembly.GetManifestResourceStream("GitHub.DistributedTask.Pipelines.ObjectTemplating.workflow-v1.0.json"))
using (var streamReader = new StreamReader(stream))
{
json = streamReader.ReadToEnd();
}
var objectReader = new JsonObjectReader(null, json);
var schema = TemplateSchema.Load(objectReader);
Interlocked.CompareExchange(ref s_schema, schema, null);
2019-10-10 00:52:42 -04:00
}
return s_schema;
2019-10-10 00:52:42 -04:00
}
private static TemplateSchema s_schema;
2019-10-10 00:52:42 -04:00
}
}