Chromium Code Reviews| Index: sdk/lib/_internal/pub/lib/src/validator/executable.dart |
| diff --git a/sdk/lib/_internal/pub/lib/src/validator/executable.dart b/sdk/lib/_internal/pub/lib/src/validator/executable.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..3f0f6f978e9822cd3d6e31a51d110f12c6f109a0 |
| --- /dev/null |
| +++ b/sdk/lib/_internal/pub/lib/src/validator/executable.dart |
| @@ -0,0 +1,37 @@ |
| +// 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 pub.validator.compiled_dartdoc; |
|
nweiz
2014/09/18 21:51:49
One more thing: make this match the path.
Bob Nystrom
2014/09/18 22:23:48
Done.
|
| + |
| +import 'dart:async'; |
| + |
| +import 'package:path/path.dart' as p; |
| + |
| +import '../entrypoint.dart'; |
| +import '../io.dart'; |
| +import '../utils.dart'; |
| +import '../validator.dart'; |
| + |
| +/// Validates that a package's pubspec doesn't contain executables that |
| +/// reference non-existent scripts. |
| +class ExecutableValidator extends Validator { |
| + ExecutableValidator(Entrypoint entrypoint) |
| + : super(entrypoint); |
| + |
| + Future validate() async { |
| + // TODO(rnystrom): This can print false positives since a script may be |
| + // produced by a transformer. Do something better. |
| + var binFiles = entrypoint.root.listFiles(beneath: "bin", recursive: false) |
| + .map((path) => p.relative(path, from: entrypoint.root.dir)) |
| + .toList(); |
| + |
| + entrypoint.root.pubspec.executables.forEach((executable, script) { |
| + var scriptPath = p.join("bin", "$script.dart"); |
| + if (binFiles.contains(scriptPath)) return; |
| + |
| + warnings.add('Your pubspec.yaml lists an executable "$executable" that ' |
| + 'points to a script "$scriptPath" that does not exist.'); |
| + }); |
| + } |
| +} |