Beispiel #1
0
 public static void CereateDirectory()
 {
     if (!ScriptDirectory.Exists)
     {
         ScriptDirectory.Create();
     }
 }
        /// <summary>
        /// Gets the files that have changed between the revision specified by SourceChangeset and
        /// the current HEAD.
        /// </summary>
        /// <returns>A collection of files.</returns>
        protected override async Task <ICollection <FileInfoBase> > GetDiffedFilesAsync()
        {
            Func <FileInfoBase, bool> filter;

            if (IgnoreUnsupportedSubdirectories)
            {
                filter = IsFileInSupportedDirectory;
            }
            else
            {
                filter = f => true;
            }

            if (SourceChangeset != null)
            {
                var    args           = "status --no-status --rev " + SourceChangeset.ToString() + " \"" + ScriptDirectory.FullName + "\"";
                string fileListString = await HgExecutable.ExecuteAsync(args, ScriptDirectory.FullName);

                string[] fileList = fileListString.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
                var      result   = new List <FileInfoBase>(fileList.Length);
                foreach (var line in fileList)
                {
                    var file = FileSystem.FileInfo.FromFileName(Path.Combine(ScriptDirectory.FullName, line));
                    if (file.Extension.Equals(".sql", StringComparison.InvariantCultureIgnoreCase))
                    {
                        if (!filter(file))
                        {
                            await Logger.LogMessageAsync(
                                "Filtering out file because its in an unsupported subdirectory: " + file.FullName,
                                SeverityLevel.Warning);
                        }
                        else
                        {
                            result.Add(file);
                        }
                    }
                }
                return(result);
            }
            else
            {
                var result   = new List <FileInfoBase>();
                var fileList = ScriptDirectory.GetFiles("*.sql", SearchOption.AllDirectories);
                foreach (var file in fileList)
                {
                    if (!filter(file))
                    {
                        await Logger.LogMessageAsync(
                            "Filtering out file because its in an unsupported subdirectory: " + file.FullName,
                            SeverityLevel.Warning);
                    }
                    else
                    {
                        result.Add(file);
                    }
                }
                return(result);
            }
        }
        /// <summary>
        /// Gets the build scripts in the repository that satisfy the given predicate.
        /// </summary>
        /// <returns>A collection of build scripts.</returns>
        protected virtual async Task <ICollection <ScriptFile> > GetScriptsAsync()
        {
            Func <FileInfoBase, bool> saferFilter;

            if (IgnoreUnsupportedSubdirectories)
            {
                saferFilter = f => IsFileInSupportedDirectory(f);
            }
            else
            {
                saferFilter = f => true;
            }

            var scripts = new List <ScriptFile>();

            foreach (var f in ScriptDirectory.GetFiles("*", SearchOption.AllDirectories))
            {
                if (!f.Extension.Equals(".sql", StringComparison.InvariantCultureIgnoreCase))
                {
                    await Logger.LogMessageAsync("Filtering out file because it is not a .sql file: " + f.FullName, SeverityLevel.Warning);

                    continue;
                }

                if (!saferFilter(f))
                {
                    await Logger.LogMessageAsync("Filtering out file because its in an unsupported subdirectory: " + f.FullName, SeverityLevel.Warning);

                    continue;
                }

                var script = await GetScriptAsync(f);

                scripts.Add(script);
            }
            return(scripts);
        }