Index: sdk/lib/_internal/pub/lib/src/barback/sources.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/barback/sources.dart b/sdk/lib/_internal/pub/lib/src/barback/sources.dart |
deleted file mode 100644 |
index 672450a86d81600eb88c0412d6cf009491593981..0000000000000000000000000000000000000000 |
--- a/sdk/lib/_internal/pub/lib/src/barback/sources.dart |
+++ /dev/null |
@@ -1,172 +0,0 @@ |
-// 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. |
- |
-library pub.barback.sources; |
- |
-import 'dart:async'; |
- |
-import 'package:barback/barback.dart'; |
-import 'package:path/path.dart' as path; |
-import 'package:watcher/watcher.dart'; |
- |
-import '../entrypoint.dart'; |
-import '../io.dart'; |
-import '../package.dart'; |
-import '../package_graph.dart'; |
- |
-/// Adds all of the source assets in the provided packages to barback and |
-/// then watches the public directories for changes. |
-/// |
-/// [watcherFactory] should return a [DirectoryWatcher] watching the given |
-/// directory for changes. |
-/// |
-/// Returns a Future that completes when the sources are loaded and the watchers |
-/// are active. |
-Future watchSources(PackageGraph graph, Barback barback, |
- WatcherType watcherType) { |
- return Future.wait(graph.packages.values.map((package) { |
- // If this package comes from a cached source, its contents won't change so |
- // we don't need to monitor it. `packageId` will be null for the application |
- // package, since that's not locked. |
- var packageId = graph.lockFile.packages[package.name]; |
- if (packageId != null && |
- graph.entrypoint.cache.sources[packageId.source].shouldCache) { |
- barback.updateSources(_listAssets(graph.entrypoint, package)); |
- return new Future.value(); |
- } |
- |
- // Watch the visible package directories for changes. |
- return Future.wait(_getPublicDirectories(graph.entrypoint, package) |
- .map((name) { |
- var subdirectory = path.join(package.dir, name); |
- if (!dirExists(subdirectory)) return new Future.value(); |
- |
- // TODO(nweiz): close these watchers when [barback] is closed. |
- var watcher = watcherType.create(subdirectory); |
- watcher.events.listen((event) { |
- // Don't watch files symlinked into these directories. |
- // TODO(rnystrom): If pub gets rid of symlinks, remove this. |
- var parts = path.split(event.path); |
- if (parts.contains("packages") || parts.contains("assets")) return; |
- |
- // Skip ".js" files that were (most likely) compiled from nearby ".dart" |
- // files. These are created by the Editor's "Run as JavaScript" command |
- // and are written directly into the package's directory. When pub's |
- // dart2js transformer then tries to create the same file name, we get |
- // a build error. To avoid that, just don't consider that file to be a |
- // source. |
- // TODO(rnystrom): Remove this when the Editor no longer generates .js |
- // files. See #15859. |
- if (event.path.endsWith(".dart.js")) return; |
- |
- var id = new AssetId(package.name, |
- path.relative(event.path, from: package.dir)); |
- if (event.type == ChangeType.REMOVE) { |
- barback.removeSources([id]); |
- } else { |
- barback.updateSources([id]); |
- } |
- }); |
- return watcher.ready; |
- })).then((_) { |
- barback.updateSources(_listAssets(graph.entrypoint, package)); |
- }); |
- })); |
-} |
- |
-/// Adds all of the source assets in the provided packages to barback. |
-void loadSources(PackageGraph graph, Barback barback) { |
- for (var package in graph.packages.values) { |
- barback.updateSources(_listAssets(graph.entrypoint, package)); |
- } |
-} |
- |
-/// Lists all of the visible files in [package]. |
-/// |
-/// This is the recursive contents of the "asset" and "lib" directories (if |
-/// present). If [package] is the entrypoint package, it also includes the |
-/// contents of "web". |
-List<AssetId> _listAssets(Entrypoint entrypoint, Package package) { |
- var files = <AssetId>[]; |
- |
- for (var dirPath in _getPublicDirectories(entrypoint, package)) { |
- var dir = path.join(package.dir, dirPath); |
- if (!dirExists(dir)) continue; |
- for (var entry in listDir(dir, recursive: true)) { |
- // Ignore "packages" symlinks if there. |
- if (path.split(entry).contains("packages")) continue; |
- |
- // Skip directories. |
- if (!fileExists(entry)) continue; |
- |
- // Skip ".js" files that were (most likely) compiled from nearby ".dart" |
- // files. These are created by the Editor's "Run as JavaScript" command |
- // and are written directly into the package's directory. When pub's |
- // dart2js transformer then tries to create the same file name, we get |
- // a build error. To avoid that, just don't consider that file to be a |
- // source. |
- // TODO(rnystrom): Remove this when the Editor no longer generates .js |
- // files. See #15859. |
- if (entry.endsWith(".dart.js")) continue; |
- |
- var id = new AssetId(package.name, |
- path.relative(entry, from: package.dir)); |
- files.add(id); |
- } |
- } |
- |
- return files; |
-} |
- |
-/// Gets the names of the top-level directories in [package] whose contents |
-/// should be provided as source assets. |
-Iterable<String> _getPublicDirectories(Entrypoint entrypoint, Package package) { |
- var directories = ["asset", "lib"]; |
- if (package.name == entrypoint.root.name) directories.add("web"); |
- return directories; |
-} |
- |
-/// An enum describing different modes of constructing a [DirectoryWatcher]. |
-abstract class WatcherType { |
- /// A watcher that automatically chooses its type based on the operating |
- /// system. |
- static const AUTO = const _AutoWatcherType(); |
- |
- /// A watcher that always polls the filesystem for changes. |
- static const POLLING = const _PollingWatcherType(); |
- |
- /// No directory watcher at all. |
- static const NONE = const _NoneWatcherType(); |
- |
- /// Creates a new DirectoryWatcher. |
- DirectoryWatcher create(String directory); |
- |
- String toString(); |
-} |
- |
-class _AutoWatcherType implements WatcherType { |
- const _AutoWatcherType(); |
- |
- DirectoryWatcher create(String directory) => |
- new DirectoryWatcher(directory); |
- |
- String toString() => "auto"; |
-} |
- |
-class _PollingWatcherType implements WatcherType { |
- const _PollingWatcherType(); |
- |
- DirectoryWatcher create(String directory) => |
- new PollingDirectoryWatcher(directory); |
- |
- String toString() => "polling"; |
-} |
- |
-class _NoneWatcherType implements WatcherType { |
- const _NoneWatcherType(); |
- |
- DirectoryWatcher create(String directory) => null; |
- |
- String toString() => "none"; |
-} |