blob: a79bebd399375a7ed0bd395b70a9cd91e6ed3ceb [file] [log] [blame]
#!/usr/bin/env dart
// Copyright (c) 2020, 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';
import 'package:args/command_runner.dart';
import 'package:vm_snapshot_analysis/src/commands/compare.dart';
import 'package:vm_snapshot_analysis/src/commands/explain.dart';
import 'package:vm_snapshot_analysis/src/commands/summary.dart';
import 'package:vm_snapshot_analysis/src/commands/treemap.dart';
final _executableName = () {
// There is no reliable way to detect executable name across different modes
// of running this script. This code handles two most common ways:
//
// * Running from source
// * Running a wrapper script created by
//
// pub global activate vm_snapshot_analysis
//
// Note that this does not properly handle the case of installing this
// package from path (pub global activate --source path ...), but
// we consider that uncommon.
final scriptName = Platform.script.pathSegments.last;
if (scriptName.endsWith('.dart')) {
return scriptName;
}
return 'snapshot_analysis';
}();
final runner = CommandRunner(
_executableName, 'Tools for binary size analysis of Dart VM AOT snapshots.')
..addCommand(TreemapCommand())
..addCommand(CompareCommand())
..addCommand(SummaryCommand())
..addCommand(ExplainCommand());
void main(List<String> args) async {
try {
await runner.run(args);
} on UsageException catch (e) {
print(e.toString());
}
}