Skip to content

Commit

Permalink
feat: added async variation of withCurrentDirectoryPath
Browse files Browse the repository at this point in the history
  • Loading branch information
bscothern committed Jan 28, 2024
1 parent 2ec65a5 commit ce7a75b
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 ce7a75b

Please sign in to comment.