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 java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
@@ -57,15 +56,16 @@ public final class TestConfig extends Config {
|
||||
try {
|
||||
String text = FileUtil.loadTextAndClose(stream);
|
||||
file = JetFileUtils.createPsiFile(libFileName, text, project);
|
||||
} catch (IOException e) {
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
libFiles.add(file);
|
||||
} catch (FileNotFoundException e) {
|
||||
//TODO: throw generic expception
|
||||
}
|
||||
catch (Exception e) {
|
||||
//TODO: throw generic exception
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
|
||||
}
|
||||
return libFiles;
|
||||
}
|
||||
|
||||
@@ -16,25 +16,66 @@
|
||||
|
||||
package org.jetbrains.k2js.config;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
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.Enumeration;
|
||||
import java.util.List;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipFile;
|
||||
|
||||
/**
|
||||
* @author Pavel Talanov
|
||||
*/
|
||||
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);
|
||||
this.pathToLibZip = pathToLibZip;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
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,
|
||||
@NotNull String outputPath,
|
||||
@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";
|
||||
JetFile fileWithMain = JetMainDetector.getFileWithMain(files);
|
||||
if (fileWithMain == null) {
|
||||
@@ -62,7 +63,8 @@ public final class K2JSTranslator {
|
||||
FileWriter writer = new FileWriter(new File(outputPath));
|
||||
try {
|
||||
writer.write(programCode + callToMain);
|
||||
} finally {
|
||||
}
|
||||
finally {
|
||||
writer.close();
|
||||
}
|
||||
}
|
||||
@@ -109,7 +111,6 @@ public final class K2JSTranslator {
|
||||
return Translation.generateAst(bindingContext, AnalyzerFacadeForJS.withJsLibAdded(filesToTranslate, config));
|
||||
}
|
||||
|
||||
|
||||
@NotNull
|
||||
public static String generateCallToMain(@NotNull JetFile file, @NotNull String argumentString) {
|
||||
String namespaceName = getNamespaceName(file);
|
||||
@@ -132,5 +133,4 @@ public final class K2JSTranslator {
|
||||
private Project getProject() {
|
||||
return config.getProject();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user