blob: 2b46d3d109b059c3da0d4e0ec45e7b109cea8abe [file] [log] [blame]
// 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');
}