Read lib files for IDEA config from zip archive.

This commit is contained in:
Pavel V. Talanov
2012-04-04 16:08:11 +04:00
parent 5ffbc87b3f
commit 973c6f8d85
3 changed files with 52 additions and 11 deletions
@@ -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();
}
}