|  | // Copyright (c) 2017, 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:io' show File, exit, stderr; | 
|  |  | 
|  | import 'dart:isolate' show RawReceivePort; | 
|  |  | 
|  | import 'dart:convert' show JsonEncoder; | 
|  |  | 
|  | import 'package:yaml/yaml.dart' show loadYaml; | 
|  |  | 
|  | main(List<String> arguments) async { | 
|  | var port = new RawReceivePort(); | 
|  | if (arguments.length != 2) { | 
|  | stderr.writeln("Usage: yaml2json.dart input.yaml output.json"); | 
|  | exit(1); | 
|  | } | 
|  | Uri input = Uri.base.resolve(arguments[0]); | 
|  | Uri output = Uri.base.resolve(arguments[1]); | 
|  | Map yaml = loadYaml(await new File.fromUri(input).readAsString()); | 
|  | Map<String, dynamic> result = new Map<String, dynamic>(); | 
|  | result["comment:0"] = "NOTE: THIS FILE IS GENERATED. DO NOT EDIT."; | 
|  | result["comment:1"] = | 
|  | "Instead modify '${arguments[0]}' and follow the instructions therein."; | 
|  | for (String key in yaml.keys) { | 
|  | result[key] = yaml[key]; | 
|  | } | 
|  | File file = new File.fromUri(output); | 
|  | await file.writeAsString(const JsonEncoder.withIndent("  ").convert(result)); | 
|  | port.close(); | 
|  | } |