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

Side by Side Diff: utils/pub/io.dart

Issue 14187003: Stop manually handling broken symlinks in listDir in pub. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Re-upload Created 7 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 /// Helper functionality to make working with IO easier. 5 /// Helper functionality to make working with IO easier.
6 library io; 6 library io;
7 7
8 import 'dart:async'; 8 import 'dart:async';
9 import 'dart:io'; 9 import 'dart:io';
10 import 'dart:isolate'; 10 import 'dart:isolate';
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 137
138 // Avoid recursive symlinks. 138 // Avoid recursive symlinks.
139 var resolvedPath = new File(dir).fullPathSync(); 139 var resolvedPath = new File(dir).fullPathSync();
140 if (listedDirectories.contains(resolvedPath)) return []; 140 if (listedDirectories.contains(resolvedPath)) return [];
141 141
142 listedDirectories = new Set<String>.from(listedDirectories); 142 listedDirectories = new Set<String>.from(listedDirectories);
143 listedDirectories.add(resolvedPath); 143 listedDirectories.add(resolvedPath);
144 144
145 log.io("Listing directory $dir."); 145 log.io("Listing directory $dir.");
146 146
147 var children = []; 147 var children = <String>[];
148 for (var entity in new Directory(dir).listSync(followLinks: false)) { 148 for (var entity in new Directory(dir).listSync()) {
149 var entityPath = entity.path; 149 if (!includeHidden && path.basename(entity.path).startsWith('.')) {
150 if (!includeHidden && path.basename(entityPath).startsWith('.')) continue; 150 continue;
151
152 // TODO(nweiz): remove this when issue 9832 is fixed.
153 if (entity is Link) {
154 // We treat broken symlinks as files, in that we don't want to recurse
155 // into them.
156 entity = dirExists(entityPath)
157 ? new Directory(entityPath)
158 : new File(entityPath);
159 } 151 }
160 152
161 if (entity is File) { 153 contents.add(entity.path);
162 contents.add(entityPath); 154 if (entity is Directory) {
163 } else if (entity is Directory) {
164 contents.add(entityPath);
165 // TODO(nweiz): don't manually recurse once issue 4794 is fixed. 155 // TODO(nweiz): don't manually recurse once issue 4794 is fixed.
166 // Note that once we remove the manual recursion, we'll need to 156 // Note that once we remove the manual recursion, we'll need to
167 // explicitly filter out files in hidden directories. 157 // explicitly filter out files in hidden directories.
168 if (recursive) { 158 if (recursive) {
169 children.addAll(doList(entityPath, listedDirectories)); 159 children.addAll(doList(entity.path, listedDirectories));
170 } 160 }
171 } 161 }
172 } 162 }
173 163
174 log.fine("Listed directory $dir:\n${contents.join('\n')}"); 164 log.fine("Listed directory $dir:\n${contents.join('\n')}");
175 contents.addAll(children); 165 contents.addAll(children);
176 return contents; 166 return contents;
177 } 167 }
178 168
179 return doList(dir, new Set<String>()); 169 return doList(dir, new Set<String>());
(...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 const PubProcessResult(this.stdout, this.stderr, this.exitCode); 695 const PubProcessResult(this.stdout, this.stderr, this.exitCode);
706 696
707 bool get success => exitCode == 0; 697 bool get success => exitCode == 0;
708 } 698 }
709 699
710 /// Gets a [Uri] for [uri], which can either already be one, or be a [String]. 700 /// Gets a [Uri] for [uri], which can either already be one, or be a [String].
711 Uri _getUri(uri) { 701 Uri _getUri(uri) {
712 if (uri is Uri) return uri; 702 if (uri is Uri) return uri;
713 return Uri.parse(uri); 703 return Uri.parse(uri);
714 } 704 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698