Skip to content

Commit 28f7060

Browse files
committed
A few changes
1 parent 4a2375c commit 28f7060

File tree

3 files changed

+38
-11
lines changed

3 files changed

+38
-11
lines changed

CodeEdit/Features/LSP/Registry/PackageManagers/Sources/GithubPackageManager.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,16 @@ final class GithubPackageManager: PackageManagerProtocol {
167167
try FileManager.default.removeItem(at: packagePath)
168168
}
169169
await model.status("Decompressed to '\(downloadPath.path(percentEncoded: false))'")
170+
} else if packagePath.lastPathComponent.hasSuffix(".tar.gz") {
171+
await model.status("Decompressing \(fileName) using `tar`")
172+
_ = try await model.executeInDirectory(
173+
in: packagePath.deletingLastPathComponent().path(percentEncoded: false),
174+
[
175+
"tar",
176+
"-xzf",
177+
packagePath.path(percentEncoded: false).escapedDirectory(),
178+
]
179+
)
170180
} else if packagePath.pathExtension == "gz" {
171181
await model.status("Decompressing \(fileName) using `gunzip`")
172182
_ = try await model.executeInDirectory(

CodeEdit/Features/LSP/Registry/PackageManagers/Sources/NPMPackageManager.swift

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,20 +92,39 @@ final class NPMPackageManager: PackageManagerProtocol {
9292
// MARK: - NPM Install
9393

9494
func runNpmInstall(_ source: PackageSource, in packagePath: URL) -> PackageManagerInstallStep {
95-
PackageManagerInstallStep(
95+
let qualifiedSourceName = "\(source.pkgName)@\(source.version)"
96+
let otherPackages = source.options["extraPackages"]?
97+
.split(separator: ",")
98+
.map { $0.trimmingCharacters(in: .whitespacesAndNewlines) } ?? []
99+
100+
var packageList = ([qualifiedSourceName] + otherPackages)
101+
102+
// FIXME: This will break with localization. Use real Foundation APIs for pluralizing lists.
103+
let plural = packageList.count > 1
104+
if plural, var last = packageList.last {
105+
// Oxford comma
106+
last = "and " + last
107+
packageList[packageList.count - 1] = last
108+
}
109+
let packagesDescription = packageList.joined(separator: ", ")
110+
111+
let sSuffix = packageList.count > 1 ? "s" : ""
112+
let suffix = plural ? "these packages" : "this package"
113+
114+
return PackageManagerInstallStep(
96115
name: "Install Package Using npm",
97-
// TODO: Confirm
98-
confirmation: .required(message: "")
116+
confirmation: .required(
117+
message: "Package requires npm package\(sSuffix) \(packagesDescription)."
118+
+ "\nAllow CodeEdit to install \(suffix)?"
119+
)
99120
) { model in
100121
do {
101-
var installArgs = ["npm", "install", "\(source.pkgName)@\(source.version)"]
122+
var installArgs = ["npm", "install", qualifiedSourceName]
102123
if let dev = source.options["dev"], dev.lowercased() == "true" {
103124
installArgs.append("--save-dev")
104125
}
105-
if let extraPackages = source.options["extraPackages"]?.split(separator: ",") {
106-
for pkg in extraPackages {
107-
installArgs.append(String(pkg).trimmingCharacters(in: .whitespacesAndNewlines))
108-
}
126+
for extraPackage in otherPackages {
127+
installArgs.append(extraPackage)
109128
}
110129

111130
_ = try await model.executeInDirectory(in: packagePath.path, installArgs)

CodeEdit/Features/LSP/Registry/RegistryManager+HandleRegistryFile.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,7 @@ extension RegistryManager {
122122

123123
do {
124124
let registryData = try Data(contentsOf: registryPath)
125-
let items = try JSONDecoder().decode([RegistryItem].self, from: registryData).filter { item in
126-
[.github, .sourceBuild].contains(item.installMethod?.packageManagerType)
127-
}
125+
let items = try JSONDecoder().decode([RegistryItem].self, from: registryData)
128126
return items.filter { $0.categories.contains("LSP") }
129127
} catch {
130128
return nil

0 commit comments

Comments
 (0)