All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.pity.bootstrap.injection.TaskRootInjector Maven / Gradle / Ivy

The newest version!
package io.pity.bootstrap.injection;

import com.google.inject.AbstractModule;
import com.google.inject.multibindings.Multibinder;
import io.pity.api.PropertyValueProvider;
import io.pity.api.RootCollectorExecutor;
import io.pity.api.WorkingDirectoryProvider;
import io.pity.api.cli.CliArgumentProvider;
import io.pity.api.reporting.CollectionResults;
import io.pity.api.reporting.ResultCollector;
import io.pity.bootstrap.ResultCollectorImpl;
import io.pity.bootstrap.environment.BootstrapEnvironmentCollector;
import io.pity.bootstrap.environment.BootstrapEnvironmentCollectorImpl;
import io.pity.bootstrap.environment.MainEnvironmentCollectorExecutor;
import io.pity.bootstrap.execution.CommandExecutorRunner;
import io.pity.bootstrap.execution.CommandExecutorRunnerImpl;
import io.pity.bootstrap.execution.MainCommandExecutor;
import io.pity.bootstrap.preprocess.PreProcessorExecutor;
import io.pity.bootstrap.preprocess.PreProcessorExecutorImpl;
import io.pity.bootstrap.provider.WorkingDirectoryProviderImpl;
import io.pity.bootstrap.provider.cli.InternalCliArgumentProvider;
import io.pity.bootstrap.provider.container.CommandExecutorContainer;
import io.pity.bootstrap.provider.container.CommandExecutorContainerImpl;
import io.pity.bootstrap.provider.container.EnvironmentCollectorContainer;
import io.pity.bootstrap.provider.container.EnvironmentCollectorContainerImpl;

import java.io.File;

/**
 * Used to inject the task work.
 */
public class TaskRootInjector extends AbstractModule {

    private final File workingDirectory;
    private final PropertyValueProvider propertyValueProvider;
    private final InternalCliArgumentProvider cliArgumentProvider;

    public TaskRootInjector(PropertyValueProvider propertyValueProvider, InternalCliArgumentProvider cliArgumentProvider) {
        this.workingDirectory = cliArgumentProvider.getTargetDirectory();
        this.propertyValueProvider = propertyValueProvider;
        this.cliArgumentProvider = cliArgumentProvider;
    }

    @Override
    protected void configure() {
        bind(BootstrapEnvironmentCollector.class).to(BootstrapEnvironmentCollectorImpl.class);
        bind(PreProcessorExecutor.class).to(PreProcessorExecutorImpl.class);
        bind(CommandExecutorRunner.class).to(CommandExecutorRunnerImpl.class);
        bind(CommandExecutorContainer.class).to(CommandExecutorContainerImpl.class);
        bind(EnvironmentCollectorContainer.class).to(EnvironmentCollectorContainerImpl.class);

        bind(WorkingDirectoryProvider.class).toInstance(new WorkingDirectoryProviderImpl(workingDirectory));

        bind(PropertyValueProvider.class).toInstance(propertyValueProvider);
        bind(InternalCliArgumentProvider.class).toInstance(cliArgumentProvider);
        bind(CliArgumentProvider.class).toInstance(cliArgumentProvider);

        ResultCollectorImpl reportCollector = new ResultCollectorImpl();
        bind(ResultCollector.class).toInstance(reportCollector);
        bind(CollectionResults.class).toInstance(reportCollector);

        Multibinder envBinder = Multibinder.newSetBinder(binder(), RootCollectorExecutor.class);
        envBinder.addBinding().to(MainEnvironmentCollectorExecutor.class);
        envBinder.addBinding().to(MainCommandExecutor.class);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy