Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/NuGet.BuildTasks.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Malinowski <jason.malinowski@microsoft.com>2016-01-15 00:01:19 +0300
committerJason Malinowski <jason.malinowski@microsoft.com>2016-01-15 00:01:19 +0300
commit6d5532276ed05781421e33572bc7602d4c7b7f2d (patch)
tree26781cdc5a0920994a0f8614ead208644ae55564
parent935352cdd96162be0b3bb861e025c8df335eb2f2 (diff)
Use the locale information from NuGet to figure out TargetPaths
The project.lock.json provides, for resource items, the culture which was pulled out of the path in the NuGet package. We can use this to construct target paths rather than re-figuring it out ourselves.
-rw-r--r--src/Microsoft.NuGet.Build.Tasks/CultureStringUtilities.cs46
-rw-r--r--src/Microsoft.NuGet.Build.Tasks/Microsoft.NuGet.Build.Tasks.csproj1
-rw-r--r--src/Microsoft.NuGet.Build.Tasks/ResolveNuGetPackageAssets.cs31
3 files changed, 10 insertions, 68 deletions
diff --git a/src/Microsoft.NuGet.Build.Tasks/CultureStringUtilities.cs b/src/Microsoft.NuGet.Build.Tasks/CultureStringUtilities.cs
deleted file mode 100644
index d8a2447..0000000
--- a/src/Microsoft.NuGet.Build.Tasks/CultureStringUtilities.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-using System;
-using System.Globalization;
-
-namespace Microsoft.NuGet.Build.Tasks
-{
- internal class CultureStringUtilities
- {
- static private Lazy<string[]> cultureInfoStringsLazy = new Lazy<string[]>(GetCultureInfoArray);
- static private string[] cultureInfoStrings => cultureInfoStringsLazy.Value;
-
- internal static bool IsValidCultureString(string cultureString)
- {
- // Note, it does not matter what kind of comparer we use as long as the comparer
- // for Array.Sort() [see PopulateCultureInfoArray()] and Array.BinarySearch() is
- // the same.
- bool valid = true;
-
- if (Array.BinarySearch(cultureInfoStrings, cultureString, StringComparer.OrdinalIgnoreCase) < 0)
- {
- valid = false;
- }
-
- return valid;
- }
-
- private static string[] GetCultureInfoArray()
- {
- CultureInfo[] cultureInfos = CultureInfo.GetCultures(CultureTypes.AllCultures);
-
- var cultureInfoArray = new string[cultureInfos.Length];
- for (int i = 0; i < cultureInfos.Length; i++)
- {
- cultureInfoArray[i] = cultureInfos[i].Name;
- }
-
- // Note, it does not matter what kind of comparer we use as long as the comparer
- // for Array.BinarySearch() [see ValidateCultureInfoString()] and Array.Sort() is
- // the same.
- Array.Sort(cultureInfoArray, StringComparer.OrdinalIgnoreCase);
- return cultureInfoArray;
- }
- }
-} \ No newline at end of file
diff --git a/src/Microsoft.NuGet.Build.Tasks/Microsoft.NuGet.Build.Tasks.csproj b/src/Microsoft.NuGet.Build.Tasks/Microsoft.NuGet.Build.Tasks.csproj
index a7be6e4..163ddec 100644
--- a/src/Microsoft.NuGet.Build.Tasks/Microsoft.NuGet.Build.Tasks.csproj
+++ b/src/Microsoft.NuGet.Build.Tasks/Microsoft.NuGet.Build.Tasks.csproj
@@ -41,7 +41,6 @@
<Reference Include="Microsoft.CSharp" />
</ItemGroup>
<ItemGroup>
- <Compile Include="CultureStringUtilities.cs" />
<Compile Include="Delegates.cs" />
<Compile Include="ExceptionFromResource.cs" />
<Compile Include="InternalsVisibleTo.cs" />
diff --git a/src/Microsoft.NuGet.Build.Tasks/ResolveNuGetPackageAssets.cs b/src/Microsoft.NuGet.Build.Tasks/ResolveNuGetPackageAssets.cs
index 0e278fe..8538ea6 100644
--- a/src/Microsoft.NuGet.Build.Tasks/ResolveNuGetPackageAssets.cs
+++ b/src/Microsoft.NuGet.Build.Tasks/ResolveNuGetPackageAssets.cs
@@ -719,17 +719,22 @@ namespace Microsoft.NuGet.Build.Tasks
return items;
}
- foreach (string file in values.Properties().Select(p => p.Name))
+ foreach (var file in values.Properties())
{
- if (Path.GetFileName(file) == "_._")
+ if (Path.GetFileName(file.Name) == "_._")
{
continue;
}
- var sanitizedFile = file.Replace('/', '\\');
- string targetPath = TryGetTargetPath(sanitizedFile);
+ string targetPath = null;
+ string culture = file.Value["locale"]?.ToString();
- var item = CreateItem(package, package.GetFullPathToFile(file), targetPath);
+ if (culture != null)
+ {
+ targetPath = Path.Combine(culture, Path.GetFileName(file.Name));
+ }
+
+ var item = CreateItem(package, package.GetFullPathToFile(file.Name), targetPath);
item.SetMetadata("Private", "false");
@@ -761,22 +766,6 @@ namespace Microsoft.NuGet.Build.Tasks
return item;
}
- private static string TryGetTargetPath(string file)
- {
- var foldersAndFile = file.Split('\\').ToArray();
-
- for (int i = foldersAndFile.Length - 1; i > -1; i--)
- {
- if (CultureStringUtilities.IsValidCultureString(foldersAndFile[i]))
- {
- return Path.Combine(foldersAndFile.Skip(i).ToArray());
- }
- }
-
- // There is no culture-specific directory, so it'll go in the root
- return null;
- }
-
private void GetReferencedPackages(JObject lockFile)
{
var projectFileDependencyGroups = (JObject)lockFile["projectFileDependencyGroups"];