| // Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import 'dart:convert'; |
| import 'dart:io'; |
| |
| import 'package:json_schema/json_schema.dart'; |
| import 'package:json_syntax_generator/json_syntax_generator.dart'; |
| |
| void main(List<String> args) { |
| final schemaFile = File.fromUri( |
| Platform.script.resolve('../doc/schema/record_use.schema.json'), |
| ); |
| final schemaJson = jsonDecode(schemaFile.readAsStringSync()) as Map; |
| final schema = JsonSchema.create(schemaJson); |
| |
| final analyzedSchema = SchemaAnalyzer( |
| schema, |
| nameOverrides: {'@': 'at'}, |
| ).analyze(); |
| final textDumpFile = File.fromUri( |
| Platform.script.resolve('../lib/src/syntax.g.txt'), |
| ); |
| textDumpFile.parent.createSync(recursive: true); |
| if (args.contains('-d')) { |
| textDumpFile.writeAsStringSync(analyzedSchema.toString()); |
| } else if (textDumpFile.existsSync()) { |
| textDumpFile.deleteSync(); |
| } |
| final output = SyntaxGenerator( |
| analyzedSchema, |
| header: ''' |
| // This file is generated, do not edit. |
| // File generated by pkg/record_use/tool/generate_syntax.dart. |
| ''', |
| ).generate(); |
| final outputUri = Platform.script.resolve('../lib/src/syntax.g.dart'); |
| File.fromUri(outputUri).writeAsStringSync(output); |
| Process.runSync(Platform.executable, ['format', outputUri.toFilePath()]); |
| print('Generated $outputUri'); |
| } |