Skip to content

Commit f807ce6

Browse files
committed
[SwiftRefactor] PackageManifest: Make a couple of properties externally accessible
In it's current state `AddPackageTarget` does multiple things: 1. Updates the manifest to introduce new targets and dependencies. 2. Generates one or more auxiliary files depending on the type of target being added (i.e. a primary file for the target and sometimes a macro specific defintions file). We'd like to scope the refactoring action down to manifest updates only. The callers are going to be resposble for #2 from the list. In order to do that `PackageTarget.sanitizedName` and `PackageTarget.Dependency.name` have to be externally accessible (under `@_spi(PackageRefactor)` still) to form the content of the file.
1 parent 1d458d9 commit f807ce6

File tree

2 files changed

+20
-24
lines changed

2 files changed

+20
-24
lines changed

Sources/SwiftRefactor/PackageManifest/AddPackageTarget.swift

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -295,18 +295,6 @@ public struct AddPackageTarget: ManifestEditRefactoringProvider {
295295
}
296296
}
297297

298-
fileprivate extension PackageTarget.Dependency {
299-
/// Retrieve the name of the dependency
300-
var name: String {
301-
switch self {
302-
case .target(let name),
303-
.byName(let name),
304-
.product(let name, package: _):
305-
return name
306-
}
307-
}
308-
}
309-
310298
/// The array of auxiliary files that can be added by a package editing
311299
/// operation.
312300
private typealias AuxiliaryFiles = [(String, SourceFileSyntax)]
@@ -346,18 +334,6 @@ fileprivate extension PackageDependency {
346334
}
347335
}
348336

349-
fileprivate extension PackageTarget {
350-
var sanitizedName: String {
351-
name
352-
.mangledToC99ExtendedIdentifier()
353-
.localizedFirstWordCapitalized()
354-
}
355-
}
356-
357-
fileprivate extension String {
358-
func localizedFirstWordCapitalized() -> String { prefix(1).uppercased() + dropFirst() }
359-
}
360-
361337
extension SourceFileSyntax {
362338
private class ContainsLiteralVisitor: SyntaxVisitor {
363339
let string: String

Sources/SwiftRefactor/PackageManifest/PackageTarget.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ import SwiftSyntax
1818
public struct PackageTarget {
1919
public let name: String
2020

21+
public var sanitizedName: String {
22+
name
23+
.mangledToC99ExtendedIdentifier()
24+
.localizedFirstWordCapitalized()
25+
}
26+
2127
/// The type of target.
2228
public let type: TargetKind
2329

@@ -51,6 +57,16 @@ public struct PackageTarget {
5157
case byName(name: String)
5258
case target(name: String)
5359
case product(name: String, package: String?)
60+
61+
/// Retrieve the name of the dependency
62+
public var name: String {
63+
switch self {
64+
case .byName(let name),
65+
.target(let name),
66+
.product(let name, package: _):
67+
return name
68+
}
69+
}
5470
}
5571

5672
public init(
@@ -141,3 +157,7 @@ extension PackageTarget.PluginUsage: ManifestSyntaxRepresentable {
141157
}
142158
}
143159
}
160+
161+
fileprivate extension String {
162+
func localizedFirstWordCapitalized() -> String { prefix(1).uppercased() + dropFirst() }
163+
}

0 commit comments

Comments
 (0)