/**
 ********************************************************************************
 * Copyright (c) 2020-2021 Robert Bosch GmbH.
 * 
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 * 
 * SPDX-License-Identifier: EPL-2.0
 * 
 * Contributors:
 *     Robert Bosch GmbH - initial API and implementation
 ********************************************************************************
 */

package org.eclipse.app4mc.slg.linux.artefacts;

import java.util.Properties;

import org.eclipse.app4mc.slg.commons.m2t.CustomObjectsStore;
import org.eclipse.app4mc.slg.commons.m2t.transformers.sw.RunnableTransformer;
import org.eclipse.app4mc.slg.customization.CustomRunnableTransformer;

import com.google.inject.AbstractModule;

public class LinuxGoogleGuiceModule extends AbstractModule {

	protected Properties properties;

	public LinuxGoogleGuiceModule(Properties properties) {
		this.properties = properties;
	}

	@Override
	protected void configure() {
		bind(Properties.class).toInstance(this.properties);
		bind(CustomObjectsStore.class).toInstance(new CustomObjectsStore());

		bind(RunnableTransformer.class).to(CustomRunnableTransformer.class);
	}

}
