Skip to content

Commit f3e147c

Browse files
committed
Fix MintfileBuilder.write() need rawData from Package.swift
1 parent 41b690e commit f3e147c

File tree

1 file changed

+33
-9
lines changed

1 file changed

+33
-9
lines changed

.github/dependabot-mintfile/MintfileBuilder.swift

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,22 +32,42 @@ struct MintfileBuilder {
3232
)
3333
]
3434

35-
func addVersionUpdatesManifests() {
35+
func addVersionUpdatesManifests() {
3636
for dependency in dependencies {
3737
let manifestPath = ".github/dependabot-mintfile/manifest-\(dependency.name)"
3838
shell("mkdir -p \(manifestPath); swift package --package-path \(manifestPath) init --type empty")
3939
shell("mkdir -p \(manifestPath); swift package --package-path \(manifestPath) add-dependency \(dependency.urlString) --exact \(dependency.version)")
4040
}
4141
}
4242

43-
func write(to path: String = "Mintfile") {
44-
let lines = dependencies.map { "\($0.path)@\($0.version)" }
45-
let content = lines.joined(separator: "\n") + "\n"
46-
do {
47-
try content.write(toFile: path, atomically: true, encoding: .utf8)
48-
} catch {
49-
print("Failed to write Mintfile: \(error)")
43+
/// provided from ChatGPT
44+
func write(to path: String = "Mintfile") throws {
45+
var lines: [String] = []
46+
47+
for dependency in dependencies {
48+
let manifestPath = ".github/dependabot-mintfile/manifest-\(dependency.name)" + "/Package.swift"
49+
let contents = try String(contentsOfFile: manifestPath, encoding: .utf8)
50+
51+
let pattern = #"\.package\(url:\s*"(.*?)",\s*exact:\s*"(.*?)"\)"#
52+
let regex = try NSRegularExpression(pattern: pattern)
53+
54+
if let match = regex.firstMatch(in: contents, range: NSRange(contents.startIndex..., in: contents)),
55+
let versionRange = Range(match.range(at: 2), in: contents),
56+
let urlRange = Range(match.range(at: 1), in: contents) {
57+
58+
let version = String(contents[versionRange])
59+
let path = URL(string: String(contents[urlRange]))?
60+
.path
61+
.split(separator: "/")
62+
.joined(separator: "/")
63+
64+
if let path {
65+
lines.append("\(path)@\(version)")
66+
}
67+
}
5068
}
69+
let content = lines.joined(separator: "\n") + "\n"
70+
try content.write(toFile: path, atomically: true, encoding: .utf8)
5171
}
5272

5373
@discardableResult
@@ -62,4 +82,8 @@ struct MintfileBuilder {
6282
}
6383

6484
// MintfileBuilder().addVersionUpdatesManifests()
65-
MintfileBuilder().write()
85+
do {
86+
try MintfileBuilder().write()
87+
} catch {
88+
print(error)
89+
}

0 commit comments

Comments
 (0)