mirror of
https://github.com/apple/sourcekit-lsp.git
synced 2026-03-06 18:24:36 +01:00
This works around https://github.com/apple/swift-corelibs-foundation/issues/5041, which caused a null byte to be incorrectly added after the user name's home directory, causing, among others, directory iteration to recurse indefinitely, always adding another level of the user's name.
38 lines
1.3 KiB
Swift
38 lines
1.3 KiB
Swift
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2018 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See https://swift.org/LICENSE.txt for license information
|
|
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
import Foundation
|
|
import SwiftExtensions
|
|
|
|
import struct TSCBasic.AbsolutePath
|
|
|
|
extension AbsolutePath {
|
|
|
|
/// Inititializes an absolute path from a string, expanding a leading `~` to `homeDirectoryForCurrentUser` first.
|
|
package init(expandingTilde path: String) throws {
|
|
if path.first == "~" {
|
|
try self.init(
|
|
AbsolutePath(validating: FileManager.default.sanitizedHomeDirectoryForCurrentUser.path),
|
|
validating: String(path.dropFirst(2))
|
|
)
|
|
} else {
|
|
try self.init(validating: path)
|
|
}
|
|
}
|
|
}
|
|
|
|
/// The default directory to write generated files
|
|
/// `<TEMPORARY_DIRECTORY>/sourcekit-lsp/`
|
|
package var defaultDirectoryForGeneratedFiles: AbsolutePath {
|
|
try! AbsolutePath(validating: NSTemporaryDirectory()).appending(component: "sourcekit-lsp")
|
|
}
|