Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 15 additions & 3 deletions bundle-original/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<artifactId>esbuild-java-bundle-original</artifactId>
<name>Esbuild wrapper for Java bundled with original binaries</name>
<properties>
<esbuild.version>0.23.0</esbuild.version>
<esbuild.version>0.25.9</esbuild.version>
</properties>
<dependencies>
<dependency>
Expand Down Expand Up @@ -64,11 +64,23 @@
<url url="https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-${esbuild.version}.tgz" />
<url url="https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-${esbuild.version}.tgz" />
<url url="https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-${esbuild.version}.tgz" />
<url url="https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-${esbuild.version}.tgz" />
<url url="https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-${esbuild.version}.tgz" />
<url url="https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-${esbuild.version}.tgz" />
<url url="https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-${esbuild.version}.tgz" />
<url url="https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-${esbuild.version}.tgz" />
<url url="https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-${esbuild.version}.tgz" />
</get>
<move file="src/main/resources/darwin-arm64-${esbuild.version}.tgz"
tofile="src/main/resources/macos-arm64-${esbuild.version}.tgz"
failonerror="false"/>
<move file="src/main/resources/darwin-x64-${esbuild.version}.tgz"
tofile="src/main/resources/macos-x64-${esbuild.version}.tgz"
failonerror="false"/>
<move file="src/main/resources/win32-arm64-${esbuild.version}.tgz"
tofile="src/main/resources/windows-arm64-${esbuild.version}.tgz"
failonerror="false"/>
<move file="src/main/resources/win32-x64-${esbuild.version}.tgz"
tofile="src/main/resources/windows-x64-${esbuild.version}.tgz"
failonerror="false"/>
</target>
</configuration>
<goals>
Expand Down
27 changes: 20 additions & 7 deletions bundle-scss/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
<name>Esbuild wrapper for Java bundled with mvnpm scss binaries</name>
<packaging>jar</packaging>
<properties>
<esbuild.mvnpm-build.version>0.0.9</esbuild.mvnpm-build.version>
<esbuild.version>0.23.0-mvnpm-${esbuild.mvnpm-build.version}</esbuild.version>
<esbuild.mvnpm-build.version>0.0.10</esbuild.mvnpm-build.version>
<esbuild.version>0.25.9-mvnpm-${esbuild.mvnpm-build.version}</esbuild.version>
</properties>
<dependencies>
<dependency>
Expand Down Expand Up @@ -63,14 +63,27 @@
<configuration>
<target>
<get dest="src/main/resources" skipexisting="true">
<url url="https://github.com/mvnpm/esbuild/releases/download/v${esbuild.mvnpm-build.version}/esbuild-darwin-arm64-${esbuild.version}.tgz" />
<url url="https://github.com/mvnpm/esbuild/releases/download/v${esbuild.mvnpm-build.version}/esbuild-darwin-x64-${esbuild.version}.tgz" />
<url url="https://github.com/mvnpm/esbuild/releases/download/v${esbuild.mvnpm-build.version}/esbuild-win32-x64-${esbuild.version}.tgz" />
<url url="https://github.com/mvnpm/esbuild/releases/download/v${esbuild.mvnpm-build.version}/esbuild-win32-ia32-${esbuild.version}.tgz" />
<url url="https://github.com/mvnpm/esbuild/releases/download/v${esbuild.mvnpm-build.version}/esbuild-macos-arm64-${esbuild.version}.tgz" />
<url url="https://github.com/mvnpm/esbuild/releases/download/v${esbuild.mvnpm-build.version}/esbuild-macos-x64-${esbuild.version}.tgz" />
<url url="https://github.com/mvnpm/esbuild/releases/download/v${esbuild.mvnpm-build.version}/esbuild-windows-x64-${esbuild.version}.tgz" />
<url url="https://github.com/mvnpm/esbuild/releases/download/v${esbuild.mvnpm-build.version}/esbuild-windows-arm64-${esbuild.version}.tgz" />
<url url="https://github.com/mvnpm/esbuild/releases/download/v${esbuild.mvnpm-build.version}/esbuild-linux-arm64-${esbuild.version}.tgz" />
<url url="https://github.com/mvnpm/esbuild/releases/download/v${esbuild.mvnpm-build.version}/esbuild-linux-x64-${esbuild.version}.tgz" />
<url url="https://github.com/mvnpm/esbuild/releases/download/v${esbuild.mvnpm-build.version}/esbuild-linux-ia32-${esbuild.version}.tgz" />
<url url="https://github.com/mvnpm/esbuild/releases/download/v${esbuild.mvnpm-build.version}/esbuild-linux-arm64-${esbuild.version}.tgz" />

</get>
<move file="src/main/resources/macos-arm64-${esbuild.version}.tgz"
tofile="src/main/resources/darwin-arm64-${esbuild.version}.tgz"
failonerror="false"/>
<move file="src/main/resources/macos-x64-${esbuild.version}.tgz"
tofile="src/main/resources/darwin-x64-${esbuild.version}.tgz"
failonerror="false"/>
<move file="src/main/resources/windows-arm64-${esbuild.version}.tgz"
tofile="src/main/resources/win32-arm64-${esbuild.version}.tgz"
failonerror="false"/>
<move file="src/main/resources/windows-x64-${esbuild.version}.tgz"
tofile="src/main/resources/win32-x64-${esbuild.version}.tgz"
failonerror="false"/>
</target>
</configuration>
<goals>
Expand Down
4 changes: 2 additions & 2 deletions core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@

<description>Small wrapper around esbuild to be able to use it in Java</description>
<properties>
<esbuild.mvnpm-build.version>0.0.9</esbuild.mvnpm-build.version>
<esbuild.version>0.23.0-mvnpm-${esbuild.mvnpm-build.version}</esbuild.version>
<esbuild.mvnpm-build.version>0.0.11</esbuild.mvnpm-build.version>
<esbuild.version>0.25.9-mvnpm-${esbuild.mvnpm-build.version}</esbuild.version>
</properties>

<dependencies>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package io.mvnpm.esbuild.resolve;

import static io.mvnpm.esbuild.resolve.Resolvers.*;
import static io.mvnpm.esbuild.resolve.Resolvers.CLASSIFIER;
import static io.mvnpm.esbuild.resolve.Resolvers.createDestination;
import static io.mvnpm.esbuild.resolve.Resolvers.extract;
import static io.mvnpm.esbuild.resolve.Resolvers.getTgzPath;
import static io.mvnpm.esbuild.resolve.Resolvers.requireExecutablePath;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
Expand All @@ -31,7 +34,7 @@ public Path resolve(String version) throws IOException {
try {
downloadFile(new URL(url), tarFile);
} catch (IOException e) {
throw new UncheckedIOException("could not download esbuild with version " + version, e);
throw new EsbuildResolutionException("could not download esbuild with version " + version, e);
}
try {
final File file = destination.toFile();
Expand All @@ -40,7 +43,7 @@ public Path resolve(String version) throws IOException {
return requireExecutablePath(extracted);
} catch (IOException e) {
Files.deleteIfExists(tarFile);
throw new UncheckedIOException("could not resolve esbuild with version " + version, e);
throw new EsbuildResolutionException("could not resolve esbuild with version " + version, e);
}
}

Expand All @@ -62,7 +65,7 @@ private String getDownloadUrl(String version) {
if (version.contains("mvnpm")) {
return MVNPM_URL_TEMPLATE.formatted(version.substring(version.lastIndexOf("-") + 1)) + tgz;
}
return ESBUILD_URL_TEMPLATE.formatted(CLASSIFIER) + tgz;
return (ESBUILD_URL_TEMPLATE.formatted(CLASSIFIER) + tgz).replace("windows", "win32").replace("macos", "darwin");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package io.mvnpm.esbuild.resolve;

public class EsbuildResolutionException extends RuntimeException {
public EsbuildResolutionException(String message) {
super(message);
}

public EsbuildResolutionException(String message, Throwable cause) {
super(message, cause);
}
}
49 changes: 36 additions & 13 deletions core/src/main/java/io/mvnpm/esbuild/resolve/Resolvers.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
import org.apache.commons.io.FileUtils;

final class Resolvers {
private static final Logger logger = Logger.getLogger(Resolvers.class.getName());
Expand All @@ -39,10 +40,29 @@ static Path resolveExecutablePath(Path bundleDir) {
return bundleDir.resolve(isWindows() ? path + ".exe" : path);
}

static Path requireExecutablePath(Path bundleDir) throws IOException {
static Path resolveSassExecutablePath(Path bundleDir) {
String path = "dart-sass/sass";
return bundleDir.resolve(isWindows() ? path + ".bat" : path);
}

static Path getExecutablePath(Path bundleDir) throws IOException {
final Path path = resolveExecutablePath(bundleDir);
if (!Files.isExecutable(path)) {
throw new IOException("Invalid esbuild executable: " + path);
return null;
}
if (bundleDir.toString().contains("-mvnpm-")) {
// check for scss
if (!Files.isExecutable(resolveSassExecutablePath(bundleDir))) {
return null;
}
}
return path;
}

static Path requireExecutablePath(Path bundleDir) throws IOException {
final Path path = getExecutablePath(bundleDir);
if (path == null) {
throw new IOException("Invalid esbuild executable in: " + bundleDir);
}
return path;
}
Expand All @@ -63,27 +83,29 @@ private static boolean isWindows() {
private static String determineClassifier() {
final String osName = System.getProperty("os.name").toLowerCase();
final String osArch = System.getProperty("os.arch").toLowerCase();
String classifier;

String classifier = null;
if (osName.contains("mac")) {
if (osArch.equals("aarch64") || osArch.contains("arm")) {
classifier = "darwin-arm64";
classifier = "macos-arm64";
} else {
classifier = "darwin-x64";
classifier = "macos-x64";
}
} else if (osName.contains("win")) {
classifier = osArch.contains("64") ? "win32-x64" : "win32-ia32";
if (osArch.equals("aarch64") || osArch.equals("arm64")) {
classifier = "windows-arm64";
} else if (osArch.contains("64")) {
classifier = "windows-x64";
}
} else {
if (osArch.equals("aarch64") || osArch.equals("arm64")) {
classifier = "linux-arm64";
} else if (osArch.contains("arm")) {
classifier = "linux-arm";
} else if (osArch.contains("64")) {
classifier = "linux-x64";
} else {
classifier = "linux-ia32";
}
}
if (classifier == null) {
throw new EsbuildResolutionException("Incompatible os: '%s' and arch: '%s' for esbuild".formatted(osName, osArch));
}
return classifier;
}

Expand All @@ -93,9 +115,10 @@ static Path extract(InputStream archive, String destination) throws IOException
}

static Path extract(InputStream archive, File destination) throws IOException {
if (!destination.exists()) {
destination.mkdirs();
if (destination.isDirectory() && destination.exists()) {
FileUtils.deleteDirectory(destination);
}
destination.mkdirs();

try (GzipCompressorInputStream gzipIn = new GzipCompressorInputStream(archive);
TarArchiveInputStream tarIn = new TarArchiveInputStream(gzipIn)) {
Expand Down
Loading