コード例 #1
0
 public BridgeScriptHost(ICakeEngine engine, ICakeContext context, IExecutionStrategy strategy, ICakeReportPrinter reporter, ICakeArguments arguments)
     : base(engine, context)
 {
     Strategy  = strategy;
     Reporter  = reporter;
     Arguments = arguments;
 }
コード例 #2
0
        public void Setup()
        {
            _settings = new GraphiteSettings()
            {
                Host            = "192.0.2.0",
                HttpApiPort     = 10,
                BatchSize       = 500,
                ThrowExceptions = true
            };
            _log           = new FakeLog();
            _configuration = new FakeConfiguration();
            _environment   = new FakeEnvironment(PlatformFamily.Windows)
            {
                WorkingDirectory = new DirectoryPath(Environment.CurrentDirectory)
            };
            _fileSystem = new FakeFileSystem(_environment);
            _globber    = new Globber(_fileSystem, _environment);

            var mockArguments = new Mock <ICakeArguments>();

            mockArguments.Setup(x => x.GetArgument(It.IsAny <string>())).Returns(string.Empty);
            mockArguments.Setup(x => x.HasArgument(It.IsAny <string>())).Returns(false);
            _arguments = mockArguments.Object;

            _toolLocator   = new ToolLocator(_environment, new ToolRepository(_environment), new ToolResolutionStrategy(_fileSystem, _environment, _globber, _configuration));
            _processRunner = new ProcessRunner(_fileSystem, _environment, _log, _toolLocator, _configuration);

            var mockDataService = new Mock <ICakeDataService>();

            mockDataService.Setup(x => x.Add(It.IsAny <string>()));
            _dataService = mockDataService.Object;

            _context = new CakeContext(_fileSystem, _environment, _globber, _log, _arguments, _processRunner, new WindowsRegistry(), _toolLocator, _dataService, _configuration);
        }
コード例 #3
0
ファイル: CakeEngine.cs プロジェクト: sjmcallister/cake
 /// <summary>
 /// Initializes a new instance of the <see cref="CakeEngine"/> class.
 /// </summary>
 /// <param name="fileSystem">The file system.</param>
 /// <param name="environment">The environment.</param>
 /// <param name="log">The log.</param>
 /// <param name="arguments">The arguments.</param>
 /// <param name="globber">The globber.</param>
 /// <param name="processRunner">The process runner.</param>
 public CakeEngine(IFileSystem fileSystem, ICakeEnvironment environment, ICakeLog log,
                   ICakeArguments arguments, IGlobber globber, IProcessRunner processRunner)
 {
     if (fileSystem == null)
     {
         throw new ArgumentNullException("fileSystem");
     }
     if (environment == null)
     {
         throw new ArgumentNullException("environment");
     }
     if (log == null)
     {
         throw new ArgumentNullException("log");
     }
     if (arguments == null)
     {
         throw new ArgumentNullException("arguments");
     }
     if (globber == null)
     {
         throw new ArgumentNullException("globber");
     }
     if (processRunner == null)
     {
         throw new ArgumentNullException("processRunner");
     }
     _fileSystem    = fileSystem;
     _environment   = environment;
     _log           = log;
     _arguments     = arguments;
     _globber       = globber;
     _processRunner = processRunner;
     _tasks         = new List <CakeTask>();
 }
コード例 #4
0
        /// <summary>
        /// Builds arguments for Storyteller
        /// </summary>
        /// <param name="command">Storyteller Command (Open or Run)</param>
        /// <param name="projectPath">Storyteller project path</param>
        /// <param name="arguments">Arguments pass in by cake</param>
        /// <param name="settings"><see cref="StorytellerSettings"/> object</param>
        /// <returns></returns>
        public ProcessArgumentBuilder BuildArguments(StorytellerCommand command,
                                                     string projectPath,
                                                     ICakeArguments arguments,
                                                     StorytellerSettings settings = null)
        {
            var dict = new Dictionary <string, string>();

            if (settings != null)
            {
                //settings
                var props = typeof(StorytellerSettings).GetProperties();
                foreach (var prop in props)
                {
                    var attrs = prop.GetCustomAttributes(false);
                    foreach (var attr in attrs)
                    {
                        var stFlagAttr = attr as StorytellerFlag;
                        if (stFlagAttr != null)
                        {
                            var value = prop.GetValue(settings, null);
                            if (value != null)
                            {
                                dict.Add(stFlagAttr.Flag, value.ToString());
                            }
                        }
                    }
                }
            }

            //arguments
            if (arguments != null)
            {
                _stArguments.ForEach(arg =>
                {
                    if (arguments.HasArgument(arg))
                    {
                        dict[arg] = arguments.GetArgument(arg);
                    }
                });
            }

            var builder = new ProcessArgumentBuilder();

            builder.Append(command.ToString().ToLower());
            builder.Append(projectPath);
            foreach (var pair in dict)
            {
                if (pair.Value == "True" || string.IsNullOrEmpty(pair.Value))
                {
                    builder.Append("--" + pair.Key);
                }
                else
                {
                    builder.Append("--" + pair.Key + " " + pair.Value);
                }
            }
            return(builder);
        }
コード例 #5
0
 public static Func <string, T, T> BuildWithDefaultValue <T>(ICakeArguments arguments, ICakeEnvironment environment, string prefix)
 {
     ValidateParams(arguments, environment, prefix);
     return((paramName, defaultValue) =>
     {
         var paramValue = GetValue(arguments, environment, prefix, paramName);
         return paramValue != null?TypeConverter.ConvertTo <T>(paramValue) : defaultValue;
     });
 }
コード例 #6
0
 private static void ValidateParams(ICakeArguments arguments, ICakeEnvironment environment, string prefix)
 {
     Guard.Argument(arguments, nameof(arguments)).NotNull();
     Guard.Argument(environment, nameof(environment)).NotNull();
     Guard.Argument(prefix, nameof(prefix))
     .NotNull()
     .NotEmpty()
     .NotWhiteSpace();
 }
コード例 #7
0
 public static Func <string, T> BuildRequired <T>(ICakeArguments arguments, ICakeEnvironment environment, string prefix)
 {
     ValidateParams(arguments, environment, prefix);
     return(paramName =>
     {
         var paramValue = GetValue(arguments, environment, prefix, paramName);
         return paramValue != null
             ? TypeConverter.ConvertTo <T>(paramValue)
             : throw new CakeException($"Argument '{paramName}' or environment variable '{GetEnvVarName(prefix, paramName)}' were not set.");
     });
 }
コード例 #8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="CakeContext"/> class.
        /// </summary>
        /// <param name="fileSystem">The file system.</param>
        /// <param name="environment">The environment.</param>
        /// <param name="globber">The globber.</param>
        /// <param name="log">The log.</param>
        /// <param name="arguments">The arguments.</param>
        /// <param name="processRunner">The process runner.</param>
        /// <param name="toolResolvers">The tool resolvers.</param>
        /// <param name="registry">The registry.</param>
        public CakeContext(
            IFileSystem fileSystem,
            ICakeEnvironment environment,
            IGlobber globber,
            ICakeLog log,
            ICakeArguments arguments,
            IProcessRunner processRunner,
            IEnumerable <IToolResolver> toolResolvers,
            IRegistry registry)
        {
            if (fileSystem == null)
            {
                throw new ArgumentNullException("fileSystem");
            }
            if (environment == null)
            {
                throw new ArgumentNullException("environment");
            }
            if (globber == null)
            {
                throw new ArgumentNullException("globber");
            }
            if (log == null)
            {
                throw new ArgumentNullException("log");
            }
            if (arguments == null)
            {
                throw new ArgumentNullException("arguments");
            }
            if (processRunner == null)
            {
                throw new ArgumentNullException("processRunner");
            }
            if (toolResolvers == null)
            {
                throw new ArgumentNullException("toolResolvers");
            }

            _fileSystem    = fileSystem;
            _environment   = environment;
            _globber       = globber;
            _log           = log;
            _arguments     = arguments;
            _processRunner = processRunner;

            // Create the tool resolver lookup table.
            _toolResolverLookup = toolResolvers.ToLookup(
                key => key.Name, value => value,
                StringComparer.OrdinalIgnoreCase);

            _registry = registry;
        }
コード例 #9
0
        private static Dictionary <string, string> GetArgumentsDictionary(ICakeArguments arguments)
        {
            var obj = arguments.GetType()
                      .GetProperty(ArgumentsPropertyName)
                      ?.GetValue(arguments, null);

            if (obj == null)
            {
                throw new CakeException("Something went wrong while getting a list of arguments. "
                                        + "Using this method is not recommended.");
            }

            return((Dictionary <string, string>)obj);
        }
コード例 #10
0
 public void Setup()
 {
     _environment    = FakeEnvironment.CreateWindowsEnvironment();
     _log            = new FakeLog();
     _arguments      = Substitute.For <ICakeArguments>();
     _appVeyor       = Substitute.For <IAppVeyorProvider>();
     _azure          = Substitute.For <ITFBuildProvider>();
     _appEnvironment = new AppVeyorEnvironmentInfo(_environment);
     _appVeyor.Environment.Returns(_appEnvironment);
     _globber       = Substitute.For <IGlobber>();
     _fileSystem    = new FakeFileSystem(_environment);
     _processRunner = Substitute.For <IProcessRunner>();
     _toolLocator   = Substitute.For <IToolLocator>();
 }
コード例 #11
0
        /// <summary>
        /// Initializes a new instance of the <see cref="CakeContext"/> class.
        /// </summary>
        /// <param name="fileSystem">The file system.</param>
        /// <param name="environment">The environment.</param>
        /// <param name="globber">The globber.</param>
        /// <param name="log">The log.</param>
        /// <param name="arguments">The arguments.</param>
        /// <param name="processRunner">The process runner.</param>
        /// <param name="registry">The registry.</param>
        /// <param name="tools">The tool locator.</param>
        public CakeContext(
            IFileSystem fileSystem,
            ICakeEnvironment environment,
            IGlobber globber,
            ICakeLog log,
            ICakeArguments arguments,
            IProcessRunner processRunner,
            IRegistry registry,
            IToolLocator tools)
        {
            if (fileSystem == null)
            {
                throw new ArgumentNullException(nameof(fileSystem));
            }
            if (environment == null)
            {
                throw new ArgumentNullException(nameof(environment));
            }
            if (globber == null)
            {
                throw new ArgumentNullException(nameof(globber));
            }
            if (log == null)
            {
                throw new ArgumentNullException(nameof(log));
            }
            if (arguments == null)
            {
                throw new ArgumentNullException(nameof(arguments));
            }
            if (processRunner == null)
            {
                throw new ArgumentNullException(nameof(processRunner));
            }
            if (tools == null)
            {
                throw new ArgumentNullException(nameof(tools));
            }

            FileSystem    = fileSystem;
            Environment   = environment;
            Globber       = globber;
            Log           = log;
            Arguments     = arguments;
            ProcessRunner = processRunner;
            Registry      = registry;
            Tools         = tools;
        }
コード例 #12
0
ファイル: CakeContext.cs プロジェクト: qhris/cake
        /// <summary>
        /// Initializes a new instance of the <see cref="CakeContext"/> class.
        /// </summary>
        /// <param name="fileSystem">The file system.</param>
        /// <param name="environment">The environment.</param>
        /// <param name="globber">The globber.</param>
        /// <param name="log">The log.</param>
        /// <param name="arguments">The arguments.</param>
        /// <param name="processRunner">The process runner.</param>
        /// <param name="registry">The registry.</param>
        /// <param name="tools">The tool locator.</param>
        public CakeContext(
            IFileSystem fileSystem,
            ICakeEnvironment environment,
            IGlobber globber,
            ICakeLog log,
            ICakeArguments arguments,
            IProcessRunner processRunner,
            IRegistry registry,
            IToolLocator tools)
        {
            if (fileSystem == null)
            {
                throw new ArgumentNullException("fileSystem");
            }
            if (environment == null)
            {
                throw new ArgumentNullException("environment");
            }
            if (globber == null)
            {
                throw new ArgumentNullException("globber");
            }
            if (log == null)
            {
                throw new ArgumentNullException("log");
            }
            if (arguments == null)
            {
                throw new ArgumentNullException("arguments");
            }
            if (processRunner == null)
            {
                throw new ArgumentNullException("processRunner");
            }
            if (tools == null)
            {
                throw new ArgumentNullException("tools");
            }

            _fileSystem    = fileSystem;
            _environment   = environment;
            _globber       = globber;
            _log           = log;
            _arguments     = arguments;
            _processRunner = processRunner;
            _registry      = registry;
            _tools         = tools;
        }
コード例 #13
0
        public ScriptHostFixture()
        {
            FileSystem  = Substitute.For <IFileSystem>();
            Environment = Substitute.For <ICakeEnvironment>();
            Log         = Substitute.For <ICakeLog>();
            Globber     = Substitute.For <IGlobber>();
            Arguments   = Substitute.For <ICakeArguments>();

            Engine = Substitute.For <ICakeEngine>();
            Engine.FileSystem.Returns(FileSystem);
            Engine.Environment.Returns(Environment);
            Engine.Log.Returns(Log);
            Engine.Globber.Returns(Globber);
            Engine.Arguments.Returns(Arguments);
            Engine.RunTarget(Arg.Any <string>()).Returns(new CakeReport());
        }
コード例 #14
0
        private ICakeContext GetMoqContext(
            HelperFixture fixture,
            IGlobber globber,
            IRegistry registry,
            ICakeArguments args)
        {
            var log = new FakeLog();

            var contextMock = new Mock <ICakeContext>();

            contextMock.SetupGet(t => t.FileSystem).Returns(fixture.FileSystem);
            contextMock.SetupGet(t => t.Environment).Returns(fixture.Environment);
            contextMock.SetupGet(t => t.Globber).Returns(globber);
            contextMock.SetupGet(t => t.Log).Returns(log);
            contextMock.SetupGet(t => t.Arguments).Returns(args);
            contextMock.SetupGet(t => t.ProcessRunner).Returns(fixture.ProcessRunner);
            contextMock.SetupGet(t => t.Registry).Returns(registry);
            contextMock.SetupGet(t => t.Tools).Returns(fixture.Tools);

            return(contextMock.Object);
        }
コード例 #15
0
ファイル: CakeContext.cs プロジェクト: gajjarneel/Netproject
 /// <summary>
 /// Initializes a new instance of the <see cref="CakeContext"/> class.
 /// </summary>
 /// <param name="fileSystem">The file system.</param>
 /// <param name="environment">The environment.</param>
 /// <param name="globber">The globber.</param>
 /// <param name="log">The log.</param>
 /// <param name="arguments">The arguments.</param>
 /// <param name="processRunner">The process runner.</param>
 /// <param name="registry">The registry.</param>
 /// <param name="tools">The tool locator.</param>
 /// <param name="data">The data service.</param>
 public CakeContext(
     IFileSystem fileSystem,
     ICakeEnvironment environment,
     IGlobber globber,
     ICakeLog log,
     ICakeArguments arguments,
     IProcessRunner processRunner,
     IRegistry registry,
     IToolLocator tools,
     ICakeDataService data)
 {
     FileSystem    = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
     Environment   = environment ?? throw new ArgumentNullException(nameof(environment));
     Globber       = globber ?? throw new ArgumentNullException(nameof(globber));
     Log           = log ?? throw new ArgumentNullException(nameof(log));
     Arguments     = arguments ?? throw new ArgumentNullException(nameof(arguments));
     ProcessRunner = processRunner ?? throw new ArgumentNullException(nameof(processRunner));
     Registry      = registry ?? throw new ArgumentNullException(nameof(registry));
     Tools         = tools ?? throw new ArgumentNullException(nameof(tools));
     Data          = data ?? throw new ArgumentNullException(nameof(data));
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="PaketToolResolver" /> class.
        /// </summary>
        /// <param name="fileSystem">The file system.</param>
        /// <param name="environment">The environment.</param>
        /// <param name="tools">The tool locator.</param>
        /// <param name="processRunner">The process runner.</param>
        /// <param name="arguments">The arguments.</param>
        /// <param name="log">The log.</param>
        internal PaketToolResolver(IFileSystem fileSystem, ICakeEnvironment environment, IToolLocator tools, IProcessRunner processRunner, ICakeArguments arguments, ICakeLog log)
        {
            if (fileSystem == null)
            {
                throw new ArgumentNullException(nameof(fileSystem));
            }

            if (environment == null)
            {
                throw new ArgumentNullException(nameof(environment));
            }

            if (tools == null)
            {
                throw new ArgumentNullException(nameof(tools));
            }

            if (processRunner == null)
            {
                throw new ArgumentNullException(nameof(processRunner));
            }

            if (arguments == null)
            {
                throw new ArgumentNullException(nameof(arguments));
            }

            if (log == null)
            {
                throw new ArgumentNullException(nameof(log));
            }

            FileSystem    = fileSystem;
            Environment   = environment;
            Tools         = tools;
            ProcessRunner = processRunner;
            Arguments     = arguments;
            Log           = log;
        }
コード例 #17
0
 /// <summary>
 /// Initializes new instance of <see cref="StorytellerRunner"/> class.
 /// </summary>
 /// <param name="fileSystem">Filesystem</param>
 /// <param name="environment">Environment</param>
 /// <param name="processRunner">Process Runner</param>
 /// <param name="toolLocator">Tool Locator</param>
 /// <param name="arguments">Arguments</param>
 public StorytellerRunner(IFileSystem fileSystem, ICakeEnvironment environment, IProcessRunner processRunner, IToolLocator toolLocator, ICakeArguments arguments) : base(fileSystem, environment, processRunner, toolLocator)
 {
     _arguments = arguments;
 }
コード例 #18
0
        public VersionHelper(ICakeEnvironment environment, ICakeLog log, ICakeArguments arguments,
                             IAppVeyorProvider appVeyorProvider, ITFBuildProvider azureProvider, IGlobber globber, IFileSystem fileSystem, IProcessRunner processRunner, IToolLocator tools)
        {
            _environment      = environment;
            _log              = log;
            _arguments        = arguments;
            _appVeyorProvider = appVeyorProvider;
            _azureProvider    = azureProvider;
            _globber          = globber;
            _fileSystem       = fileSystem;
            _processRunner    = processRunner;
            _tools            = tools;
            if (environment == null)
            {
                throw new ArgumentNullException(nameof(environment));
            }
            if (log == null)
            {
                throw new ArgumentNullException(nameof(log));
            }

            Configuration = environment.GetEnvironmentVariable("CONFIGURATION");
            if (string.IsNullOrWhiteSpace(Configuration))
            {
                Configuration = _arguments.HasArgument("configuration") ? _arguments.GetArgument("configuration") : "Release";
            }

            string envLogging = environment.GetEnvironmentVariable("LOGGINGLEVEL");

            if (!string.IsNullOrWhiteSpace(envLogging))
            {
                Verbosity loggingEnum;
                if (Enum.TryParse(envLogging, true, out loggingEnum))
                {
                    log.Verbosity = loggingEnum;
                    log.Information($"Logging Level: {loggingEnum}", Verbosity.Quiet);
                    if (IsAppVeyor)
                    {
                        _appVeyorProvider.AddInformationalMessage($"Logging set by LoggingLevel enviornment variable to {loggingEnum}");
                    }
                    _isDefaultLoggingLevel = false;
                }
                else
                {
                    string msg = $"Invalid logging level [{envLogging}].  Use {Verbosity.Quiet}, {Verbosity.Minimal}, {Verbosity.Normal}, {Verbosity.Verbose} or {Verbosity.Diagnostic}";
                    if (IsAppVeyor)
                    {
                        log.Warning(msg);
                    }
                    _appVeyorProvider.AddWarningMessage(msg);
                }
            }
            else
            {
                _isDefaultLoggingLevel = !arguments.HasArgument("verbosity");
            }

            if (_log.Verbosity > Verbosity.Normal)
            {
                var environmentVariables = environment.GetEnvironmentVariables();
                foreach (string key in environmentVariables.Keys)
                {
                    log.Verbose($"{key}:{environmentVariables[key]}");
                }
            }

            CommitMessageMatches = new MatchResult {
                Success = false
            };
            if (IsAppVeyor)
            {
                Branch             = _appVeyorProvider.Environment.Repository.Branch;
                CommitMessageShort = _appVeyorProvider.Environment.Repository.Commit.Message;
                var match = CommitMessageRegex.Match(_appVeyorProvider.Environment.Repository.Commit.ExtendedMessage);
                CommitMessageMatches = new MatchResult {
                    Success = match.Success, Groups = match.Groups
                };
                _log.Debug($"Branch:{Branch}");
                _log.Debug($"Commit Msg Short:{CommitMessageShort}");
                _log.Debug($"Commit Msg Extended:{_appVeyorProvider.Environment.Repository.Commit.ExtendedMessage}");
                _log.Debug($"Commit Message Cmd Match:{CommitMessageMatches.Success}");
                if (_log.Verbosity >= Verbosity.Verbose && CommitMessageMatches.Success)
                {
                    _log.Debug("RegEx Group Matches");
                    foreach (string groupName in CommitMessageRegex.GetGroupNames())
                    {
                        _log.Debug($"{groupName} : {CommitMessageMatches.Groups[groupName].Value}");
                    }
                }
            }
            if (IsAzureDevops)
            {
                Branch = _azureProvider.Environment.Repository.Branch;
                //CommitMessageShort = _azureProvider.Environment.Repository.Commit.Message;
                //var match = CommitMessageRegex.Match(_azureProvider.Environment.Repository.Commit.ExtendedMessage);
                //CommitMessageMatches = new MatchResult { Success = match.Success, Groups = match.Groups };
                //_log.Debug($"Branch:{Branch}");
                //_log.Debug($"Commit Msg Short:{CommitMessageShort}");
                //_log.Debug($"Commit Msg Extended:{_appVeyorProvider.Environment.Repository.Commit.ExtendedMessage}");
                //_log.Debug($"Commit Message Cmd Match:{CommitMessageMatches.Success}");
                //if (_log.Verbosity >= Verbosity.Verbose && CommitMessageMatches.Success)
                //{
                //    _log.Debug("RegEx Group Matches");
                //    foreach (string groupName in CommitMessageRegex.GetGroupNames())
                //    {
                //        _log.Debug($"{groupName} : {CommitMessageMatches.Groups[groupName].Value}");
                //    }
                //}
            }
        }
コード例 #19
0
 /// <summary>
 /// Gets the value for an argument.
 /// </summary>
 /// <remarks>
 /// If multiple arguments with the same name are
 /// specified, the last argument value is returned.
 /// </remarks>
 /// <param name="arguments">The arguments.</param>
 /// <param name="name">The argument name.</param>
 /// <returns>The argument value.</returns>
 public static string GetArgument(this ICakeArguments arguments, string name)
 {
     return(arguments.GetArguments(name).LastOrDefault());
 }
コード例 #20
0
 private static string GetValue(ICakeArguments arguments, ICakeEnvironment environment, string prefix, string paramName)
 {
     return(arguments.HasArgument(paramName)
         ? arguments.GetArgument(paramName)
         : environment.GetEnvironmentVariable(GetEnvVarName(prefix, paramName)));
 }