// Copyright (c) 2012, 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.

library command_update;

import 'entrypoint.dart';
import 'pub.dart';

/** Handles the `update` pub command. */
class UpdateCommand extends PubCommand {
  String get description =>
    "update the current package's dependencies to the latest versions";

  String get usage => 'pub update [dependencies...]';

  Future onRun() {
    var future;
    if (commandOptions.rest.isEmpty()) {
      future = entrypoint.updateAllDependencies();
    } else {
      future = entrypoint.updateDependencies(commandOptions.rest);
    }
    return future.transform((_) => print("Dependencies updated!"));
  }
}
