public void Initialize() { fileWatcher = new FileSystemWatcher(FileSystem.Root, "*.nupkg") { NotifyFilter = NotifyFilters.DirectoryName | NotifyFilters.FileName | NotifyFilters.LastWrite, IncludeSubdirectories = true }; var modifiedFilesThrottledByPath = ModifiedFiles .Select(args => args.EventArgs.FullPath) .GroupBy(path => path) .Select(groupByPath => groupByPath.Throttle(QuietTime)) .SelectMany(obs => obs); fileObserver = modifiedFilesThrottledByPath.Subscribe(async path => await OnPackageModified(path)); fileWatcher.Deleted += async(s, e) => await OnPackageDeleted(e.FullPath); fileWatcher.Renamed += async(s, e) => await OnPackageRenamed(e.OldFullPath, e.FullPath); fileWatcher.Error += OnFileWatcherError; fileWatcher.EnableRaisingEvents = true; dirObserver = MovedDirectories.Select(args => args.EventArgs.FullPath).Throttle(QuietTime).Subscribe(OnDirectoryMoved); }
/// <summary> /// Adds modified files got from querying in the <see cref="LibraryFoldersCollection"/>. The query parameters include time range from <see cref="TimeClosed"/> to <seealso cref="TimeOpened"/>. /// </summary> private async Task AddModifiedFilesAsync() { TimeClosed = RoamingSettingsHelper.GetSetting <string>("timeclosed", "0"); ModifiedFiles = await Common.DirectoryWalker.GetModifiedFiles(LibraryFoldersCollection, TimeClosed); if (ModifiedFiles.Any()) { RenameAddOrDeleteFiles(ModifiedFiles); } }
public void SaveModifiedFiles() { HashSet <FileData> copy = new HashSet <FileData>(ModifiedFiles); foreach (FileData fileData in copy) { fileData.TrySaveFile(); } ModifiedFiles.Clear(); }
static void OnDelete(string relativePath, string externalPath) { string externalFile = Path.Combine(externalPath, relativePath); Debug.Log(string.Format("Deleted: {0} now Deleting: {1}", relativePath, externalFile)); ModifiedFiles modifiedFiles = ModifiedFiles.GetModifiedFiles(); if (File.Exists(externalFile)) { modifiedFiles.DeleteFile(externalFile); AssetDatabase.SaveAssets(); } }
public void Analyze() { ModifiedFiles.Clear(); foreach (var file in Pcaps) { string hash = CalculateMD5(file); Console.WriteLine("\"" + hash + "\","); if (desiredHashes.Contains(hash)) { var fileName = file.Split('\\').LastOrDefault(); ModifiedFiles.Add(fileName); } } ModifiedFiles.OrderBy(x => x); IsAnalizeComplete = true; }
public void Sync(IMp3File file, Mask mask, ISyncRule rule) { var errorFlag = true; _tager.CurrentFile = file; foreach (var operation in rule.OperationsList) { if (operation.Call(mask, _tager, file)) { OperationList.Add(operation); ModifiedFiles.Add(_tager.CurrentFile); errorFlag = false; break; } } if (errorFlag) { ErrorFiles.Add(_tager.CurrentFile.Name, "Can't sync this file"); } }
static void OnNewImport(string relativePath, string path, string externalPath) { string externalFile = Path.Combine(externalPath, relativePath); Debug.Log(string.Format("Imported: {0} now Creating: {1}", relativePath, externalFile)); ModifiedFiles modifiedFiles = ModifiedFiles.GetModifiedFiles(); if (File.Exists(externalFile)) { if (File.GetLastWriteTime(externalFile) < File.GetLastWriteTime(path)) { modifiedFiles.AddFile(path, externalFile); AssetDatabase.SaveAssets(); } } else { modifiedFiles.AddFile(path, externalFile); AssetDatabase.SaveAssets(); } }
private void ParseStatusResult(string stdout) { using (var reader = new StringReader(stdout)) { string line; while ((line = reader.ReadLine()) != null) { if (line.StartsWith("M")) { ModifiedFiles.Add(line.Substring(2).TrimStart()); } if (line.StartsWith("D")) { DeletedFiles.Add(line.Substring(2).TrimStart()); } if (line.StartsWith("A")) { NewFiles.Add(line.Substring(2).TrimStart()); } // renames (R) are ignored - won't be used in a Quince repository } } }
void OnGUI() { externalFolder = EditorPrefs.GetString(externalFolderKey); GUILayout.Label("Folder to Sync to"); string newExternalFolder = EditorGUILayout.TextField(externalFolder); EditorPrefs.SetString(externalFolderKey, newExternalFolder); GUILayout.Space(20); ModifiedFiles modifiedFiles = ModifiedFiles.GetModifiedFiles(); if (modifiedFiles.addedFiles == null || modifiedFiles.addedFiles.Count < 1) { GUILayout.BeginVertical(); GUILayout.Label("No added files"); GUILayout.EndVertical(); } else { GUILayout.BeginVertical(); for (int i = 0; i < modifiedFiles.addedFiles.Count; ++i) { FileMod modification = modifiedFiles.addedFiles[i]; GUILayout.BeginHorizontal(); GUILayout.Label(modification.sourcePath); if (GUILayout.Button("Discard")) { Debug.Log("This is supposed to discard"); modifiedFiles.addedFiles.RemoveAt(i); AssetDatabase.SaveAssets(); } GUILayout.EndHorizontal(); } if (GUILayout.Button("Push Changes")) { foreach (FileMod modification in modifiedFiles.addedFiles) { Directory.CreateDirectory(Path.GetDirectoryName(modification.destinationPath)); File.Copy(modification.sourcePath, modification.destinationPath, true); } modifiedFiles.addedFiles.Clear(); AssetDatabase.SaveAssets(); } GUILayout.EndVertical(); } GUILayout.Space(20); if (modifiedFiles.deletedFiles == null || modifiedFiles.deletedFiles.Count < 1) { GUILayout.BeginVertical(); GUILayout.Label("No deleted files"); GUILayout.EndVertical(); } else { GUILayout.BeginVertical(); foreach (string deletedFile in modifiedFiles.deletedFiles) { GUILayout.BeginHorizontal(); GUILayout.Label(deletedFile); if (GUILayout.Button("Discard")) { Debug.Log("This is supposed to discard"); } GUILayout.EndHorizontal(); } if (GUILayout.Button("Push Changes")) { Debug.Log("This doesn't work yet"); } GUILayout.EndVertical(); } }