public bool PreVisit(IDirectoryWalkerContext context, DirectoryInfo dirInfo)
        {
            if (_configuration.Exclude.Contains(dirInfo.Name))
            {
                return(false);
            }

            return(true);
        }
        public bool PostVisit(IDirectoryWalkerContext context, DirectoryInfo dirInfo)
        {
            if (dirInfo.Exists)
            {
                dirInfo.Delete();
            }

            return(true);
        }
        public bool Visit(IDirectoryWalkerContext context, FileInfo fileInfo)
        {
            if (fileInfo.Exists)
            {
                fileInfo.Delete();
            }

            return(true);
        }
 public bool PreVisit(IDirectoryWalkerContext context, DirectoryInfo dirInfo)
 {
     if (SymbolicLinkHelper.IsSymbolicLink(dirInfo))
     {
         dirInfo.Delete();
         return(false);
     }
     return(true);
 }
            public bool Visit(IDirectoryWalkerContext context, FileInfo fileInfo)
            {
                Console.WriteLine("Visit: " + fileInfo.FullName);
                var equalFullName = FileSystemInfoFullNames[0] == fileInfo.FullName;

                if (equalFullName)
                {
                    FileSystemInfoFullNames.RemoveAt(0);
                }
                return(equalFullName);
            }
            public bool PostVisit(IDirectoryWalkerContext context, DirectoryInfo dirInfo)
            {
                Console.WriteLine("PostVisit: " + dirInfo.FullName);
                var equalFullName = FileSystemInfoFullNames[0] == dirInfo.FullName;

                if (equalFullName)
                {
                    FileSystemInfoFullNames.RemoveAt(0);
                }
                return(equalFullName);
            }
Beispiel #7
0
 public bool PostVisit(IDirectoryWalkerContext context, DirectoryInfo dirInfo)
 {
     if (IsPlaceHolderNeeded(context, dirInfo))
     {
         var placeHolderFile = CommandHelper.CreatePlaceHolder(dirInfo, _configuration);
         if (null != placeHolderFile)
         {
             context.VisitedFiles.Add(placeHolderFile.FullName, placeHolderFile);
         }
     }
     else
     {
         var placeHolderFile = CommandHelper.DeletePlaceHolder(dirInfo, _configuration);
         if (null != placeHolderFile)
         {
             context.VisitedFiles.Remove(placeHolderFile.FullName);
         }
     }
     return(true);
 }
 public bool PreVisit(IDirectoryWalkerContext context, DirectoryInfo dirInfo)
 {
     Console.WriteLine("PreVisit: " + dirInfo.FullName);
     return(true);
 }
        public bool PreVisit(IDirectoryWalkerContext context, DirectoryInfo dirInfo)
        {
            if (_configuration.Exclude.Contains(dirInfo.Name))
            {
                return(false);
            }

            var placeHolderFile = new FileInfo(Path.Combine(dirInfo.FullName, _configuration.PlaceHolderName));

            if (!placeHolderFile.Exists)
            {
                return(true);
            }

            foreach (var subDirInfo in dirInfo.GetDirectories())
            {
                try
                {
                    if (!_configuration.DryRun)
                    {
                        subDirInfo.Delete(true);
                    }
                    if (_configuration.Short)
                    {
                        Logger.Log(Logger.LogType.Info, subDirInfo.FullName, true);
                    }
                    else if (_configuration.Verbose)
                    {
                        Logger.Log(Logger.LogType.Info, string.Format("Deleted directory: '{0}'", subDirInfo.FullName));
                    }
                }
                catch (Exception ex)
                {
                    Logger.Log(Logger.LogType.Warn, string.Format("Deletion of directory '{0}' failed: {1}", subDirInfo.FullName, ex.Message));
                }
            }

            foreach (var fileInfo in dirInfo.GetFiles())
            {
                try
                {
                    if (fileInfo.FullName == placeHolderFile.FullName)
                    {
                        if (_configuration.Verbose)
                        {
                            Logger.Log(Logger.LogType.Info, string.Format("Skipped placeholder: '{0}'", fileInfo.FullName));
                        }

                        continue;
                    }

                    if (!_configuration.DryRun)
                    {
                        fileInfo.Delete();
                    }
                    if (_configuration.Short)
                    {
                        Logger.Log(Logger.LogType.Info, fileInfo.FullName, true);
                    }
                    else if (_configuration.Verbose)
                    {
                        Logger.Log(Logger.LogType.Info, string.Format("Deleted file: '{0}'", fileInfo.FullName));
                    }
                }
                catch (Exception ex)
                {
                    Logger.Log(Logger.LogType.Warn, string.Format("Deletion of file '{0}' failed: {1}", fileInfo.FullName, ex.Message));
                }
            }

            return(false);
        }
 public bool Visit(IDirectoryWalkerContext context, FileInfo fileInfo)
 {
     return(true);
 }
 public bool PostVisit(IDirectoryWalkerContext context, DirectoryInfo dirInfo)
 {
     return(true);
 }
Beispiel #12
0
 private bool MustVisit(IDirectoryWalkerContext context, DirectoryInfo dirInfo)
 {
     return(!_configuration.Exclude.Contains(dirInfo.Name));
 }
Beispiel #13
0
        private bool IsPlaceHolderNeeded(IDirectoryWalkerContext context, DirectoryInfo dirInfo)
        {
            var files = dirInfo.GetFiles();

            // If there is more than one file we do not need a placeholder.
            if (files.Length > 1)
            {
                return(false);
            }

            // If there are subdirectories we check if any of them will be walked, in that case we do not need a placeholder.
            foreach (DirectoryInfo dir in dirInfo.GetDirectories())
            {
                if (MustVisit(context, dir))
                {
                    return(false);
                }
            }

            // Here we know that there is 0 or 1 file and subdirectories that are not going to be walked (special directories, excluded ones)

            if (files.Length == 0)
            {
                // At this point there are no files and no tracked subdirectories, so we need a placeholder.
                return(true);
            }

            // At this point there is exactly one file. If it is a placeholder we actually need one.
            var placeHolderFile = new FileInfo(Path.Combine(dirInfo.FullName, _configuration.PlaceHolderName));

            return(placeHolderFile.Exists);

            /*
             * foreach (FileSystemInfo visitedFileSystemInfo in context.VisitedFileSystemInfos)
             * {
             *  string visitedName = visitedFileSystemInfo.FullName;
             *  if (visitedName.Length <= dirName.Length || !visitedName.StartsWith(dirName))
             *      continue;
             *
             *  // At this point there is either a file in a sub-directory,
             *  // or in the current directory (dirInfo).
             *
             *  // If the already visited file is in a sub-directory,
             *  // then no placeholder is needed for the current directory.
             *  var parentDir = PathUtil.GetParent(visitedFileSystemInfo);
             *  if (parentDir.FullName.Length > dirName.Length)
             *      return false;
             *
             *  // The already visited file is in the current directory.
             *  // So increase number of found candidates.
             ++foundCandidateFiles;
             *  // If there are more than one file we know we do not need a placeholder.
             *  if (foundCandidateFiles > 1)
             *      return false;
             * }
             *
             * if (1 == foundCandidateFiles)
             * {
             *  // At this point there is exactly one file. If it is a placeholder we actually need one.
             *  var placeHolderFile = new FileInfo(Path.Combine(dirInfo.FullName, _configuration.PlaceHolderName));
             *  return placeHolderFile.Exists;
             * }
             *
             * // At this point there is no file or subdirectory, so we need a placeholder.
             * return true;
             */
        }
Beispiel #14
0
 public bool PreVisit(IDirectoryWalkerContext context, DirectoryInfo dirInfo)
 {
     return(MustVisit(context, dirInfo));
 }
 public bool PostVisit(IDirectoryWalkerContext context, DirectoryInfo dirInfo)
 {
     Console.WriteLine("PostVisit: " + dirInfo.FullName);
     return(FileSystemInfoFullNames.Remove(dirInfo.FullName) && (StopWalkingAfterPostVisitDirectoryFullName != dirInfo.FullName));
 }
 public bool Visit(IDirectoryWalkerContext context, FileInfo fileInfo)
 {
     Console.WriteLine("Visit: " + fileInfo.FullName);
     return(FileSystemInfoFullNames.Remove(fileInfo.FullName));
 }
 public bool PostVisit(IDirectoryWalkerContext context, DirectoryInfo dirInfo)
 {
     CommandHelper.DeletePlaceHolder(dirInfo, _configuration);
     return(true);
 }