public void OnResolveFileConflict_NoEventSubscribers_ReturnsIgnoreAll()
        {
            CreateEvents();
            FileConflictAction resolution = events.OnResolveFileConflict("message");

            Assert.AreEqual(FileConflictAction.IgnoreAll, resolution);
        }
Пример #2
0
 internal static void TryAddFile(IMSBuildNuGetProjectSystem msBuildNuGetProjectSystem, string path, Func <Stream> content)
 {
     if (msBuildNuGetProjectSystem.FileExistsInProject(path))
     {
         // file exists in project, ask user if he wants to overwrite or ignore
         string conflictMessage = String.Format(CultureInfo.CurrentCulture,
                                                Strings.FileConflictMessage, path, msBuildNuGetProjectSystem.ProjectName);
         FileConflictAction fileConflictAction = msBuildNuGetProjectSystem.NuGetProjectContext.ResolveFileConflict(conflictMessage);
         if (fileConflictAction == FileConflictAction.Overwrite || fileConflictAction == FileConflictAction.OverwriteAll)
         {
             // overwrite
             msBuildNuGetProjectSystem.NuGetProjectContext.Log(MessageLevel.Info, Strings.Info_OverwritingExistingFile, path);
             using (Stream stream = content())
             {
                 msBuildNuGetProjectSystem.AddFile(path, stream);
             }
         }
         else
         {
             // ignore
             msBuildNuGetProjectSystem.NuGetProjectContext.Log(MessageLevel.Warning, Strings.Warning_FileAlreadyExists, path);
         }
     }
     else
     {
         msBuildNuGetProjectSystem.AddFile(path, content());
     }
 }
Пример #3
0
        private async Task PasteAsync(IDataObject dataObject)
        {
            bool move;
            var  paths = dataObject.FromFileDropList(out move);

            conflictAction = FileConflictAction.None;

            var operations = paths
                             .Select(path => CopyOrMoveOperation(
                                         path,
                                         Path.Combine(Navigation.FullPath, Path.GetFileName(path)),
                                         move
                                         ))
                             .Where(o => o != null)
                             .ToArray();

            var dialog = new OperationProgressViewModel(operations)
            {
                Caption = $"{(move ? Properties.Resources.File_Moving : Properties.Resources.File_Copying)} {operations.Sum(o => o.Count)} files."
            };

            await Messenger.SendAsync(dialog);

            if (move && dialog.IsCancellationRequested == false)
            {
                ClipboardManager.Clear();
            }
        }
        FileConflictAction INuGetProjectContext.ResolveFileConflict(string message)
        {
            if (overwriteAll)
            {
                return(FileConflictAction.OverwriteAll);
            }

            if (ignoreAll)
            {
                return(FileConflictAction.IgnoreAll);
            }

            if (ConflictAction != null && ConflictAction != FileConflictAction.PromptUser)
            {
                return((FileConflictAction)ConflictAction);
            }

            FileConflictAction result = PackageManagementServices.PackageManagementEvents.OnResolveFileConflict(message);

            switch (result)
            {
            case FileConflictAction.IgnoreAll:
                ignoreAll = true;
                break;

            case FileConflictAction.OverwriteAll:
                overwriteAll = true;
                break;
            }
            return(result);
        }
        public void OnResolveFileConflict_OneEventSubscriberWhichChangesResolutionToOverwrite_ReturnsOverwrite()
        {
            CreateEvents();
            events.ResolveFileConflict += (sender, e) => e.Resolution = FileConflictAction.Overwrite;
            FileConflictAction resolution = events.OnResolveFileConflict("message");

            Assert.AreEqual(FileConflictAction.Overwrite, resolution);
        }
Пример #6
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var button = (Button)sender;
            string tagValue = (string)button.Tag;

            UserSelection = (FileConflictAction)Enum.Parse(typeof(FileConflictAction), tagValue);

            DialogResult = true;
        }
		FileConflictResolution GetFileConflictResolution (FileConflictAction fileConflictAction)
		{
			switch (fileConflictAction) {
				case FileConflictAction.Overwrite:
					return FileConflictResolution.Overwrite;
				default:
					return FileConflictResolution.Ignore;
			}
		}
		public ConsoleHostFileConflictResolver (
			IPackageManagementEvents packageEvents,
			FileConflictAction fileConflictAction)
		{
			this.packageEvents = packageEvents;
			
			conflictResolution = GetFileConflictResolution (fileConflictAction);
			packageEvents.ResolveFileConflict += ResolveFileConflict;
		}
Пример #9
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var button   = (Button)sender;
            var tagValue = (string)button.Tag;

            UserSelection = (FileConflictAction)Enum.Parse(typeof(FileConflictAction), tagValue);

            DialogResult = true;
        }
        public ConsoleHostFileConflictResolver(
            IPackageManagementEvents packageEvents,
            FileConflictAction fileConflictAction)
        {
            this.packageEvents = packageEvents;

            conflictResolution = GetFileConflictResolution(fileConflictAction);
            packageEvents.ResolveFileConflict += ResolveFileConflict;
        }
        public NuGetProjectContext(FileConflictAction fileConflictAction, IMessageDialogService messageDialogService, ILogger logger)
        {
            Argument.IsNotNull(() => messageDialogService);
            Argument.IsNotNull(() => logger);

            FileConflictAction = fileConflictAction;

            _messageDialogService = messageDialogService;
            _nugetLogger          = logger;
        }
        FileConflictResolution GetFileConflictResolution(FileConflictAction fileConflictAction)
        {
            switch (fileConflictAction)
            {
            case FileConflictAction.Overwrite:
                return(FileConflictResolution.Overwrite);

            default:
                return(FileConflictResolution.Ignore);
            }
        }
Пример #13
0
 void ResolveFileConflict(object sender, ResolveFileConflictEventArgs e)
 {
     if (UserPreviouslySelectedOverwriteAllOrIgnoreAll())
     {
         e.Resolution = lastFileConflictResolution;
     }
     else
     {
         GuiSyncDispatch(() => {
             e.Resolution = fileConflictResolver.ResolveFileConflict(e.Message);
         });
         lastFileConflictResolution = e.Resolution;
     }
 }
        public FileConflictAction ResolveFileConflict(string message)
        {
            if (FileConflictAction == FileConflictAction.PromptUser)
            {
                var resolution = ShowFileConflictResolution(message);

                if (resolution == FileConflictAction.IgnoreAll ||
                    resolution == FileConflictAction.OverwriteAll)
                {
                    FileConflictAction = resolution;
                }
                return resolution;
            }

            return FileConflictAction;
        }
        public FileConflictAction ResolveFileConflict(string message)
        {
            if (FileConflictAction == FileConflictAction.PromptUser)
            {
                var resolution = ShowFileConflictResolution(message);

                if (resolution == FileConflictAction.IgnoreAll ||
                    resolution == FileConflictAction.OverwriteAll)
                {
                    FileConflictAction = resolution;
                }
                return(resolution);
            }

            return(FileConflictAction);
        }
        public FileConflictAction ResolveFileConflict(string message)
        {
            if (context.FileConflictResolution.HasValue)
            {
                return(context.FileConflictResolution.Value);
            }

            // This should be using the PowerShell console host instead of a separate GUI.
            FileConflictAction conflictAction = Runtime.RunInMainThread(() => {
                var conflictResolver = new FileConflictResolver();
                return(conflictResolver.ResolveFileConflict(message));
            }).WaitAndGetResult();

            if (conflictAction == FileConflictAction.IgnoreAll || conflictAction == FileConflictAction.OverwriteAll)
            {
                context.FileConflictResolution = conflictAction;
            }

            return(conflictAction);
        }
Пример #17
0
        public static bool?CanWrite(this FileConflictAction action, string source, string destination)
        {
            if (File.Exists(source) == false)
            {
                return(null);
            }

            if (File.Exists(destination) == false)
            {
                return(true);
            }

            if (action.HasFlag(FileConflictAction.Overwrite))
            {
                return(true);
            }

            if (action.HasFlag(FileConflictAction.Newer))
            {
                return(new FileInfo(source).LastWriteTime > new FileInfo(destination).LastWriteTime);
            }

            return(false);
        }
		void CreateResolver(FileConflictAction action)
		{
			packageEvents = new PackageManagementEvents();
			resolver = new ConsoleHostFileConflictResolver(packageEvents, action);
		}
Пример #19
0
 public IConsoleHostFileConflictResolver CreateFileConflictResolver(FileConflictAction fileConflictAction)
 {
     return(new ConsoleHostFileConflictResolver(packageEvents, fileConflictAction));
 }
		public IConsoleHostFileConflictResolver CreateFileConflictResolver(FileConflictAction fileConflictAction)
		{
			return new ConsoleHostFileConflictResolver(packageEvents, fileConflictAction);
		}
 public FileConflictActionOptionItem(string text, FileConflictAction action)
 {
     Text = text;
     Action = action;
 }
        public INuGetProjectContext GetProjectContext(FileConflictAction fileConflictAction)
        {
            var projectContext = _typeFactory.CreateInstanceWithParametersAndAutoCompletion <NuGetProjectContext>(fileConflictAction);

            return(projectContext);
        }
 public IConsoleHostFileConflictResolver CreateFileConflictResolver(FileConflictAction fileConflictAction)
 {
     LastFileConflictActionUsedWhenCreatingResolver = fileConflictAction;
     return FakeFileConflictResolver;
 }
Пример #24
0
        private FileTraverseOperation CopyOrMoveOperation(string from, string to, bool move)
        {
            if (from == to)
            {
                if (move)
                {
                    return(null);
                }
                to = to.CopyableFileName();
            }

            return(new FileTraverseOperation(from, async(path) =>
            {
                var dest = path.Replace(from, to);

                if (path == dest)
                {
                    return false;
                }

                if (new FileInfo(path).Attributes.HasFlag(FileAttributes.Directory))
                {
                    try
                    {
                        if (Directory.Exists(dest) == false)
                        {
                            Directory.CreateDirectory(dest);
                        }

                        if (move)
                        {
                            Directory.Delete(path);
                        }
                    }
                    catch (UnauthorizedAccessException)
                    {
                        if (await ConfirmContinueOperationAsync(Properties.Resources.Copy_UnauthorizedException) == false)
                        {
                            return true;
                        }
                    }
                    catch (IOException)
                    {
                    }
                    return false;
                }

                if (conflictAction.HasFlag(FileConflictAction.ApplyToAll) == false)
                {
                    if ((conflictAction = await ConfirmFileConflictActionAsync(path, dest)) == FileConflictAction.None)
                    {
                        return true;
                    }
                }

                if (conflictAction.CanWrite(path, dest) == true)
                {
                    var restoreReadOnly = false;
                    if (File.Exists(dest))
                    {
                        var attributes = new FileInfo(dest).Attributes;
                        if (attributes.HasFlag(FileAttributes.ReadOnly))
                        {
                            attributes &= ~FileAttributes.ReadOnly;
                            File.SetAttributes(dest, attributes);
                            restoreReadOnly = true;
                        }
                    }

                    try
                    {
                        Directory.CreateDirectory(Path.GetDirectoryName(dest));
                        if (move)
                        {
                            if (path != dest)
                            {
                                File.Delete(dest);
                                File.Move(path, dest);
                            }
                        }
                        else
                        {
                            File.Copy(path, dest, true);
                        }
                    }
                    catch (UnauthorizedAccessException)
                    {
                        return await ConfirmContinueOperationAsync(Properties.Resources.Copy_UnauthorizedException);
                    }
                    catch (IOException)
                    {
                        return await ConfirmContinueOperationAsync(Properties.Resources.Copy_UnauthorizedException);
                    }

                    if (restoreReadOnly)
                    {
                        var attributes = new FileInfo(dest).Attributes;
                        attributes |= FileAttributes.ReadOnly;
                        File.SetAttributes(dest, attributes);
                    }
                }
                return false;
            }));
        }
 void CreateResolver(FileConflictAction action)
 {
     packageEvents = new PackageManagementEvents();
     resolver      = new ConsoleHostFileConflictResolver(packageEvents, action);
 }
		public IConsoleHostFileConflictResolver CreateFileConflictResolver(FileConflictAction fileConflictAction)
		{
			return null;
		}
 public INuGetProjectContext GetProjectContext(FileConflictAction fileConflictAction)
 {
     //no project context
     return(null);
 }
 public IConsoleHostFileConflictResolver CreateFileConflictResolver(FileConflictAction fileConflictAction)
 {
     LastFileConflictActionUsedWhenCreatingResolver = fileConflictAction;
     return(FakeFileConflictResolver);
 }
Пример #29
0
 public IConsoleHostFileConflictResolver CreateFileConflictResolver(FileConflictAction fileConflictAction)
 {
     return(null);
 }
 public FileConflictActionOptionItem(string text, FileConflictAction action)
 {
     Text   = text;
     Action = action;
 }
		void ResolveFileConflict(object sender, ResolveFileConflictEventArgs e)
		{
			if (UserPreviouslySelectedOverwriteAllOrIgnoreAll ()) {
				e.Resolution = lastFileConflictResolution;
			} else {
				GuiSyncDispatch (() => {
					e.Resolution = fileConflictResolver.ResolveFileConflict (e.Message);
				});
				lastFileConflictResolution = e.Resolution;
			}
		}
 public MyProjectContext(FileConflictAction fileConflictAction)
 {
     FileConflictAction = fileConflictAction;
 }