Exemple #1
0
        /// <summary>
        /// Unzip all files.
        /// </summary>
        /// <returns>True on succes, false otherwise</returns>
        internal static bool Unzip(string sampleFolder, string zipFilePath, Action <string> log, Func <bool> updateSampleProjects)
        {
            var messages      = new List <string>();
            var entries       = new List <UnzipEntry>();
            var fileHashes    = new FileHashesSet();
            var backupFolders = new BackupFolders();
            var result        = true;

            using (var zipFile = new ZipFile(zipFilePath))
            {
                // Collect entries
                foreach (ZipEntry zipEntry in zipFile)
                {
                    entries.Add(new UnzipEntry(zipEntry, sampleFolder));
                }

                // Unzip all
                foreach (var entry in entries)
                {
                    log(string.Format("Unpacking {0}", entry.Name));
                    entry.UnzipToTempPath(zipFile);
                }

                // Backup if needed
                foreach (var entry in entries)
                {
                    entry.BackupIfNeeded(fileHashes, backupFolders);
                }

                // Move all to final target
                foreach (var entry in entries)
                {
                    entry.MoveToTarget(messages);
                }

                // Update all sample projects
                if (!updateSampleProjects())
                {
                    result = false;
                }

                // Update hashes
                foreach (var entry in entries)
                {
                    entry.UpdateHash(fileHashes);
                }

                // Save hashes
                fileHashes.SaveAll();
            }
            return(result);
        }
Exemple #2
0
        internal bool TryAddBackupFolder(string path, int i)
        {
            if (!path.EndsWith("\\"))
            {
                path += "\\";
            }

            if (!BackupFolders.Any(b => path.Contains(b.Directory) || b.Directory.Contains(path)))
            {
                BackupFolders.Add(BackupFolder.Create(path));
                return(true);
            }
            return(false);
        }
Exemple #3
0
        /// <summary>
        /// Unzip all files.
        /// </summary>
        /// <returns>True on succes, false otherwise</returns>
        internal static bool Unzip(string sampleFolder, string zipFilePath, Action<string> log, Func<bool> updateSampleProjects)
        {
            var messages = new List<string>();
            var entries = new List<UnzipEntry>();
            var fileHashes = new FileHashesSet();
            var backupFolders = new BackupFolders();
            var result = true;
            using (var zipFile = new ZipFile(zipFilePath))
            {
                // Collect entries
                foreach (ZipEntry zipEntry in zipFile)
                {
                    entries.Add(new UnzipEntry(zipEntry, sampleFolder));
                }

                // Unzip all
                foreach (var entry in entries)
                {
                    log(string.Format("Unpacking {0}", entry.Name));
                    entry.UnzipToTempPath(zipFile);
                }

                // Backup if needed
                foreach (var entry in entries)
                {
                    entry.BackupIfNeeded(fileHashes, backupFolders);
                }

                // Move all to final target
                foreach (var entry in entries)
                {
                    entry.MoveToTarget(messages);
                }

                // Update all sample projects
                if (!updateSampleProjects())
                    result = false;

                // Update hashes
                foreach (var entry in entries)
                {
                    entry.UpdateHash(fileHashes);
                }

                // Save hashes
                fileHashes.SaveAll();
            }
            return result;
        }
Exemple #4
0
            /// <summary>
            /// Backup the target path if needed.
            /// </summary>
            public void BackupIfNeeded(FileHashesSet fileHashes, BackupFolders backupFolders)
            {
                if (!File.Exists(targetPath))
                {
                    return;
                }
                var    hashes = fileHashes.Get(Path.GetDirectoryName(targetPath));
                string originalHash;

                if (hashes.TryGetHash(targetPath, out originalHash))
                {
                    // Compare with existing
                    var currentHash = Hash(targetPath);
                    if (currentHash == originalHash)
                    {
                        return; // No need to backup
                    }
                }
                var backupFolder = backupFolders.Get(Path.GetDirectoryName(targetPath));

                Directory.CreateDirectory(backupFolder);
                File.Copy(targetPath, Path.Combine(backupFolder, Path.GetFileName(targetPath)));
            }
Exemple #5
0
 /// <summary>
 /// Backup the target path if needed.
 /// </summary>
 public void BackupIfNeeded(FileHashesSet fileHashes, BackupFolders backupFolders)
 {
     if (!File.Exists(targetPath))
         return;
     var hashes = fileHashes.Get(Path.GetDirectoryName(targetPath));
     string originalHash;
     if (hashes.TryGetHash(targetPath, out originalHash))
     {
         // Compare with existing
         var currentHash = Hash(targetPath);
         if (currentHash == originalHash)
             return; // No need to backup
     }
     var backupFolder = backupFolders.Get(Path.GetDirectoryName(targetPath));
     Directory.CreateDirectory(backupFolder);
     File.Copy(targetPath, Path.Combine(backupFolder, Path.GetFileName(targetPath)));
 }