| // 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. |
| |
| import 'dart:async'; |
| |
| import 'package:path/path.dart' as path; |
| |
| import '../entrypoint.dart'; |
| import '../validator.dart'; |
| |
| /// A validator that checks that a LICENSE-like file exists. |
| class LicenseValidator extends Validator { |
| LicenseValidator(Entrypoint entrypoint) : super(entrypoint); |
| |
| Future validate() { |
| return new Future.sync(() { |
| var licenseLike = new RegExp( |
| r"^(([a-zA-Z0-9]+[-_])?(LICENSE|COPYING)|UNLICENSE)(\..*)?$"); |
| if (entrypoint.root |
| .listFiles(recursive: false, useGitIgnore: true) |
| .map(path.basename) |
| .any(licenseLike.hasMatch)) { |
| return; |
| } |
| |
| errors.add( |
| "You must have a COPYING, LICENSE or UNLICENSE file in the root directory.\n" |
| "An open-source license helps ensure people can legally use your " |
| "code."); |
| }); |
| } |
| } |