Esempio n. 1
0
        NPath CopyWithDeterminedDestination(NPath absoluteDestination, Func <NPath, bool> fileFilter)
        {
            if (absoluteDestination.IsRelative)
            {
                throw new ArgumentException("absoluteDestination must be absolute");
            }

            if (FileExists())
            {
                if (!fileFilter(absoluteDestination))
                {
                    return(Default);
                }

                absoluteDestination.EnsureParentDirectoryExists();

                FSWrapper.FileCopy(this, absoluteDestination, true);
                return(absoluteDestination);
            }

            if (DirectoryExists())
            {
                absoluteDestination.EnsureDirectoryExists();
                foreach (var thing in Contents())
                {
                    thing.CopyWithDeterminedDestination(absoluteDestination.Combine(thing.RelativeTo(this)), fileFilter);
                }
                return(absoluteDestination);
            }

            throw new ArgumentException("Copy() called on path that doesnt exist: " + ToString());
        }