| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | |
| 2 // for details. All rights reserved. Use of this source code is governed by a | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 library directory_validator; | |
| 6 | |
| 7 import 'dart:async'; | |
| 8 | |
| 9 import 'package:pathos/path.dart' as path; | |
| 10 | |
| 11 import '../entrypoint.dart'; | |
| 12 import '../io.dart'; | |
| 13 import '../utils.dart'; | |
| 14 import '../validator.dart'; | |
| 15 | |
| 16 /// A validator that validates a package's top-level directories. | |
| 17 class DirectoryValidator extends Validator { | |
| 18 DirectoryValidator(Entrypoint entrypoint) | |
| 19 : super(entrypoint); | |
| 20 | |
| 21 static final _PLURAL_NAMES = ["tools", "tests", "docs", "examples"]; | |
| 22 | |
| 23 Future validate() { | |
| 24 return new Future.sync(() { | |
| 25 for (var dir in listDir(entrypoint.root.dir)) { | |
| 26 if (!dirExists(dir)) continue; | |
| 27 | |
| 28 dir = path.basename(dir); | |
| 29 if (_PLURAL_NAMES.contains(dir)) { | |
| 30 // Cut off the "s" | |
| 31 var singularName = dir.substring(0, dir.length - 1); | |
| 32 warnings.add('Rename the top-level "$dir" directory to ' | |
| 33 '"$singularName".\n' | |
| 34 'The Pub layout convention is to use singular directory ' | |
| 35 'names.\n' | |
| 36 'Plural names won\'t be correctly identified by Pub and other ' | |
| 37 'tools.'); | |
| 38 } | |
| 39 | |
| 40 if (dir.contains(new RegExp(r"^samples?$"))) { | |
| 41 warnings.add('Rename the top-level "$dir" directory to "example".\n' | |
| 42 'This allows Pub to find your examples and create "packages" ' | |
| 43 'directories for them.\n'); | |
| 44 } | |
| 45 } | |
| 46 }); | |
| 47 } | |
| 48 } | |
| OLD | NEW |