| 1 | namespace AIGuiders.DotnetTools.TomlCheck; |
| 2 | |
| 3 | internal static class Program |
| 4 | { |
| 5 | public static int Main(string[] args) |
| 6 | { |
| 7 | if (args.Length == 0 || IsHelp(args)) |
| 8 | { |
| 9 | PrintUsage(); |
| 10 | return args.Length == 0 ? 1 : 0; |
| 11 | } |
| 12 | |
| 13 | if (!string.Equals(args[0], "check", StringComparison.OrdinalIgnoreCase)) |
| 14 | { |
| 15 | Console.Error.WriteLine($"Unknown command: {args[0]}"); |
| 16 | PrintUsage(); |
| 17 | return 1; |
| 18 | } |
| 19 | |
| 20 | if (!CheckArgsParser.TryParse(args[1..], out var paths, out var schema, out var error)) |
| 21 | { |
| 22 | Console.Error.WriteLine(error); |
| 23 | return 1; |
| 24 | } |
| 25 | |
| 26 | var engine = new TomlCheckEngine(schema); |
| 27 | return engine.CheckPaths(paths); |
| 28 | } |
| 29 | |
| 30 | private static bool IsHelp(string[] args) => |
| 31 | args.Any(a => string.Equals(a, "-?", StringComparison.OrdinalIgnoreCase) |
| 32 | || string.Equals(a, "--help", StringComparison.OrdinalIgnoreCase) |
| 33 | || string.Equals(a, "-Help", StringComparison.OrdinalIgnoreCase)); |
| 34 | |
| 35 | private static void PrintUsage() |
| 36 | { |
| 37 | Console.WriteLine("aig-toml-check — validate TOML with JSON Schema"); |
| 38 | Console.WriteLine(); |
| 39 | Console.WriteLine("Usage:"); |
| 40 | Console.WriteLine(" aig-toml-check check <path...> [--schema <file.json>]"); |
| 41 | Console.WriteLine(); |
| 42 | Console.WriteLine("Each TOML may declare a schema in the header:"); |
| 43 | Console.WriteLine(" #:schema ../docs/schemas/example.schema.json"); |
| 44 | } |
| 45 | } |
| 46 | |