// Copyright (c) 2013, 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 '../command.dart';
import '../log.dart' as log;
import '../utils.dart';

/// Shared base class for [BuildCommand] and [ServeCommand].
abstract class BarbackCommand extends PubCommand {
  BarbackCommand() {
    argParser.addOption('mode', hide: true);
    argParser.addFlag('all', hide: true);
    argParser.addOption('web-compiler', hide: true);
  }

  @override
  Future<void> runProtected() async {
    // Switch to JSON output if specified. We need to do this before parsing
    // the source directories so an error will be correctly reported in JSON
    // format.
    log.json.enabled =
        argResults.options.contains('format') && argResults['format'] == 'json';

    fail(
      log.red('Dart 2 has a new build system. Learn how to migrate '
          "from ${log.bold('pub build')} and\n"
          "${log.bold('pub serve')}: https://dart.dev/web/dart-2\n"),
    );
  }
}
