Skip to content
This repository has been archived by the owner on Jan 13, 2025. It is now read-only.

Commit

Permalink
[binderator] Fix for POM versions that use properties. (#1273)
Browse files Browse the repository at this point in the history
  • Loading branch information
jpobst authored Sep 13, 2021
1 parent af495b0 commit 643cbc2
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

<PropertyGroup>
<PackageId>Xamarin.AndroidBinderator.Tool</PackageId>
<PackageVersion>0.4.9</PackageVersion>
<PackageVersion>0.5.0</PackageVersion>
<Title>Xamarin Android Binderator</Title>
<PackageDescription>A tool for generating Xamarin.Android Binding projects from Razor templates and Maven Repository data.</PackageDescription>
<PackageProjectUrl>https://go.microsoft.com/fwlink/?linkid=2100525</PackageProjectUrl>
Expand Down
21 changes: 19 additions & 2 deletions Util/Xamarin.AndroidBinderator/Xamarin.AndroidBinderator/Engine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ static List<BindingProjectModel> BuildProjectModels(BindingConfig config, Dictio
if (!ShouldIncludeDependency(config, mavenArtifact, mavenDep, exceptions))
continue;

mavenDep.Version = FixVersion(mavenDep.Version);
mavenDep.Version = FixVersion(mavenDep.Version, mavenProject);

var depMapping = config.MavenArtifacts.FirstOrDefault(
ma => !string.IsNullOrEmpty(ma.Version)
Expand Down Expand Up @@ -477,11 +477,28 @@ static Dictionary<string, string> MergeValues(Dictionary<string, string> dest, D
// VersionRange.Parse cannot handle single number versions that we sometimes see in Maven, like "1".
// Fix them to be "1.0".
// https://github.com/NuGet/Home/issues/10342
static string FixVersion(string version)
static string FixVersion(string version, Project project)
{
if (string.IsNullOrWhiteSpace(version))
return version;

// Handle versions with Properties, like:
// <properties>
// <java.version>1.8</java.version>
// <gson.version>2.8.6</gson.version>
// </properties>
// <dependencies>
// <dependency>
// <groupId>com.google.code.gson</groupId>
// <artifactId>gson</artifactId>
// <version>${gson.version}</version>
// </dependency>
// </dependencies>
if (project?.Properties != null) {
foreach (var prop in project.Properties.Any)
version = version.Replace($"${{{prop.Name.LocalName}}}", prop.Value);
}

if (!version.Contains("."))
version += ".0";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,17 @@ public static async Task Initialize(BindingConfig config)
artifact_mavens.Add((repo, artifact));
}

foreach (var group in artifact_mavens.GroupBy(a => a.Item1))
await group.Key.Refresh(group.Select (g => g.Item2.GroupId).Distinct().ToArray());
foreach (var maven_group in artifact_mavens.GroupBy(a => a.Item1)) {
var maven = maven_group.Key;
var artifacts = maven_group.Select(a => a.Item2);

foreach (var artifact_group in artifacts.GroupBy(a => a.GroupId)) {
var gid = artifact_group.Key;
var artifact_ids = artifact_group.Select(a => a.ArtifactId).ToArray();

await maven.Populate(gid, artifact_ids);
}
}
}

public static MavenRepository GetMavenRepository(BindingConfig config, MavenArtifactConfig artifact)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
</PropertyGroup>

<PropertyGroup>
<PackageVersion>2.2.9</PackageVersion>
<PackageVersion>2.3.0</PackageVersion>
<PackageId>Xamarin.AndroidBinderator</PackageId>
<Title>Xamarin.AndroidBinderator</Title>
<PackageDescription>An engine to generate Xamarin Binding projects from Maven repositories with a JSON config and razor templates.</PackageDescription>
Expand All @@ -23,7 +23,7 @@

<ItemGroup>
<PackageReference Include="RazorLight" Version="2.0.0-beta1" />
<PackageReference Include="MavenNet" Version="2.2.12" />
<PackageReference Include="MavenNet" Version="2.2.13" />
</ItemGroup>

<ItemGroup>
Expand Down

0 comments on commit 643cbc2

Please sign in to comment.