Restructure solution layout by module
This commit is contained in:
		@@ -1,48 +1,48 @@
 | 
			
		||||
using System.Collections.Immutable;
 | 
			
		||||
using System.Text.Json;
 | 
			
		||||
using System.Text.Json.Serialization;
 | 
			
		||||
using NJsonSchema;
 | 
			
		||||
using NJsonSchema.Generation;
 | 
			
		||||
using NJsonSchema.Generation.SystemTextJson;
 | 
			
		||||
using Newtonsoft.Json;
 | 
			
		||||
using StellaOps.Scheduler.Models;
 | 
			
		||||
 | 
			
		||||
var output = args.Length switch
 | 
			
		||||
{
 | 
			
		||||
    0 => Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "..", "..", "..", "docs", "schemas")),
 | 
			
		||||
    1 => Path.GetFullPath(args[0]),
 | 
			
		||||
    _ => throw new ArgumentException("Usage: dotnet run --project tools/PolicySchemaExporter -- [outputDirectory]")
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
Directory.CreateDirectory(output);
 | 
			
		||||
 | 
			
		||||
var generatorSettings = new SystemTextJsonSchemaGeneratorSettings
 | 
			
		||||
{
 | 
			
		||||
    SchemaType = SchemaType.JsonSchema,
 | 
			
		||||
    DefaultReferenceTypeNullHandling = ReferenceTypeNullHandling.NotNull,
 | 
			
		||||
    SerializerOptions = new JsonSerializerOptions
 | 
			
		||||
    {
 | 
			
		||||
        PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
 | 
			
		||||
        DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
var generator = new JsonSchemaGenerator(generatorSettings);
 | 
			
		||||
 | 
			
		||||
var exports = ImmutableArray.Create(
 | 
			
		||||
    (FileName: "policy-run-request.schema.json", Type: typeof(PolicyRunRequest)),
 | 
			
		||||
    (FileName: "policy-run-status.schema.json", Type: typeof(PolicyRunStatus)),
 | 
			
		||||
    (FileName: "policy-diff-summary.schema.json", Type: typeof(PolicyDiffSummary)),
 | 
			
		||||
    (FileName: "policy-explain-trace.schema.json", Type: typeof(PolicyExplainTrace))
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
foreach (var export in exports)
 | 
			
		||||
{
 | 
			
		||||
    var schema = generator.Generate(export.Type);
 | 
			
		||||
    schema.Title = export.Type.Name;
 | 
			
		||||
    schema.AllowAdditionalProperties = false;
 | 
			
		||||
 | 
			
		||||
    var outputPath = Path.Combine(output, export.FileName);
 | 
			
		||||
    await File.WriteAllTextAsync(outputPath, schema.ToJson(Formatting.Indented) + Environment.NewLine);
 | 
			
		||||
    Console.WriteLine($"Wrote {outputPath}");
 | 
			
		||||
}
 | 
			
		||||
using System.Collections.Immutable;
 | 
			
		||||
using System.Text.Json;
 | 
			
		||||
using System.Text.Json.Serialization;
 | 
			
		||||
using NJsonSchema;
 | 
			
		||||
using NJsonSchema.Generation;
 | 
			
		||||
using NJsonSchema.Generation.SystemTextJson;
 | 
			
		||||
using Newtonsoft.Json;
 | 
			
		||||
using StellaOps.Scheduler.Models;
 | 
			
		||||
 | 
			
		||||
var output = args.Length switch
 | 
			
		||||
{
 | 
			
		||||
    0 => Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "..", "..", "..", "docs", "schemas")),
 | 
			
		||||
    1 => Path.GetFullPath(args[0]),
 | 
			
		||||
    _ => throw new ArgumentException("Usage: dotnet run --project tools/PolicySchemaExporter -- [outputDirectory]")
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
Directory.CreateDirectory(output);
 | 
			
		||||
 | 
			
		||||
var generatorSettings = new SystemTextJsonSchemaGeneratorSettings
 | 
			
		||||
{
 | 
			
		||||
    SchemaType = SchemaType.JsonSchema,
 | 
			
		||||
    DefaultReferenceTypeNullHandling = ReferenceTypeNullHandling.NotNull,
 | 
			
		||||
    SerializerOptions = new JsonSerializerOptions
 | 
			
		||||
    {
 | 
			
		||||
        PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
 | 
			
		||||
        DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
var generator = new JsonSchemaGenerator(generatorSettings);
 | 
			
		||||
 | 
			
		||||
var exports = ImmutableArray.Create(
 | 
			
		||||
    (FileName: "policy-run-request.schema.json", Type: typeof(PolicyRunRequest)),
 | 
			
		||||
    (FileName: "policy-run-status.schema.json", Type: typeof(PolicyRunStatus)),
 | 
			
		||||
    (FileName: "policy-diff-summary.schema.json", Type: typeof(PolicyDiffSummary)),
 | 
			
		||||
    (FileName: "policy-explain-trace.schema.json", Type: typeof(PolicyExplainTrace))
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
foreach (var export in exports)
 | 
			
		||||
{
 | 
			
		||||
    var schema = generator.Generate(export.Type);
 | 
			
		||||
    schema.Title = export.Type.Name;
 | 
			
		||||
    schema.AllowAdditionalProperties = false;
 | 
			
		||||
 | 
			
		||||
    var outputPath = Path.Combine(output, export.FileName);
 | 
			
		||||
    await File.WriteAllTextAsync(outputPath, schema.ToJson(Formatting.Indented) + Environment.NewLine);
 | 
			
		||||
    Console.WriteLine($"Wrote {outputPath}");
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user