// 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 root_source;

import 'package.dart';
import 'pubspec.dart';
import 'source.dart';

/**
 * A source used only for the root package when doing version resolution. It
 * contains only the root package and is unable to install packages.
 *
 * This source cannot be referenced from a pubspec.
 */
class RootSource extends Source {
  final String name = "root";
  final bool shouldCache = false;
  final Package package;

  RootSource(this.package);

  Future<Pubspec> describe(PackageId id) {
    return new Future<Pubspec>.immediate(package.pubspec);
  }

  Future<bool> install(PackageId id, String destPath) {
    throw new UnsupportedError("Can't install from a root source.");
  }
}
