Skip to content

Commit 41ecce0

Browse files
authored
Handle partial jar paths, fixes #19 (#23)
1 parent 375c6b5 commit 41ecce0

2 files changed

Lines changed: 22 additions & 10 deletions

File tree

src/main/java/cpw/mods/jarhandling/JarMetadata.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,17 +57,20 @@ static SimpleJarMetadata fromFileName(final Path path, final Set<String> pkgs, f
5757
if (versionMaybe != null)
5858
{
5959
Path artifactMaybe = versionMaybe.getParent();
60-
if (artifactMaybe != null && path.getFileName().toString().startsWith(artifactMaybe.getFileName().toString() + "-" + versionMaybe.getFileName().toString()))
60+
if (artifactMaybe != null)
6161
{
62-
var name = artifactMaybe.getFileName().toString();
63-
var ver = versionMaybe.getFileName().toString();
64-
var mat = MODULE_VERSION.matcher(ver);
65-
if (mat.find()) {
66-
ver = ModuleDescriptor.Version.parse(ver.substring(mat.start())).toString();
67-
return new SimpleJarMetadata(cleanModuleName(name), ver, pkgs, providers);
68-
} else {
69-
return new SimpleJarMetadata(cleanModuleName(name), null, pkgs, providers);
70-
}
62+
Path artifactNameMaybe = artifactMaybe.getFileName();
63+
if (artifactNameMaybe != null && path.getFileName().toString().startsWith(artifactNameMaybe + "-" + versionMaybe.getFileName().toString())) {
64+
var name = artifactMaybe.getFileName().toString();
65+
var ver = versionMaybe.getFileName().toString();
66+
var mat = MODULE_VERSION.matcher(ver);
67+
if (mat.find()) {
68+
ver = ModuleDescriptor.Version.parse(ver.substring(mat.start())).toString();
69+
return new SimpleJarMetadata(cleanModuleName(name), ver, pkgs, providers);
70+
} else {
71+
return new SimpleJarMetadata(cleanModuleName(name), null, pkgs, providers);
72+
}
73+
}
7174
}
7275
}
7376

src/test/java/cpw/mods/jarhandling/impl/TestMetadata.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,15 @@ void testMavenJar()
1818
Assertions.assertEquals("_new._protected._class._1._16._5", meta.name());
1919
Assertions.assertEquals("1.1_mapped_official_1.17.1", meta.version());
2020
}
21+
22+
@Test
23+
void testRootStart()
24+
{
25+
var path = Paths.get("/instance/mods/1life-1.5.jar");
26+
var meta = JarMetadata.fromFileName(path, new HashSet<>(), new ArrayList<>());
27+
Assertions.assertEquals("_1life", meta.name());
28+
Assertions.assertEquals("1.5", meta.version());
29+
}
2130

2231
@Test
2332
void testNumberStart()

0 commit comments

Comments
 (0)