// arguments
string target = Argument("target", "Default");
string configuration = Argument("configuration", "Release");

// define directories.
ConvertableFilePath mainSln = File("./src/Example.sln");
ConvertableDirectoryPath buildDir = Directory("./src/Example/bin") + Directory(configuration);

// tasks
Task("Clean")
	.Does(() =>
{
	CleanDirectory(buildDir);
});

Task("Restore-NuGet-Packages")
	.IsDependentOn("Clean")
	.Does(() =>
{
	NuGetRestore(mainSln);
});

Task("Build")
	.IsDependentOn("Restore-NuGet-Packages")
	.Does(() =>
{
	if(IsRunningOnWindows())
	{
	  // Use MSBuild
	  MSBuild(mainSln, settings => settings.SetConfiguration(configuration));
	}
	else
	{
	  // Use XBuild
	  XBuild(mainSln, settings => settings.SetConfiguration(configuration));
	}
});

// task targets
Task("Default")
	.IsDependentOn("Build");

// execution
RunTarget(target);