Exemple #1
0
        UpdateFiles(FileSetTarget fileSet)
        {
            Guard.NotNull(fileSet, nameof(fileSet));

            // Get file specs from required list target(s)
            // TODO Handle patterns not just paths
            var patterns = Graph.RequiredBy(fileSet).OfType <ListTarget>().SelectMany(t => t.Values);
            var paths    = patterns.Select(p => Path.GetFullPath(p)).Where(p => File.Exists(p));

            // Get current set of files
            var newFiles = paths.Select(p => Graph.File(p)).ToList();

            // Adjust dependencies
            var toRemove = fileSet.Files.Except(newFiles).ToList();
            var toAdd    = newFiles.Except(fileSet.Files).ToList();

            foreach (var file in toRemove)
            {
                Graph.RemoveDependency(file, fileSet);
            }
            foreach (var file in toAdd)
            {
                Graph.Dependency(file, fileSet);
            }

            // Update timestamp if the set of files has changed
            var changed = toAdd.Any() || toRemove.Any();

            if (changed)
            {
                fileSet.SetTimestamp(DateTime.Now);
            }
        }
Exemple #2
0
        UpdateTimestamp(FileSetTarget fileSet)
        {
            Guard.NotNull(fileSet, nameof(fileSet));

            var newestDependencyTimestamp = Graph.RequiredBy(fileSet).Max(t => t.Timestamp);

            if (fileSet.Timestamp == null)
            {
                fileSet.SetTimestamp(newestDependencyTimestamp ?? DateTime.Now);
            }
            else if (newestDependencyTimestamp.HasValue && newestDependencyTimestamp.Value > fileSet.Timestamp)
            {
                fileSet.SetTimestamp(newestDependencyTimestamp.Value);
            }
        }