public Subsystem <Node> WalkDirectoryTree(DirectoryInfo root) => () => { var files = root.GetFiles("*.*"); var subDirs = root.GetDirectories("*.*"); var filesNodes = files.Select(x => new Node(x)).ToSeq(); var subDirNodes = subDirs .Select(x => WalkDirectoryTree(x)().Value) .ToSeq(); return(Out <Node> .FromValue(new Node(root, subDirNodes + filesNodes))); };
public Subsystem <Node> FullRename(string dir, Config config) => () => { if (config.ReplaceList.Count() == 0) { return(WalkDirectoryTree(new DirectoryInfo(dir))()); } else { fs.RenameAll(dir, config.ReplaceList, false); return(WalkDirectoryTree(new DirectoryInfo(dir))()); } };