Don’t overwrite a file with a directory
This commit is contained in:
@@ -5,13 +5,14 @@ public extension Path {
|
|||||||
Copies a file.
|
Copies a file.
|
||||||
- Note: `throws` if `to` is a directory.
|
- Note: `throws` if `to` is a directory.
|
||||||
- Parameter to: Destination filename.
|
- Parameter to: Destination filename.
|
||||||
- Parameter overwrite: If true overwrites any file that already exists at `to`.
|
- Parameter overwrite: If `true` and both `self` and `to` are files, overwrites `to`.
|
||||||
|
- Note: If either `self` or `to are directories, `overwrite` is ignored.
|
||||||
- Returns: `to` to allow chaining
|
- Returns: `to` to allow chaining
|
||||||
- SeeAlso: `copy(into:overwrite:)`
|
- SeeAlso: `copy(into:overwrite:)`
|
||||||
*/
|
*/
|
||||||
@discardableResult
|
@discardableResult
|
||||||
public func copy(to: Path, overwrite: Bool = false) throws -> Path {
|
public func copy(to: Path, overwrite: Bool = false) throws -> Path {
|
||||||
if overwrite, to.exists {
|
if overwrite, to.isFile, isFile {
|
||||||
try FileManager.default.removeItem(at: to.url)
|
try FileManager.default.removeItem(at: to.url)
|
||||||
}
|
}
|
||||||
try FileManager.default.copyItem(atPath: string, toPath: to.string)
|
try FileManager.default.copyItem(atPath: string, toPath: to.string)
|
||||||
|
|||||||
Reference in New Issue
Block a user