blob: 86112efa428c80ff303451549f44ad336926d06e [file] [log] [blame]
// Copyright (c) 2018, 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.
/// Command-line tool to convert an info.json file ouputted by dart2js to the
/// alternative protobuf format.
import 'dart:io';
import 'package:args/command_runner.dart';
import 'package:dart2js_info/proto_info_codec.dart';
import 'package:dart2js_info/src/io.dart';
import 'inject_text.dart';
import 'usage_exception.dart';
/// Converts a dump-info file emitted by dart2js to the proto format
class ToProtoCommand extends Command<void> with PrintUsageException {
@override
final String name = "to_proto";
@override
final String description = "Convert any info file to proto format.";
@override
void run() async {
final args = argResults!;
if (args.rest.isEmpty) {
usageException('Missing argument: <input-info>');
}
String filename = args.rest[0];
final info = await infoFromFile(filename);
if (args['inject-text']) injectText(info);
final proto = AllInfoProtoCodec().encode(info);
String outputFilename = args['out'] ?? '$filename.pb';
final outputFile = File(outputFilename);
await outputFile.writeAsBytes(proto.writeToBuffer(), mode: FileMode.write);
}
}