public static void Delete(DirectoryInfo dirInfo)
        {
            var walker = DirectoryWalker.Create(new DeleteRecursively());

            walker.FollowSymbolicLinks = true;
            walker.Walk(dirInfo);
        }
        public int Execute(Configuration config)
        {
            _configuration = config;

            if (null == _configuration.Directory)
            {
                throw new Exception("No directory specified!");
            }

            if (!_configuration.Directory.Exists)
            {
                throw new Exception(string.Format("Not a directory: '{0}'", _configuration.Directory.FullName));
            }

            var walker = DirectoryWalker.Create(this);

            walker.FollowSymbolicLinks     = _configuration.FollowSymbolicLinks;
            walker.VisitFiles              = false;
            walker.TrackVisitedDirectories = true;
            walker.Walk(_configuration.Directory);

            return(0);
        }