Read lib files for IDEA config from zip archive.
This commit is contained in:
@@ -25,7 +25,6 @@ import org.jetbrains.k2js.config.Config;
|
|||||||
import org.jetbrains.k2js.utils.JetFileUtils;
|
import org.jetbrains.k2js.utils.JetFileUtils;
|
||||||
|
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -57,15 +56,16 @@ public final class TestConfig extends Config {
|
|||||||
try {
|
try {
|
||||||
String text = FileUtil.loadTextAndClose(stream);
|
String text = FileUtil.loadTextAndClose(stream);
|
||||||
file = JetFileUtils.createPsiFile(libFileName, text, project);
|
file = JetFileUtils.createPsiFile(libFileName, text, project);
|
||||||
} catch (IOException e) {
|
}
|
||||||
|
catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
libFiles.add(file);
|
libFiles.add(file);
|
||||||
} catch (FileNotFoundException e) {
|
}
|
||||||
//TODO: throw generic expception
|
catch (Exception e) {
|
||||||
|
//TODO: throw generic exception
|
||||||
throw new IllegalStateException(e);
|
throw new IllegalStateException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return libFiles;
|
return libFiles;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,25 +16,66 @@
|
|||||||
|
|
||||||
package org.jetbrains.k2js.config;
|
package org.jetbrains.k2js.config;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
|
import com.intellij.openapi.util.io.FileUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
|
import org.jetbrains.k2js.utils.JetFileUtils;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Enumeration;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.zip.ZipEntry;
|
||||||
|
import java.util.zip.ZipFile;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
*/
|
*/
|
||||||
public final class IDEAConfig extends Config {
|
public final class IDEAConfig extends Config {
|
||||||
|
|
||||||
public IDEAConfig(@NotNull Project project) {
|
@NotNull
|
||||||
|
private final String pathToLibZip;
|
||||||
|
|
||||||
|
public IDEAConfig(@NotNull Project project, @NotNull String pathToLibZip) {
|
||||||
super(project);
|
super(project);
|
||||||
|
this.pathToLibZip = pathToLibZip;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public List<JetFile> getLibFiles() {
|
public List<JetFile> getLibFiles() {
|
||||||
return Collections.emptyList();
|
try {
|
||||||
|
File file = new File(pathToLibZip);
|
||||||
|
ZipFile zipFile = new ZipFile(file);
|
||||||
|
try {
|
||||||
|
return traverseArchive(zipFile);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
zipFile.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private List<JetFile> traverseArchive(@NotNull ZipFile file) throws IOException {
|
||||||
|
List<JetFile> result = Lists.newArrayList();
|
||||||
|
Enumeration<? extends ZipEntry> zipEntries = file.entries();
|
||||||
|
while (zipEntries.hasMoreElements()) {
|
||||||
|
ZipEntry entry = zipEntries.nextElement();
|
||||||
|
if (!entry.isDirectory()) {
|
||||||
|
InputStream stream = file.getInputStream(entry);
|
||||||
|
String text = FileUtil.loadTextAndClose(stream);
|
||||||
|
JetFile jetFile = JetFileUtils.createPsiFile(entry.getName(), text, getProject());
|
||||||
|
result.add(jetFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,8 @@ public final class K2JSTranslator {
|
|||||||
public static void translateWithCallToMainAndSaveToFile(@NotNull List<JetFile> files,
|
public static void translateWithCallToMainAndSaveToFile(@NotNull List<JetFile> files,
|
||||||
@NotNull String outputPath,
|
@NotNull String outputPath,
|
||||||
@NotNull Project project) throws Exception {
|
@NotNull Project project) throws Exception {
|
||||||
K2JSTranslator translator = new K2JSTranslator(new IDEAConfig(project));
|
K2JSTranslator translator = new K2JSTranslator(new IDEAConfig(project,
|
||||||
|
"C:\\Dev\\Projects\\Kotlin\\clean_jet\\js\\js.libraries\\src\\k2jslib.zip"));
|
||||||
String programCode = translator.generateProgramCode(files) + "\n";
|
String programCode = translator.generateProgramCode(files) + "\n";
|
||||||
JetFile fileWithMain = JetMainDetector.getFileWithMain(files);
|
JetFile fileWithMain = JetMainDetector.getFileWithMain(files);
|
||||||
if (fileWithMain == null) {
|
if (fileWithMain == null) {
|
||||||
@@ -62,7 +63,8 @@ public final class K2JSTranslator {
|
|||||||
FileWriter writer = new FileWriter(new File(outputPath));
|
FileWriter writer = new FileWriter(new File(outputPath));
|
||||||
try {
|
try {
|
||||||
writer.write(programCode + callToMain);
|
writer.write(programCode + callToMain);
|
||||||
} finally {
|
}
|
||||||
|
finally {
|
||||||
writer.close();
|
writer.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -109,7 +111,6 @@ public final class K2JSTranslator {
|
|||||||
return Translation.generateAst(bindingContext, AnalyzerFacadeForJS.withJsLibAdded(filesToTranslate, config));
|
return Translation.generateAst(bindingContext, AnalyzerFacadeForJS.withJsLibAdded(filesToTranslate, config));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static String generateCallToMain(@NotNull JetFile file, @NotNull String argumentString) {
|
public static String generateCallToMain(@NotNull JetFile file, @NotNull String argumentString) {
|
||||||
String namespaceName = getNamespaceName(file);
|
String namespaceName = getNamespaceName(file);
|
||||||
@@ -132,5 +133,4 @@ public final class K2JSTranslator {
|
|||||||
private Project getProject() {
|
private Project getProject() {
|
||||||
return config.getProject();
|
return config.getProject();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user