public CakeRunnerFixture(FilePath toolPath = null, bool defaultToolExist = true, bool scriptExist = true) { ScriptPath = "/Working/build.cake"; Process = Substitute.For <IProcess>(); Process.GetExitCode().Returns(0); ProcessRunner = Substitute.For <IProcessRunner>(); ProcessRunner.Start(Arg.Any <FilePath>(), Arg.Any <ProcessSettings>()).Returns(Process); Environment = Substitute.For <ICakeEnvironment>(); Environment.WorkingDirectory = "/Working"; Globber = Substitute.For <IGlobber>(); Globber.Match("./tools/**/Cake.exe").Returns(new[] { (FilePath)"/Working/tools/Cake.exe" }); FileSystem = Substitute.For <IFileSystem>(); FileSystem.Exist(Arg.Is <FilePath>(a => a.FullPath == "/Working/tools/Cake.exe")).Returns(defaultToolExist); FileSystem.Exist(Arg.Is <FilePath>(a => a.FullPath == "/Working/build.cake")).Returns(scriptExist); if (toolPath != null) { FileSystem.Exist(Arg.Is <FilePath>(a => a.FullPath == toolPath.FullPath)).Returns(true); } Settings = new CakeSettings(); }
public static void RunCake(ICakeContext context, string script, CakeSettings settings = null) { var rawArgs = QuoteAwareStringSplitter.Split(GetCommandLine()).Skip(1) // Skip executable. .ToArray(); settings = settings ?? new CakeSettings(); var ar = new InternalArgumentParser(context.Log); var baseOptions = ar.Parse(rawArgs); var mergedOptions = new Dictionary <string, string>(); foreach (var optionsArgument in baseOptions) { if (optionsArgument.Key == "target" || string.IsNullOrEmpty(optionsArgument.Value)) { continue; } mergedOptions[optionsArgument.Key] = optionsArgument.Value; } if (settings.Arguments != null) { foreach (var optionsArgument in settings.Arguments) { if (string.IsNullOrEmpty(optionsArgument.Value)) { mergedOptions.Remove(optionsArgument.Key); continue; } mergedOptions[optionsArgument.Key] = optionsArgument.Value; } } mergedOptions.Remove("script"); settings.Arguments = mergedOptions; script = script ?? "./build.cake"; var cakeRunner = new FixedCakeRunner(context.FileSystem, context.Environment, context.Globber, context.ProcessRunner, context.Tools, context.Log); cakeRunner.ExecuteScript(script, settings); }
public static void RunCake(ICakeContext context, CakeSettings settings = null) { RunCake(context, null, settings); }