Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(171)

Side by Side Diff: lib/src/package.dart

Issue 1310253007: Make pub lish validation gitignore-aware. (Closed) Base URL: git@github.com:dart-lang/pub.git@master
Patch Set: analysis hints Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | lib/src/validator.dart » ('j') | lib/src/validator/executable.dart » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 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 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library pub.package; 5 library pub.package;
6 6
7 import 'dart:io'; 7 import 'dart:io';
8 8
9 import 'package:barback/barback.dart'; 9 import 'package:barback/barback.dart';
10 import 'package:path/path.dart' as p; 10 import 'package:path/path.dart' as p;
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 }).toList(); 88 }).toList();
89 } 89 }
90 90
91 /// Returns the path to the README file at the root of the entrypoint, or null 91 /// Returns the path to the README file at the root of the entrypoint, or null
92 /// if no README file is found. 92 /// if no README file is found.
93 /// 93 ///
94 /// If multiple READMEs are found, this uses the same conventions as 94 /// If multiple READMEs are found, this uses the same conventions as
95 /// pub.dartlang.org for choosing the primary one: the README with the fewest 95 /// pub.dartlang.org for choosing the primary one: the README with the fewest
96 /// extensions that is lexically ordered first is chosen. 96 /// extensions that is lexically ordered first is chosen.
97 String get readmePath { 97 String get readmePath {
98 var readmes = listFiles(recursive: false).map(p.basename). 98 var readmes = listFiles(recursive: false, useGitIgnore: true)
99 where((entry) => entry.contains(_README_REGEXP)); 99 .map(p.basename)
100 .where((entry) => entry.contains(_README_REGEXP));
100 if (readmes.isEmpty) return null; 101 if (readmes.isEmpty) return null;
101 102
102 return p.join(dir, readmes.reduce((readme1, readme2) { 103 return p.join(dir, readmes.reduce((readme1, readme2) {
103 var extensions1 = ".".allMatches(readme1).length; 104 var extensions1 = ".".allMatches(readme1).length;
104 var extensions2 = ".".allMatches(readme2).length; 105 var extensions2 = ".".allMatches(readme2).length;
105 var comparison = extensions1.compareTo(extensions2); 106 var comparison = extensions1.compareTo(extensions2);
106 if (comparison == 0) comparison = readme1.compareTo(readme2); 107 if (comparison == 0) comparison = readme1.compareTo(readme2);
107 return (comparison <= 0) ? readme1 : readme2; 108 return (comparison <= 0) ? readme1 : readme2;
108 })); 109 }));
109 } 110 }
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 static final _WHITELISTED_FILES = const ['.htaccess']; 188 static final _WHITELISTED_FILES = const ['.htaccess'];
188 189
189 /// A set of patterns that match paths to blacklisted files. 190 /// A set of patterns that match paths to blacklisted files.
190 static final _blacklistedFiles = createFileFilter(['pubspec.lock']); 191 static final _blacklistedFiles = createFileFilter(['pubspec.lock']);
191 192
192 /// A set of patterns that match paths to blacklisted directories. 193 /// A set of patterns that match paths to blacklisted directories.
193 static final _blacklistedDirs = createDirectoryFilter(['packages']); 194 static final _blacklistedDirs = createDirectoryFilter(['packages']);
194 195
195 /// Returns a list of files that are considered to be part of this package. 196 /// Returns a list of files that are considered to be part of this package.
196 /// 197 ///
197 /// If this is a Git repository, this will respect .gitignore; otherwise, it
198 /// will return all non-hidden, non-blacklisted files.
199 ///
200 /// If [beneath] is passed, this will only return files beneath that path, 198 /// If [beneath] is passed, this will only return files beneath that path,
201 /// which is expected to be relative to the package's root directory. If 199 /// which is expected to be relative to the package's root directory. If
202 /// [recursive] is true, this will return all files beneath that path; 200 /// [recursive] is true, this will return all files beneath that path;
203 /// otherwise, it will only return files one level beneath it. 201 /// otherwise, it will only return files one level beneath it.
204 /// 202 ///
205 /// If [useGitIgnore] is passed, this will take the .gitignore rules into 203 /// If [useGitIgnore] is passed, this will take the .gitignore rules into
206 /// account if the package's root directory is a Git repository. 204 /// account if the root directory of the package is (or is contained within) a
205 /// Git repository.
207 /// 206 ///
208 /// Note that the returned paths won't always be beneath [dir]. To safely 207 /// Note that the returned paths won't always be beneath [dir]. To safely
209 /// convert them to paths relative to the package root, use [relative]. 208 /// convert them to paths relative to the package root, use [relative].
210 List<String> listFiles({String beneath, bool recursive: true, 209 List<String> listFiles({String beneath, bool recursive: true,
211 bool useGitIgnore: false}) { 210 bool useGitIgnore: false}) {
212 // An in-memory package has no files. 211 // An in-memory package has no files.
213 if (dir == null) return []; 212 if (dir == null) return [];
214 213
215 if (beneath == null) { 214 if (beneath == null) {
216 beneath = dir; 215 beneath = dir;
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 434
436 bool operator ==(other) { 435 bool operator ==(other) {
437 // TODO(rnystrom): We're assuming here that we don't need to delve into the 436 // TODO(rnystrom): We're assuming here that we don't need to delve into the
438 // description. 437 // description.
439 return other is PackageDep && 438 return other is PackageDep &&
440 other.name == name && 439 other.name == name &&
441 other.source == source && 440 other.source == source &&
442 other.constraint == constraint; 441 other.constraint == constraint;
443 } 442 }
444 } 443 }
OLDNEW
« no previous file with comments | « no previous file | lib/src/validator.dart » ('j') | lib/src/validator/executable.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698