blob: 98bed28b94f9e82a07e820e6df9a504d55ebf3e9 [file] [log] [blame]
// 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.lib;
import 'dart:async';
import 'package:path/path.dart' as path;
import '../entrypoint.dart';
import '../io.dart';
import '../validator.dart';
// TODO(nweiz): When issue 7196 is fixed, complain about non-Dart files in lib.
/// A validator that checks that libraries in "lib/" (and not "lib/src/") exist
/// and are well-formed.
class LibValidator extends Validator {
LibValidator(Entrypoint entrypoint)
: super(entrypoint);
Future validate() {
return new Future.sync(() {
var libDir = path.join(entrypoint.root.dir, "lib");
if (!dirExists(libDir)) {
errors.add('You must have a "lib" directory.\n'
"Without that, users cannot import any code from your package.");
return;
}
var files = listDir(libDir)
.map((file) => path.relative(file, from: libDir))
.toList();
if (files.isEmpty) {
errors.add('You must have a non-empty "lib" directory.\n'
"Without that, users cannot import any code from your package.");
} else if (files.length == 1 && files.first == "src") {
errors.add('The "lib" directory must contain something other than '
'"src".\n'
"Otherwise, users cannot import any code from your package.");
}
});
}
}