module exec.iexecprovider;

import std.typecons: Tuple;

alias Package = Tuple!(string, "name", string, "version_");

/++
	Interface for exec providers that take source code
	and output the compiled program's output.
+/
interface IExecProvider
{
	struct RunInput
	{
		string source;
		string compiler = "dmd";
		string args;
		string runtimeArgs;
		string stdin;
		bool color;
	}
	Tuple!(string, "output", bool, "success") compileAndExecute(RunInput input);


	// returns a list of all installed DUB packages
	Package[] installedPackages();
}