@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 { // elixirc can not compile tests now. if (!target.isTests()) { doBuildWithElixirc(target, context, module, compilerOptions, filesToCompile); } } }
@Override public void build(@NotNull MonkeyBuildTarget target, @NotNull DirtyFilesHolder<MonkeySourceRootDescriptor, MonkeyBuildTarget> holder, @NotNull BuildOutputConsumer outputConsumer, @NotNull CompileContext context) throws ProjectBuildException, IOException { LOG.debug(target.getPresentableName()); // TODO(mliia): after for-production is built, for-tests says files are not dirty if (!target.isTests() && !holder.hasDirtyFiles() && !holder.hasRemovedFiles()) { return; } JpsModule jpsModule = target.getModule(); if (jpsModule.getModuleType() != JpsMonkeyModuleType.INSTANCE) return; JpsTypedModule<JpsSimpleElement<JpsMonkeyModuleProperties>> module = jpsModule.asTyped(JpsMonkeyModuleType.INSTANCE); assert module != null; JpsMonkeyModuleProperties monkeyModuleProperties = getModuleProperties(target); JpsSdk<JpsDummyElement> sdk = getSdk(context, jpsModule); JpsMonkeySdkType.SdkVersion sdkVersion = JpsMonkeySdkType.getSdkVersion(sdk); if (target.isTests() && !JpsMonkeySdkType.hasUnitTestsSupport(sdkVersion)) { return; } for (String contentRootUrl : jpsModule.getContentRootsList().getUrls()) { String outputPrg = buildPrgForSimulator(target, context, contentRootUrl, sdk, false, monkeyModuleProperties); File outputPrgFile = new File(outputPrg); Set<String> sourcePaths = Collections.singleton(contentRootUrl); outputConsumer.registerOutputFile(outputPrgFile, sourcePaths); } }