Skip to content

Commit 439cc57

Browse files
author
Stewart Miles
committed
Added directory searching to VersionHandlerImpl.SearchAssetDatabase()
Added directory searching to VersionHandlerImpl.SearchAssetDatabase() so that it's easy to search package manager packages. In addition, moved all uses of AssetDatabase.FindAssets() to use this method which reduces the amount of duplicate code converting asset GUIDs to filenames and checking for existent files. Bug: 135269831, 135273820 Change-Id: I8e4088c7132645e763203d45aa403e7bc73c5d07
1 parent e0dad54 commit 439cc57

File tree

5 files changed

+52
-39
lines changed

5 files changed

+52
-39
lines changed

source/PlayServicesResolver/src/GradleResolver.cs

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -926,14 +926,10 @@ private void FindAndResolveConflicts() {
926926
var managedArtifactFilenames = new HashSet<string>();
927927
foreach (var filename in PlayServicesResolver.FindLabeledAssets()) {
928928
var artifact = getVersionlessArtifactFilename(filename);
929-
// Ignore non-existent files as it's possible for the asset database to reference
930-
// missing files if it hasn't been refreshed or completed a refresh.
931-
if (File.Exists(filename) || Directory.Exists(filename)) {
932-
managedArtifacts[artifact] = filename;
933-
if (artifact.StartsWith("play-services-") ||
934-
artifact.StartsWith("com.google.android.gms.play-services-")) {
935-
managedPlayServicesArtifacts.Add(filename);
936-
}
929+
managedArtifacts[artifact] = filename;
930+
if (artifact.StartsWith("play-services-") ||
931+
artifact.StartsWith("com.google.android.gms.play-services-")) {
932+
managedPlayServicesArtifacts.Add(filename);
937933
}
938934
}
939935
managedArtifactFilenames.UnionWith(managedArtifacts.Values);
@@ -946,16 +942,19 @@ private void FindAndResolveConflicts() {
946942
// List of paths to the legacy google-play-services.jar
947943
var playServicesJars = new List<string>();
948944
const string playServicesJar = "google-play-services.jar";
949-
foreach (var assetGuid in AssetDatabase.FindAssets("t:Object")) {
950-
var filename = AssetDatabase.GUIDToAssetPath(assetGuid);
951-
// Ignore all assets that are managed by the plugin and, since the asset database
952-
// could be stale at this point, check the file exists.
953-
if (!managedArtifactFilenames.Contains(filename) &&
954-
(File.Exists(filename) || Directory.Exists(filename))) {
945+
946+
foreach (var packaging in packagingExtensions) {
947+
foreach (var filename in
948+
VersionHandlerImpl.SearchAssetDatabase(
949+
String.Format("{0} t:Object", packaging), (string filtername) => {
950+
// Ignore all assets that are managed by the plugin and anything
951+
// that doesn't end with the packaging extension.
952+
return !managedArtifactFilenames.Contains(filtername) &&
953+
Path.GetExtension(filtername).ToLower() == packaging;
954+
})) {
955955
if (Path.GetFileName(filename).ToLower() == playServicesJar) {
956956
playServicesJars.Add(filename);
957-
} else if (packagingExtensions.Contains(
958-
Path.GetExtension(filename).ToLower())) {
957+
} else {
959958
var versionlessFilename = getVersionlessArtifactFilename(filename);
960959
List<string> existing;
961960
var unmanaged = unmanagedArtifacts.TryGetValue(

source/PlayServicesResolver/src/PlayServicesResolver.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2128,9 +2128,7 @@ internal static void LabelAssets(IEnumerable<string> assetPaths,
21282128
/// Find the set of assets managed by this plugin.
21292129
/// </summary>
21302130
internal static IEnumerable<string> FindLabeledAssets() {
2131-
foreach (string assetGuid in AssetDatabase.FindAssets("l:" + ManagedAssetLabel)) {
2132-
yield return AssetDatabase.GUIDToAssetPath(assetGuid);
2133-
}
2131+
return VersionHandlerImpl.SearchAssetDatabase("l:" + ManagedAssetLabel);
21342132
}
21352133

21362134
/// <summary>

source/PlayServicesResolver/src/XmlDependencies.cs

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,17 @@ internal class XmlDependencies {
4646
/// </summary>
4747
/// <returns>List of XML dependency filenames in the project.</returns>
4848
private List<string> FindFiles() {
49-
var matchingFiles = new List<string>();
50-
var directoriesToSearch = new List<string>();
51-
foreach (var directory in new [] { "Assets", "Packages"}) {
52-
if (Directory.Exists(directory)) directoriesToSearch.Add(directory);
53-
}
54-
foreach (var assetGuid in AssetDatabase.FindAssets("Dependencies t:TextAsset",
55-
directoriesToSearch.ToArray())) {
56-
var dependencyFile = AssetDatabase.GUIDToAssetPath(assetGuid);
57-
foreach (var regex in fileRegularExpressions) {
58-
if (regex.Match(dependencyFile).Success) {
59-
matchingFiles.Add(dependencyFile);
60-
}
61-
}
62-
}
63-
return matchingFiles;
49+
return new List<string>(
50+
VersionHandlerImpl.SearchAssetDatabase(
51+
"Dependencies t:TextAsset",
52+
(string filename) => {
53+
foreach (var regex in fileRegularExpressions) {
54+
if (regex.Match(filename).Success) {
55+
return true;
56+
}
57+
}
58+
return false;
59+
}, new [] { "Assets", "Packages"}));
6460
}
6561

6662
/// <summary>

source/VersionHandler/src/VersionHandler.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -353,12 +353,16 @@ private static string[] StringArrayFromObject(object obj) {
353353
/// </param>
354354
/// <param name="filter">Optional delegate to filter the returned
355355
/// list.</param>
356+
/// <param name="directories">Directories to search for the assets in the project. Directories
357+
/// that don't exist are ignored.</param>
356358
public static string[] SearchAssetDatabase(string assetsFilter = null,
357-
FilenameFilter filter = null) {
359+
FilenameFilter filter = null,
360+
IEnumerable<string> directories = null) {
358361
return StringArrayFromObject(InvokeImplMethod("SearchAssetDatabase", null,
359362
namedArgs: new Dictionary<string, object> {
360363
{ "assetsFilter", assetsFilter },
361-
{ "filter", filter }
364+
{ "filter", filter },
365+
{ "directories", directories },
362366
}));
363367
}
364368

source/VersionHandlerImpl/src/VersionHandlerImpl.cs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1781,13 +1781,29 @@ public static void UpdateNow() {
17811781
/// </param>
17821782
/// <param name="filter">Optional delegate to filter the returned
17831783
/// list.</param>
1784+
/// <param name="directories">Directories to search for the assets in the project. Directories
1785+
/// that don't exist are ignored.</param>
17841786
public static string[] SearchAssetDatabase(string assetsFilter = null,
1785-
VersionHandler.FilenameFilter filter = null) {
1787+
VersionHandler.FilenameFilter filter = null,
1788+
IEnumerable<string> directories = null) {
17861789
HashSet<string> matchingEntries = new HashSet<string>();
17871790
assetsFilter = assetsFilter != null ? assetsFilter : "t:Object";
1788-
foreach (string assetGuid in AssetDatabase.FindAssets(assetsFilter)) {
1791+
string[] searchDirectories = null;
1792+
if (directories != null) {
1793+
var existingDirectories = new List<string>();
1794+
foreach (string directory in directories) {
1795+
if (Directory.Exists(directory)) existingDirectories.Add(directory);
1796+
}
1797+
if (existingDirectories.Count > 0) searchDirectories = existingDirectories.ToArray();
1798+
}
1799+
var assetGuids = searchDirectories == null ? AssetDatabase.FindAssets(assetsFilter) :
1800+
AssetDatabase.FindAssets(assetsFilter, searchDirectories);
1801+
foreach (string assetGuid in assetGuids) {
17891802
string filename = AssetDatabase.GUIDToAssetPath(assetGuid);
1790-
if (filter == null || filter(filename)) {
1803+
// Ignore non-existent files as it's possible for the asset database to reference
1804+
// missing files if it hasn't been refreshed or completed a refresh.
1805+
if ((File.Exists(filename) || Directory.Exists(filename)) &&
1806+
(filter == null || filter(filename))) {
17911807
matchingEntries.Add(filename);
17921808
}
17931809
}

0 commit comments

Comments
 (0)