#!/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 args) async { try { await runner.run(args); } on UsageException catch (e) { print(e.toString()); } }