コード例 #1
0
ファイル: CakeRunnerFixture.cs プロジェクト: stgwilli/cake
        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();
        }
コード例 #2
0
    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);
    }
コード例 #3
0
 public static void RunCake(ICakeContext context, CakeSettings settings = null)
 {
     RunCake(context, null, settings);
 }