public void FileSystem() { var fs = new TextFileSystem(@" f1 d1/f2 d1/f3 d1/d2/f4 d1/d2/d3/ ", "", ""); var rules = @" f1 => FF **/f* => FFF .artifacts/core/** => .xxx "; var rs = RuleSet.Parse(rules); var copyMachine = new CopyMachine(fs, "", ""); copyMachine.Copy(rs); var added = fs.CopiedFiles.ToString(); }
static int DoWork(RunOptions opts) { var rulesText = opts.RulesFile == "-" ? Console.In.ReadToEnd() : File.ReadAllText(opts.RulesFile); var ruleSet = RuleSet.Parse(rulesText); if (opts.DryRun) { opts.Log.WriteLine("== DRY RUN =="); // load all files from source and destination var allFiles = Directory.GetFiles(opts.SourceRoot, "*", SearchOption.AllDirectories) .Concat(Directory.GetFiles(opts.DestinationRoot, "*", SearchOption.AllDirectories)) ; var fs = new TextFileSystem(allFiles); fs.Force = opts.Force; var copyMachine = new CopyMachine(fs, opts.SourceRoot, opts.DestinationRoot, Console.Error, opts.Log); var result = copyMachine.Copy(ruleSet); opts.Log.WriteLine("== DRY RUN RESULTS =="); if (fs.CreatedDirectories.Count > 0) { opts.Log.WriteLine("Created directories:"); foreach (var dir in fs.CreatedDirectories.OrderBy(x => x)) { opts.Log.WriteLine("\t" + dir); } } if (fs.CopiedFiles.Count > 0) { opts.Log.WriteLine("Copied files:"); foreach (var file in fs.CopiedFiles.OrderBy(x => x)) { opts.Log.WriteLine("\t" + file); } } if (fs.CopiedOverFiles.Count > 0) { opts.Log.WriteLine("Copied with overwite files:"); foreach (var file in fs.CopiedOverFiles.OrderBy(x => x)) { opts.Log.WriteLine("\t" + file); } } return(result); } else { // usual run var fs = new RealFileSystem(); fs.Force = opts.Force; var copyMachine = new CopyMachine(fs, opts.SourceRoot, opts.DestinationRoot, Console.Error, opts.Log); var result = copyMachine.Copy(ruleSet); if (opts.Summary) { Console.WriteLine($"{copyMachine.FilesCopied} files copied"); Console.WriteLine($"Exit code: {result}"); } return(result); } }