| 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 lib_validator; | |
| 6 | |
| 7 import 'dart:async'; | |
| 8 import 'dart:io'; | |
| 9 | |
| 10 import 'package:pathos/path.dart' as path; | |
| 11 | |
| 12 import '../entrypoint.dart'; | |
| 13 import '../io.dart'; | |
| 14 import '../system_cache.dart'; | |
| 15 import '../utils.dart'; | |
| 16 import '../validator.dart'; | |
| 17 | |
| 18 // TODO(nweiz): When issue 7196 is fixed, complain about non-Dart files in lib. | |
| 19 /// A validator that checks that libraries in "lib/" (and not "lib/src/") exist | |
| 20 /// and are well-formed. | |
| 21 class LibValidator extends Validator { | |
| 22 LibValidator(Entrypoint entrypoint) | |
| 23 : super(entrypoint); | |
| 24 | |
| 25 Future validate() { | |
| 26 return new Future.sync(() { | |
| 27 var libDir = path.join(entrypoint.root.dir, "lib"); | |
| 28 | |
| 29 if (!dirExists(libDir)) { | |
| 30 errors.add('You must have a "lib" directory.\n' | |
| 31 "Without that, users cannot import any code from your package."); | |
| 32 return; | |
| 33 } | |
| 34 | |
| 35 var files = listDir(libDir) | |
| 36 .map((file) => path.relative(file, from: libDir)) | |
| 37 .toList(); | |
| 38 if (files.isEmpty) { | |
| 39 errors.add('You must have a non-empty "lib" directory.\n' | |
| 40 "Without that, users cannot import any code from your package."); | |
| 41 } else if (files.length == 1 && files.first == "src") { | |
| 42 errors.add('The "lib" directory must contain something other than ' | |
| 43 '"src".\n' | |
| 44 "Otherwise, users cannot import any code from your package."); | |
| 45 } | |
| 46 }); | |
| 47 } | |
| 48 } | |
| OLD | NEW |