Skip to content

Commit

Permalink
added async variation of withCurrentDirectoryPath
Browse files Browse the repository at this point in the history
  • Loading branch information
bscothern committed Dec 7, 2022
1 parent 2ec65a5 commit 527a387
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions Sources/swsh/Utilities.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,16 @@ extension FileManager {
defer { _ = changeCurrentDirectoryPath(oldPath) }
return try body()
}

/// Change current directory to `path` for the duration of `body`, then return to previous directory.
/// - Throws: `ChangeDirectoryFailedError` if directory change fails, rethrows errors from `body`
/// - Returns: the result of `body`
public func withCurrentDirectoryPath<Result>(_ path: String, body: () async throws -> Result) async throws -> Result {
let oldPath = currentDirectoryPath
guard changeCurrentDirectoryPath(path) else {
throw ChangeDirectoryFailedError()
}
defer { _ = changeCurrentDirectoryPath(oldPath) }
return try await body()
}
}

0 comments on commit 527a387

Please sign in to comment.