package org.elixir_lang.exunit; import com.intellij.openapi.util.io.FileUtil; import com.intellij.util.ResourceUtil; import com.intellij.util.io.URLUtil; import org.jetbrains.annotations.NotNull; import java.io.*; import java.net.URL; public class ElixirModules { private static final String FORMATTER_FILE_NAME = "team_city_ex_unit_formatter.ex"; private static final String MIX_TASK_FILE_NAME = "test_with_formatter.ex"; private ElixirModules() { } private static File putFile(@NotNull String fileName, @NotNull File directory) throws IOException { URL moduleUrl = ResourceUtil.getResource(ElixirModules.class, "/exunit", fileName); if (moduleUrl == null) { throw new IOException("Failed to locate Elixir module " + fileName); } BufferedInputStream inputStream = new BufferedInputStream(URLUtil.openStream(moduleUrl)); File file = new File(directory, fileName); BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(file)); try { FileUtil.copy(inputStream, outputStream); return file; } finally { inputStream.close(); outputStream.close(); } } public static File putFormatterTo(@NotNull File directory) throws IOException { return putFile(FORMATTER_FILE_NAME, directory); } public static File putMixTaskTo(@NotNull File directory) throws IOException { return putFile(MIX_TASK_FILE_NAME, directory); } }