@@ -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