2019-10-10 00:52:42 -04:00
|
|
|
using System;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Reflection;
|
2020-03-18 12:08:51 -04:00
|
|
|
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)]
|
2020-03-18 12:08:51 -04:00
|
|
|
public static class PipelineTemplateSchemaFactory
|
2019-10-10 00:52:42 -04:00
|
|
|
{
|
2020-03-18 12:08:51 -04:00
|
|
|
public static TemplateSchema GetSchema()
|
2019-10-10 00:52:42 -04:00
|
|
|
{
|
2020-03-18 12:08:51 -04:00
|
|
|
if (s_schema == null)
|
2019-10-10 00:52:42 -04:00
|
|
|
{
|
2020-03-18 12:08:51 -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
|
|
|
}
|
|
|
|
|
|
2020-03-18 12:08:51 -04:00
|
|
|
return s_schema;
|
2019-10-10 00:52:42 -04:00
|
|
|
}
|
2020-03-18 12:08:51 -04:00
|
|
|
|
|
|
|
|
private static TemplateSchema s_schema;
|
2019-10-10 00:52:42 -04:00
|
|
|
}
|
|
|
|
|
}
|