| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2015, 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 import 'dart:io'; | |
| 6 | |
| 7 import 'package:analyzer/src/lint/util.dart'; | |
| 8 import 'package:glob/glob.dart'; | |
| 9 import 'package:path/path.dart' as p; | |
| 10 | |
| 11 final dartMatcher = new Glob('**.dart'); | |
| 12 | |
| 13 /// Shared IO sink for standard error reporting. | |
| 14 /// Visible for testing | |
| 15 IOSink errorSink = stderr; | |
| 16 | |
| 17 /// Shared IO sink for standard out reporting. | |
| 18 /// Visible for testing | |
| 19 IOSink outSink = stdout; | |
| 20 | |
| 21 /// Cached project package. | |
| 22 String _projectPackageName; | |
| 23 | |
| 24 /// Cached project root. | |
| 25 String _projectRoot; | |
| 26 | |
| 27 /// Collect all lintable files, recursively, under this [path] root, ignoring | |
| 28 /// links. | |
| 29 Iterable<File> collectFiles(String path) { | |
| 30 List<File> files = []; | |
| 31 | |
| 32 var file = new File(path); | |
| 33 if (file.existsSync()) { | |
| 34 files.add(file); | |
| 35 } else { | |
| 36 var directory = new Directory(path); | |
| 37 if (directory.existsSync()) { | |
| 38 for (var entry | |
| 39 in directory.listSync(recursive: true, followLinks: false)) { | |
| 40 var relative = p.relative(entry.path, from: directory.path); | |
| 41 | |
| 42 if (isLintable(entry) && !isInHiddenDir(relative)) { | |
| 43 files.add(entry); | |
| 44 } | |
| 45 } | |
| 46 } | |
| 47 } | |
| 48 | |
| 49 return files; | |
| 50 } | |
| 51 | |
| 52 /// Returns `true` if this [entry] is a Dart file. | |
| 53 bool isDartFile(FileSystemEntity entry) => isDartFileName(entry.path); | |
| 54 | |
| 55 /// Returns `true` if this relative path is a hidden directory. | |
| 56 bool isInHiddenDir(String relative) => | |
| 57 p.split(relative).any((part) => part.startsWith(".")); | |
| 58 | |
| 59 /// Returns `true` if this relative path is a hidden directory. | |
| 60 bool isLintable(FileSystemEntity file) => | |
| 61 file is File && (isDartFile(file) || isPubspecFile(file)); | |
| 62 | |
| 63 /// Returns `true` if this [entry] is a pubspec file. | |
| 64 bool isPubspecFile(FileSystemEntity entry) => | |
| 65 isPubspecFileName(p.basename(entry.path)); | |
| 66 | |
| 67 /// Synchronously read the contents of the file at the given [path] as a string. | |
| 68 String readFile(String path) => new File(path).readAsStringSync(); | |
| OLD | NEW |