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 |