@Override
public void build(@NotNull Target target,
@NotNull DirtyFilesHolder<SourceRootDescriptor, Target> holder,
@NotNull BuildOutputConsumer outputConsumer,
@NotNull CompileContext context) throws ProjectBuildException, IOException {
LOGGER.info(target.getPresentableName());
final Set<File> filesToCompile = new THashSet<>(FileUtil.FILE_HASHING_STRATEGY);
holder.processDirtyFiles((target1, file, root) -> {
boolean isAcceptFile = target1.isTests() ? ELIXIR_TEST_SOURCE_FILTER.accept(file) : ELIXIR_SOURCE_FILTER.accept(file);
if (isAcceptFile && ourCompilableModuleTypes.contains(target1.getModule().getModuleType())) {
filesToCompile.add(file);
}
return true;
});
if (filesToCompile.isEmpty() && !holder.hasRemovedFiles()) return;
JpsModule module = target.getModule();
JpsProject project = module.getProject();
CompilerOptions compilerOptions = Extension.getOrCreateExtension(project).getOptions();
if (compilerOptions.useMixCompiler) {
doBuildWithMix(target, context, module, compilerOptions);
} else {
if (!target.isTests()) {
doBuildWithElixirc(target, context, module, compilerOptions, filesToCompile);
}
}
}