blob: deeedad7fcf305ddbe7729690eb11d2b08121a87 [file] [log] [blame]
/*
* Copyright 2018 The Bazel Authors. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.bazel.kotlin.builder;
import dagger.BindsInstance;
import dagger.Component;
import dagger.Provides;
import io.bazel.kotlin.builder.tasks.BazelWorker;
import io.bazel.kotlin.builder.tasks.KotlinBuilder;
import io.bazel.kotlin.builder.tasks.jvm.KotlinJvmTaskExecutor;
import io.bazel.kotlin.builder.toolchain.KotlinToolchain;
import io.bazel.kotlin.builder.utils.KotlinCompilerPluginArgsEncoder;
import javax.inject.Singleton;
import java.io.PrintStream;
@Singleton
@dagger.Component(modules = {KotlinBuilderComponent.Module.class})
public interface KotlinBuilderComponent {
KotlinToolchain toolchain();
KotlinJvmTaskExecutor jvmTaskExecutor();
BazelWorker worker();
@Component.Builder
interface Builder {
@BindsInstance
KotlinBuilderComponent.Builder toolchain(KotlinToolchain toolchain);
KotlinBuilderComponent build();
}
@dagger.Module
class Module {
@Provides
public KotlinCompilerPluginArgsEncoder providePluginArgEncoder(KotlinToolchain toolchain) {
return new KotlinCompilerPluginArgsEncoder(
toolchain.getKapt3Plugin().getJarPath(), toolchain.getKapt3Plugin().getId());
}
@Provides
public PrintStream provideDebugPrintStream() {
return System.err;
}
@Provides
public BazelWorker provideWorker(KotlinBuilder builder) {
return new BazelWorker(builder, System.err, "KotlinCompile");
}
}
}