Some checks failed
		
		
	
	Docs CI / lint-and-preview (push) Has been cancelled
				
			- Implemented PolicyDslValidator with command-line options for strict mode and JSON output. - Created PolicySchemaExporter to generate JSON schemas for policy-related models. - Developed PolicySimulationSmoke tool to validate policy simulations against expected outcomes. - Added project files and necessary dependencies for each tool. - Ensured proper error handling and usage instructions across tools.
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 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}");
 | |
| }
 |