JS backend: LibrarySourcesConfig accepts source dir as source.

Idea send files in any case, but for easy debug run configurations we want to specify only source dir.

(cherry picked from commit e194435)
This commit is contained in:
develar
2013-09-17 23:04:16 +04:00
committed by Zalim Bashorov
parent 6c40cf371e
commit da68540ade
8 changed files with 64 additions and 108 deletions
@@ -35,14 +35,10 @@ import org.jetbrains.k2js.test.config.TestConfigFactory;
import org.jetbrains.k2js.utils.JetFileUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.ref.SoftReference;
import java.util.List;
import static org.jetbrains.k2js.utils.JetFileUtils.createPsiFileList;
//TODO: use method object
public final class TranslationUtils {
@@ -103,14 +99,14 @@ public final class TranslationUtils {
@NotNull String outputFile,
@NotNull MainCallParameters mainCallParameters,
@NotNull EcmaVersion version, TestConfigFactory configFactory) throws Exception {
List<JetFile> psiFiles = createPsiFileList(inputFiles, project);
List<JetFile> jetFiles = createJetFileList(project, inputFiles, null);
K2JSTranslator translator = new K2JSTranslator(getConfig(project, version, configFactory));
FileUtil.writeToFile(new File(outputFile), translator.generateProgramCode(psiFiles, mainCallParameters));
FileUtil.writeToFile(new File(outputFile), translator.generateProgramCode(jetFiles, mainCallParameters));
}
@NotNull
private static List<JetFile> initLibFiles(@NotNull Project project) {
return getLibFiles(project, Config.LIB_FILE_NAMES);
return createJetFileList(project, Config.LIB_FILE_NAMES, Config.LIBRARIES_LOCATION);
}
@NotNull
@@ -124,28 +120,21 @@ public final class TranslationUtils {
return result;
}
@NotNull
private static List<JetFile> getLibFiles(@NotNull Project project, @NotNull List<String> list) {
private static List<JetFile> createJetFileList(@NotNull Project project, @NotNull List<String> list, @Nullable String root) {
List<JetFile> libFiles = Lists.newArrayList();
for (String libFileName : list) {
JetFile file = null;
try {
@SuppressWarnings("IOResourceOpenedButNotSafelyClosed")
InputStream stream = new FileInputStream(Config.LIBRARIES_LOCATION + libFileName);
try {
String text = FileUtil.loadTextAndClose(stream);
file = JetFileUtils.createPsiFile(libFileName, text, project);
}
catch (IOException e) {
e.printStackTrace();
}
libFiles.add(file);
String path = root == null ? libFileName : (root + libFileName);
String text = FileUtil.loadFile(new File(path));
JetFile jetFile = JetFileUtils.createJetFile(path, text, project);
libFiles.add(jetFile);
}
catch (Exception e) {
catch (IOException e) {
//TODO: throw generic exception
throw new IllegalStateException(e);
}
}
return libFiles;
}
}