OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 context.directory.manager; | 5 library context.directory.manager; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:collection'; | 8 import 'dart:collection'; |
9 import 'dart:convert'; | 9 import 'dart:convert'; |
10 import 'dart:core' hide Resource; | 10 import 'dart:core' hide Resource; |
(...skipping 992 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1003 _instrumentationService.logWatchEvent( | 1003 _instrumentationService.logWatchEvent( |
1004 info.folder.path, event.path, event.type.toString()); | 1004 info.folder.path, event.path, event.type.toString()); |
1005 String path = event.path; | 1005 String path = event.path; |
1006 // First handle changes that affect folderDisposition (since these need to | 1006 // First handle changes that affect folderDisposition (since these need to |
1007 // be processed regardless of whether they are part of an excluded/ignored | 1007 // be processed regardless of whether they are part of an excluded/ignored |
1008 // path). | 1008 // path). |
1009 if (info.hasDependency(path)) { | 1009 if (info.hasDependency(path)) { |
1010 _recomputeFolderDisposition(info); | 1010 _recomputeFolderDisposition(info); |
1011 } | 1011 } |
1012 // maybe excluded globally | 1012 // maybe excluded globally |
1013 if (_isExcluded(path)) { | 1013 if (_isExcluded(path) || _isContainedInDotFolder(info.folder.path, path)) { |
1014 return; | 1014 return; |
1015 } | 1015 } |
1016 // maybe excluded from the context, so other context will handle it | 1016 // maybe excluded from the context, so other context will handle it |
1017 if (info.excludes(path)) { | 1017 if (info.excludes(path)) { |
1018 return; | 1018 return; |
1019 } | 1019 } |
1020 if (info.ignored(path)) { | 1020 if (info.ignored(path)) { |
1021 return; | 1021 return; |
1022 } | 1022 } |
1023 // handle the change | 1023 // handle the change |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1139 callbacks.applyChangesToContext(info.folder, changeSet); | 1139 callbacks.applyChangesToContext(info.folder, changeSet); |
1140 } | 1140 } |
1141 break; | 1141 break; |
1142 } | 1142 } |
1143 | 1143 |
1144 //TODO(pquitslund): find the right place for this | 1144 //TODO(pquitslund): find the right place for this |
1145 _checkForPackagespecUpdate(path, info, info.folder); | 1145 _checkForPackagespecUpdate(path, info, info.folder); |
1146 } | 1146 } |
1147 | 1147 |
1148 /** | 1148 /** |
| 1149 * Determine whether the given [path], when interpreted relative to the |
| 1150 * context root [root], contains a folder whose name starts with '.'. |
| 1151 */ |
| 1152 bool _isContainedInDotFolder(String root, String path) { |
| 1153 String relativePath = |
| 1154 pathContext.relative(pathContext.dirname(path), from: root); |
| 1155 for (String pathComponent in pathContext.split(relativePath)) { |
| 1156 if (pathComponent.startsWith('.') && |
| 1157 pathComponent != '.' && |
| 1158 pathComponent != '..') { |
| 1159 return true; |
| 1160 } |
| 1161 } |
| 1162 return false; |
| 1163 } |
| 1164 |
| 1165 /** |
1149 * Returns `true` if the given [path] is excluded by [excludedPaths]. | 1166 * Returns `true` if the given [path] is excluded by [excludedPaths]. |
1150 */ | 1167 */ |
1151 bool _isExcluded(String path) => _isExcludedBy(excludedPaths, path); | 1168 bool _isExcluded(String path) => _isExcludedBy(excludedPaths, path); |
1152 | 1169 |
1153 /** | 1170 /** |
1154 * Returns `true` if the given [path] is excluded by [excludedPaths]. | 1171 * Returns `true` if the given [path] is excluded by [excludedPaths]. |
1155 */ | 1172 */ |
1156 bool _isExcludedBy(List<String> excludedPaths, String path) { | 1173 bool _isExcludedBy(List<String> excludedPaths, String path) { |
1157 return excludedPaths.any((excludedPath) { | 1174 return excludedPaths.any((excludedPath) { |
1158 if (pathContext.isWithin(excludedPath, path)) { | 1175 if (pathContext.isWithin(excludedPath, path)) { |
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1404 var path = resourceProvider.pathContext.fromUri(uri); | 1421 var path = resourceProvider.pathContext.fromUri(uri); |
1405 packageMap[name] = <Folder>[resourceProvider.getFolder(path)]; | 1422 packageMap[name] = <Folder>[resourceProvider.getFolder(path)]; |
1406 } | 1423 } |
1407 }); | 1424 }); |
1408 return <UriResolver>[new SdkExtUriResolver(packageMap)]; | 1425 return <UriResolver>[new SdkExtUriResolver(packageMap)]; |
1409 } else { | 1426 } else { |
1410 return const <UriResolver>[]; | 1427 return const <UriResolver>[]; |
1411 } | 1428 } |
1412 } | 1429 } |
1413 } | 1430 } |
OLD | NEW |