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); }