void CopyItem(string path, INodeFactory sourceNode, string copyPath, bool recurse) { ICopyItem copyItem = GetCopyItem(sourceNode); if (null == copyItem) { WriteCmdletNotSupportedAtNodeError(path, ProviderCmdlet.CopyItem, CopyItemNotSupportedErrorID); return; } if (!ShouldProcess(path, ProviderCmdlet.CopyItem)) { return; } try { IPathNode node = DoCopyItem(path, copyPath, recurse, copyItem); WritePathNode(copyPath, node); } catch (Exception e) { WriteGeneralCmdletError(e, CopyItemInvokeErrorID, path); } }
private IPathNode DoCopyItem(string path, string copyPath, bool recurse, ICopyItem copyItem) { bool targetNodeIsParentNode; var targetNodes = GetNodeFactoryFromPathOrParent(copyPath, out targetNodeIsParentNode); var targetNode = targetNodes.FirstOrDefault(); var sourceName = GetChildName(path); var copyName = targetNodeIsParentNode ? GetChildName(copyPath) : null; if (null == targetNode) { WriteError( new ErrorRecord( new CopyOrMoveToNonexistentContainerException(copyPath), CopyItemDestinationContainerDoesNotExistErrorID, ErrorCategory.WriteError, copyPath ) ); return(null); } return(copyItem.CopyItem(CreateContext(path), sourceName, copyName, targetNode.GetNodeValue(), recurse)); }
private IPathNode DoCopyItem(string path, string copyPath, bool recurse, ICopyItem copyItem) { bool targetNodeIsParentNode; var targetNodes = GetNodeFactoryFromPathOrParent(copyPath, out targetNodeIsParentNode); var targetNode = targetNodes.FirstOrDefault(); var sourceName = GetChildName(path); var copyName = targetNodeIsParentNode ? GetChildName(copyPath) : null; if (null == targetNode) { WriteError( new ErrorRecord( new CopyOrMoveToNonexistentContainerException(copyPath), CopyItemDestinationContainerDoesNotExistErrorID, ErrorCategory.WriteError, copyPath ) ); return null; } return copyItem.CopyItem(CreateContext(path), sourceName, copyName, targetNode.GetNodeValue(), recurse); }