Skip to content

Commit 7186666

Browse files
authored
Improve warning for deprecated collections config (#5745)
- Do not emit the warning for `swift build`, `swift test` etc, since these commands by definition to not work with package collections - Do emit the warning for `swift package-collections` by request an active workspace
1 parent 7db3a72 commit 7186666

File tree

4 files changed

+12
-4
lines changed

4 files changed

+12
-4
lines changed

Sources/Commands/SwiftPackageCollectionsTool.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,7 @@ private extension JSONEncoder {
384384

385385
private extension ParsableCommand {
386386
func with<T>(_ swiftTool: SwiftTool, handler: (_ collections: PackageCollectionsProtocol) throws -> T) throws -> T {
387+
_ = try? swiftTool.getActiveWorkspace(emitDeprecatedConfigurationWarning: true)
387388
let collections = PackageCollections(
388389
configuration: .init(
389390
configurationDirectory: swiftTool.sharedConfigurationDirectory,

Sources/Commands/SwiftTool.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@ public class SwiftTool {
486486
}
487487

488488
/// Returns the currently active workspace.
489-
func getActiveWorkspace() throws -> Workspace {
489+
func getActiveWorkspace(emitDeprecatedConfigurationWarning: Bool = false) throws -> Workspace {
490490
if let workspace = _workspace {
491491
return workspace
492492
}
@@ -506,7 +506,8 @@ public class SwiftTool {
506506
localConfigurationDirectory: try self.getLocalConfigurationDirectory(),
507507
sharedConfigurationDirectory: self.sharedConfigurationDirectory,
508508
sharedSecurityDirectory: self.sharedSecurityDirectory,
509-
sharedCacheDirectory: self.sharedCacheDirectory
509+
sharedCacheDirectory: self.sharedCacheDirectory,
510+
emitDeprecatedConfigurationWarning: emitDeprecatedConfigurationWarning
510511
),
511512
authorizationProvider: self.getAuthorizationProvider(),
512513
configuration: .init(

Sources/Workspace/Workspace+Configuration.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ extension Workspace {
5959
/// Path to the shared cache directory
6060
public var sharedCacheDirectory: AbsolutePath?
6161

62+
/// Whether or not to emit a warning about the existence of deprecated configuration files
63+
public var emitDeprecatedConfigurationWarning: Bool
64+
6265
// working directories
6366

6467
/// Path to the repositories clones.
@@ -154,6 +157,7 @@ extension Workspace {
154157
self.sharedConfigurationDirectory = sharedConfigurationDirectory
155158
self.sharedSecurityDirectory = sharedSecurityDirectory
156159
self.sharedCacheDirectory = sharedCacheDirectory
160+
self.emitDeprecatedConfigurationWarning = true
157161
}
158162

159163
/// Create a new workspace location.
@@ -172,7 +176,8 @@ extension Workspace {
172176
localConfigurationDirectory: AbsolutePath,
173177
sharedConfigurationDirectory: AbsolutePath?,
174178
sharedSecurityDirectory: AbsolutePath?,
175-
sharedCacheDirectory: AbsolutePath?
179+
sharedCacheDirectory: AbsolutePath?,
180+
emitDeprecatedConfigurationWarning: Bool = true
176181
) {
177182
self.scratchDirectory = scratchDirectory
178183
self.editsDirectory = editsDirectory
@@ -181,6 +186,7 @@ extension Workspace {
181186
self.sharedConfigurationDirectory = sharedConfigurationDirectory
182187
self.sharedSecurityDirectory = sharedSecurityDirectory
183188
self.sharedCacheDirectory = sharedCacheDirectory
189+
self.emitDeprecatedConfigurationWarning = emitDeprecatedConfigurationWarning
184190
}
185191

186192
/// Create a new workspace location.

Sources/Workspace/Workspace.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3669,7 +3669,7 @@ extension Workspace.Location {
36693669
if let sharedConfigurationDirectory = self.sharedConfigurationDirectory {
36703670
// It may not always be possible to create default location (for example de to restricted sandbox),
36713671
// in which case defaultDirectory would be nil.
3672-
let defaultDirectory = try? fileSystem.getOrCreateSwiftPMConfigurationDirectory(warningHandler: warningHandler)
3672+
let defaultDirectory = try? fileSystem.getOrCreateSwiftPMConfigurationDirectory(warningHandler: self.emitDeprecatedConfigurationWarning ? warningHandler : { _ in })
36733673
if defaultDirectory != nil, sharedConfigurationDirectory != defaultDirectory {
36743674
// custom location _must_ be writable, throw if we cannot access it
36753675
guard fileSystem.isWritable(sharedConfigurationDirectory) else {

0 commit comments

Comments
 (0)