diff --git a/js/js.tests/test/org/jetbrains/k2js/test/config/TestConfig.java b/js/js.tests/test/org/jetbrains/k2js/test/config/TestConfig.java index e5e7c66d310..144fa6f49f5 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/config/TestConfig.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/config/TestConfig.java @@ -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; } diff --git a/js/js.translator/src/org/jetbrains/k2js/config/IDEAConfig.java b/js/js.translator/src/org/jetbrains/k2js/config/IDEAConfig.java index cec202f7b62..0b697af7aaa 100644 --- a/js/js.translator/src/org/jetbrains/k2js/config/IDEAConfig.java +++ b/js/js.translator/src/org/jetbrains/k2js/config/IDEAConfig.java @@ -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 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 traverseArchive(@NotNull ZipFile file) throws IOException { + List result = Lists.newArrayList(); + Enumeration 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; } } diff --git a/js/js.translator/src/org/jetbrains/k2js/facade/K2JSTranslator.java b/js/js.translator/src/org/jetbrains/k2js/facade/K2JSTranslator.java index 952aaeba759..a18f5e282be 100644 --- a/js/js.translator/src/org/jetbrains/k2js/facade/K2JSTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/facade/K2JSTranslator.java @@ -52,7 +52,8 @@ public final class K2JSTranslator { public static void translateWithCallToMainAndSaveToFile(@NotNull List 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(); } - }