// Path: src/main/java/de/flapdoodle/embed/process/config/process/ProcessOutput.java
// @Immutable
// public interface ProcessOutput {
// 
// 	StreamProcessor output();
// 
// 	StreamProcessor error();
// 
// 	StreamProcessor commands();
// 
// 	static ProcessOutput namedConsole(String label) {
// 		return builder()
// 				.output(Processors.namedConsole("["+label+" output]"))
// 				.error(Processors.namedConsole("["+label+" error]"))
// 				.commands(Processors.console())
// 				.build();
// 	}
// 	
// 	static ProcessOutput silent() {
// 		return builder()
// 				.output(Processors.silent())
// 				.error(Processors.silent())
// 				.commands(Processors.silent())
// 				.build();
// 	}
// 
// 	static ProcessOutput named(String label, org.slf4j.Logger logger) {
// 		return builder()
// 				.output(Processors.named("["+label+" output]", Processors.logTo(logger, Slf4jLevel.INFO)))
// 				.error(Processors.named("["+label+" error]", Processors.logTo(logger, Slf4jLevel.ERROR)))
// 				.commands(Processors.logTo(logger, Slf4jLevel.DEBUG))
// 				.build();
// 	}
// 
// 	static ImmutableProcessOutput.Builder builder() {
// 		return ImmutableProcessOutput.builder();
// 	}
// }
// 
// Path: src/main/java/de/flapdoodle/embed/process/runtime/CommandLinePostProcessor.java
// @FunctionalInterface
// public interface CommandLinePostProcessor {
// 	List<String> process(Distribution distribution, List<String> args);
// 	
// 	class Noop implements CommandLinePostProcessor {
// 
// 		@Override
// 		public List<String> process(Distribution distribution, List<String> args) {
// 			return args;
// 		}
// 		
// 	}
// }
// 
// Path: src/main/java/de/flapdoodle/embed/process/store/IArtifactStore.java
// public interface IArtifactStore {
// 
// 	Optional<ExtractedFileSet> extractFileSet(Distribution distribution) throws IOException;
// 
// 	void removeFileSet(Distribution distribution, ExtractedFileSet files);
// }


import org.immutables.value.Value;
import org.immutables.value.Value.Default;
import de.flapdoodle.embed.process.config.process.ProcessOutput;
import de.flapdoodle.embed.process.runtime.CommandLinePostProcessor;
import de.flapdoodle.embed.process.store.IArtifactStore;
/**
 * Copyright (C) 2011
 *   Michael Mosmann <michael@mosmann.de>
 *   Martin Jöhren <m.joehren@googlemail.com>
 *
 * with contributions from
 * 	konstantin-ba@github,
	Archimedes Trajano (trajano@github),
	Kevin D. Keck (kdkeck@github),
	Ben McCann (benmccann@github)
 *
 * 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 de.flapdoodle.embed.process.config;



@Value.Immutable
public interface RuntimeConfig {

	ProcessOutput processOutput();

// Path: src/main/java/de/flapdoodle/embed/process/config/process/ProcessOutput.java
// @Immutable
// public interface ProcessOutput {
// 
// 	StreamProcessor output();
// 
// 	StreamProcessor error();
// 
// 	StreamProcessor commands();
// 
// 	static ProcessOutput namedConsole(String label) {
// 		return builder()
// 				.output(Processors.namedConsole("["+label+" output]"))
// 				.error(Processors.namedConsole("["+label+" error]"))
// 				.commands(Processors.console())
// 				.build();
// 	}
// 	
// 	static ProcessOutput silent() {
// 		return builder()
// 				.output(Processors.silent())
// 				.error(Processors.silent())
// 				.commands(Processors.silent())
// 				.build();
// 	}
// 
// 	static ProcessOutput named(String label, org.slf4j.Logger logger) {
// 		return builder()
// 				.output(Processors.named("["+label+" output]", Processors.logTo(logger, Slf4jLevel.INFO)))
// 				.error(Processors.named("["+label+" error]", Processors.logTo(logger, Slf4jLevel.ERROR)))
// 				.commands(Processors.logTo(logger, Slf4jLevel.DEBUG))
// 				.build();
// 	}
// 
// 	static ImmutableProcessOutput.Builder builder() {
// 		return ImmutableProcessOutput.builder();
// 	}
// }
// 
// Path: src/main/java/de/flapdoodle/embed/process/runtime/CommandLinePostProcessor.java
// @FunctionalInterface
// public interface CommandLinePostProcessor {
// 	List<String> process(Distribution distribution, List<String> args);
// 	
// 	class Noop implements CommandLinePostProcessor {
// 
// 		@Override
// 		public List<String> process(Distribution distribution, List<String> args) {
// 			return args;
// 		}
// 		
// 	}
// }
// 
// Path: src/main/java/de/flapdoodle/embed/process/store/IArtifactStore.java
// public interface IArtifactStore {
// 
// 	Optional<ExtractedFileSet> extractFileSet(Distribution distribution) throws IOException;
// 
// 	void removeFileSet(Distribution distribution, ExtractedFileSet files);
// }


// Path: src/main/java/de/flapdoodle/embed/process/config/RuntimeConfig.java
import org.immutables.value.Value;
import org.immutables.value.Value.Default;
import de.flapdoodle.embed.process.config.process.ProcessOutput;
import de.flapdoodle.embed.process.runtime.CommandLinePostProcessor;
import de.flapdoodle.embed.process.store.IArtifactStore;

/**
 * Copyright (C) 2011
 *   Michael Mosmann <michael@mosmann.de>
 *   Martin Jöhren <m.joehren@googlemail.com>
 *
 * with contributions from
 * 	konstantin-ba@github,
	Archimedes Trajano (trajano@github),
	Kevin D. Keck (kdkeck@github),
	Ben McCann (benmccann@github)
 *
 * 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 de.flapdoodle.embed.process.config;



@Value.Immutable
public interface RuntimeConfig {

	ProcessOutput processOutput();

	@Default