// 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 compiled_dartdoc_validator; import 'dart:async'; import '../../../pkg/path/lib/path.dart' as path; import '../entrypoint.dart'; import '../io.dart'; import '../utils.dart'; import '../validator.dart'; /// Validates that a package doesn't contain compiled Dartdoc /// output. class CompiledDartdocValidator extends Validator { CompiledDartdocValidator(Entrypoint entrypoint) : super(entrypoint); Future validate() { return listDir(entrypoint.root.dir, recursive: true).then((entries) { for (var entry in entries) { if (path.basename(entry) != "nav.json") return false; var dir = path.dirname(entry); // Look for tell-tale Dartdoc output files all in the same directory. var files = [ entry, path.join(dir, "index.html"), path.join(dir, "styles.css"), path.join(dir, "dart-logo-small.png"), path.join(dir, "client-live-nav.js") ]; if (files.every((val) => fileExists(val))) { warnings.add("Avoid putting generated documentation in " "${path.relative(dir)}.\n" "Generated documentation bloats the package with redundant " "data."); } } }); } }