示例#1
0
        private FileIntegrity GetRelaxedFileIntegrity(BuildDefinitionEntry entry)
        {
            foreach (var existingFile in _context.ExistingFiles)
            {
                var existingFilePath = FilesManager.SanitizePath(PathsManager.Combine(_context.Settings.RootPath, existingFile.RelativePath));
                var entryFilePath    = FilesManager.SanitizePath(PathsManager.Combine(_context.Settings.GetGamePath(), entry.RelativePath));

                if (existingFilePath == entryFilePath)
                {
                    var integrity = FileIntegrity.None;

                    if (existingFile.Size != entry.Size)
                    {
                        integrity |= FileIntegrity.InvalidSize;
                    }

                    if (integrity == FileIntegrity.None)
                    {
                        return(FileIntegrity.Valid);
                    }
                    return(integrity);
                }
            }

            return(FileIntegrity.NotExisting);
        }
示例#2
0
 public DownloadEntry(string remoteUrl, string partialRemoteUrl, string destinationFolder, string destinationFile, BuildDefinitionEntry definition)
 {
     RemoteUrl         = remoteUrl;
     PartialRemoteUrl  = partialRemoteUrl;
     DestinationFolder = destinationFolder;
     DestinationFile   = destinationFile;
     Definition        = definition;
 }
示例#3
0
        private bool HandleInvalidLastWriting(BuildDefinitionEntry entry)
        {
            var filePath = PathsManager.Combine(_context.Settings.GetGamePath(), entry.RelativePath);
            var hash     = Hashing.GetFileHash(filePath);

            if (entry.Hash != hash)
            {
                FilesManager.Delete(filePath);
                return(false);
            }
            return(true);
        }
示例#4
0
        private PatchOperation GetOperation(BuildDefinitionEntry newFile, BuildDefinitionEntry oldFile)
        {
            if (newFile.Hash != oldFile.Hash)
            {
                return(PatchOperation.Updated);
            }
            if (newFile.Attributes != oldFile.Attributes)
            {
                return(PatchOperation.ChangedAttributes);
            }

            return(PatchOperation.Unchanged);
        }
示例#5
0
 private void SetDefinition(string filePath, BuildDefinitionEntry currentEntry)
 {
     File.SetAttributes(filePath, currentEntry.Attributes);
     File.SetLastWriteTimeUtc(filePath, currentEntry.LastWriting);
 }
示例#6
0
        private void HandleInvalidAttributes(BuildDefinitionEntry entry)
        {
            var filePath = PathsManager.Combine(_context.Settings.GetGamePath(), entry.RelativePath);

            File.SetAttributes(filePath, entry.Attributes);
        }