Beispiel #1
0
        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();
        }
Beispiel #2
0
        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);
            }
        }