Skip to content

Commit d2ad826

Browse files
authored
Merge pull request #665 from aciidb0mb3r/update-cli
[PackageTool] Add update cli for new resolver
2 parents b03e18d + 2a0f493 commit d2ad826

File tree

1 file changed

+23
-19
lines changed

1 file changed

+23
-19
lines changed

Sources/Commands/SwiftPackageTool.swift

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -166,30 +166,34 @@ public class SwiftPackageTool: SwiftTool<PackageMode, PackageToolOptions> {
166166
break
167167

168168
case .update:
169-
let packagesDirectory = try getCheckoutsDirectory()
170-
// Attempt to ensure that none of the repositories are modified.
171-
if localFileSystem.exists(packagesDirectory) {
172-
for name in try localFileSystem.getDirectoryContents(packagesDirectory) {
173-
let item = packagesDirectory.appending(RelativePath(name))
169+
if options.enableNewResolver {
170+
let workspace = try getActiveWorkspace()
171+
try workspace.updateDependencies()
172+
} else {
173+
let packagesDirectory = try getCheckoutsDirectory()
174+
// Attempt to ensure that none of the repositories are modified.
175+
if localFileSystem.exists(packagesDirectory) {
176+
for name in try localFileSystem.getDirectoryContents(packagesDirectory) {
177+
let item = packagesDirectory.appending(RelativePath(name))
174178

175-
// Only look at repositories.
176-
guard exists(item.appending(component: ".git")) else { continue }
179+
// Only look at repositories.
180+
guard exists(item.appending(component: ".git")) else { continue }
177181

178-
// If there is a staged or unstaged diff, don't remove the
179-
// tree. This won't detect new untracked files, but it is
180-
// just a safety measure for now.
181-
let diffArgs = ["--no-ext-diff", "--quiet", "--exit-code"]
182-
do {
183-
_ = try Git.runPopen([Git.tool, "-C", item.asString, "diff"] + diffArgs)
184-
_ = try Git.runPopen([Git.tool, "-C", item.asString, "diff", "--cached"] + diffArgs)
185-
} catch {
186-
throw Error.repositoryHasChanges(item.asString)
182+
// If there is a staged or unstaged diff, don't remove the
183+
// tree. This won't detect new untracked files, but it is
184+
// just a safety measure for now.
185+
let diffArgs = ["--no-ext-diff", "--quiet", "--exit-code"]
186+
do {
187+
_ = try Git.runPopen([Git.tool, "-C", item.asString, "diff"] + diffArgs)
188+
_ = try Git.runPopen([Git.tool, "-C", item.asString, "diff", "--cached"] + diffArgs)
189+
} catch {
190+
throw Error.repositoryHasChanges(item.asString)
191+
}
187192
}
193+
try removeFileTree(packagesDirectory)
188194
}
189-
try removeFileTree(packagesDirectory)
195+
_ = try loadPackage()
190196
}
191-
fallthrough
192-
193197
case .fetch:
194198
_ = try loadPackage()
195199

0 commit comments

Comments
 (0)