package org.implab.gradle.common.exec;

import java.util.concurrent.CompletableFuture;

import java.io.File;
import java.io.IOException;

/** Interface for a command line execution. */
public interface Executor {
    void argument(String arg);

    void directory(File directory);

    void stdin(RedirectFrom from);

    void stdout(RedirectTo out);

    void stderr(RedirectTo err);
    
    CompletableFuture<Integer> start() throws IOException;

    public static Executor system() {
        return new SystemExec();
    }
}
