package com.prezi.spaghetti.haxe.gradle.internal;
import com.google.common.io.Files;
import org.apache.commons.io.FileUtils;
import org.gradle.api.Action;
import org.gradle.api.file.CopySpec;
import org.gradle.api.internal.file.FileOperations;
import org.gradle.api.logging.Logger;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class CompiledJsCopier {
private FileOperations operations;
private Logger logger;
public CompiledJsCopier(FileOperations operations, Logger logger) {
this.operations = operations;
this.logger = logger;
}
public String copyCompiledJs(final File workDir, final File testApplication, String testApplicationName) {
try {
// Extract Require JS
Properties requireJsProps = new Properties();
InputStream requireJsPropsStream = CompiledJsCopier.class.getResourceAsStream("/META-INF/maven/org.webjars/requirejs/pom.properties");
try {
requireJsProps.load(requireJsPropsStream);
} finally {
requireJsPropsStream.close();
}
logger.debug("Copying test application from {} to {}", testApplication, workDir);
operations.sync(new Action<CopySpec>() {
@Override
public void execute(CopySpec copySpec) {
copySpec.from(testApplication);
copySpec.into(workDir);
}
});
String requireJsVersion = requireJsProps.getProperty("version");
File requireJsFile = new File(workDir, "require.js");
FileUtils.deleteQuietly(requireJsFile);
InputStream requireJsStream = CompiledJsCopier.class.getResourceAsStream("/META-INF/resources/webjars/requirejs/" + requireJsVersion + "/require.js");
try {
Files.asByteSink(requireJsFile).writeFrom(requireJsStream);
} finally {
requireJsStream.close();
}
return testApplicationName;
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
}