@@ -30,7 +30,8 @@ enum Analyze {
3030 func run( using context: CommandContext , signature: SPICommand . Signature ) async throws {
3131 let client = context. application. client
3232 let db = context. application. db
33- Current . setLogger ( Logger ( component: " analyze " ) )
33+ @Dependency ( \. logger) var logger
34+ logger. set ( to: Logger ( component: " analyze " ) )
3435
3536 Analyze . resetMetrics ( )
3637
@@ -39,20 +40,20 @@ enum Analyze {
3940 database: db,
4041 mode: . init( signature: signature) )
4142 } catch {
42- Current . logger ( ) . error ( " \( error. localizedDescription) " )
43+ logger. error ( " \( error. localizedDescription) " )
4344 }
4445
4546 do {
4647 try Analyze . trimCheckouts ( )
4748 } catch {
48- Current . logger ( ) . error ( " \( error. localizedDescription) " )
49+ logger. error ( " \( error. localizedDescription) " )
4950 }
5051
5152 do {
5253 try await AppMetrics . push ( client: client,
5354 jobName: " analyze " )
5455 } catch {
55- Current . logger ( ) . warning ( " \( error. localizedDescription) " )
56+ logger. warning ( " \( error. localizedDescription) " )
5657 }
5758 }
5859 }
@@ -110,19 +111,21 @@ extension Analyze {
110111 let start = DispatchTime . now ( ) . uptimeNanoseconds
111112 defer { AppMetrics . analyzeDurationSeconds? . time ( since: start) }
112113
114+ @Dependency ( \. logger) var logger
115+
113116 switch mode {
114117 case . id( let id) :
115- Current . logger ( ) . info ( " Analyzing (id: \( id) ) ... " )
118+ logger. info ( " Analyzing (id: \( id) ) ... " )
116119 let pkg = try await Package . fetchCandidate ( database, id: id)
117120 try await analyze ( client: client, database: database, packages: [ pkg] )
118121
119122 case . limit( let limit) :
120- Current . logger ( ) . info ( " Analyzing (limit: \( limit) ) ... " )
123+ logger. info ( " Analyzing (limit: \( limit) ) ... " )
121124 let packages = try await Package . fetchCandidates ( database, for: . analysis, limit: limit)
122125 try await analyze ( client: client, database: database, packages: packages)
123126
124127 case . url( let url) :
125- Current . logger ( ) . info ( " Analyzing (url: \( url) ) ... " )
128+ logger. info ( " Analyzing (url: \( url) ) ... " )
126129 let pkg = try await Package . fetchCandidate ( database, url: url)
127130 try await analyze ( client: client, database: database, packages: [ pkg] )
128131 }
@@ -140,10 +143,12 @@ extension Analyze {
140143 packages: [ Joined < Package , Repository > ] ) async throws {
141144 AppMetrics . analyzeCandidatesCount? . set ( packages. count)
142145
143- // get or create directory
144146 @Dependency ( \. fileManager) var fileManager
147+ @Dependency ( \. logger) var logger
148+
149+ // get or create directory
145150 let checkoutDir = fileManager. checkoutsDirectory ( )
146- Current . logger ( ) . info ( " Checkout directory: \( checkoutDir) " )
151+ logger. info ( " Checkout directory: \( checkoutDir) " )
147152 if !fileManager. fileExists ( atPath: checkoutDir) {
148153 try await createCheckoutsDirectory ( client: client, path: checkoutDir)
149154 }
@@ -170,6 +175,8 @@ extension Analyze {
170175 package : Joined < Package , Repository > ) async throws {
171176 try await refreshCheckout ( package : package )
172177
178+ @Dependency ( \. logger) var logger
179+
173180 // 2024-10-05 sas: We need to explicitly weave dependencies into the `transaction` closure, because escaping closures strip them.
174181 // https://github.com/pointfreeco/swift-dependencies/discussions/283#discussioncomment-10846172
175182 // This might not be needed in Vapor 5 / FluentKit 2
@@ -183,7 +190,7 @@ extension Analyze {
183190 package : package )
184191 let netDeleteCount = versionDelta. toDelete. count - versionDelta. toAdd. count
185192 if netDeleteCount > 1 {
186- Current . logger ( ) . warning ( " Suspicious loss of \( netDeleteCount) versions for package \( package . model. id) " )
193+ logger. warning ( " Suspicious loss of \( netDeleteCount) versions for package \( package . model. id) " )
187194 }
188195
189196 try await applyVersionDelta ( on: tx, delta: versionDelta)
@@ -235,15 +242,16 @@ extension Analyze {
235242
236243 static func createCheckoutsDirectory( client: Client,
237244 path: String) async throws {
238- Current . logger ( ) . info ( " Creating checkouts directory at path: \( path) " )
245+ @Dependency ( \. logger) var logger
246+ logger. info ( " Creating checkouts directory at path: \( path) " )
239247 do {
240248 @Dependency ( \. fileManager) var fileManager
241249 try fileManager. createDirectory ( atPath: path,
242250 withIntermediateDirectories: false ,
243251 attributes: nil )
244252 } catch {
245253 let error = AppError . genericError ( nil , " Failed to create checkouts directory: \( error. localizedDescription) " )
246- Current . logger ( ) . report ( error: error)
254+ logger . logger. report ( error: error)
247255 }
248256 }
249257
@@ -254,7 +262,8 @@ extension Analyze {
254262 /// - url: url to clone from
255263 /// - Throws: Shell errors
256264 static func clone( cacheDir: String, url: String) async throws {
257- Current . logger ( ) . info ( " cloning \( url) to \( cacheDir) " )
265+ @Dependency ( \. logger) var logger
266+ logger. info ( " cloning \( url) to \( cacheDir) " )
258267 @Dependency ( \. fileManager) var fileManager
259268 @Dependency ( \. shell) var shell
260269 try await shell. run ( command: . gitClone( url: URL ( string: url) !, to: cacheDir) ,
@@ -270,13 +279,14 @@ extension Analyze {
270279 /// - Throws: Shell errors
271280 static func fetch( cacheDir: String, branch: String, url: String) async throws {
272281 @Dependency ( \. fileManager) var fileManager
282+ @Dependency ( \. logger) var logger
273283 @Dependency ( \. shell) var shell
274- Current . logger ( ) . info ( " pulling \( url) in \( cacheDir) " )
284+ logger. info ( " pulling \( url) in \( cacheDir) " )
275285 // clean up stray lock files that might have remained from aborted commands
276286 for fileName in [ " HEAD.lock " , " index.lock " ] {
277287 let filePath = cacheDir + " /.git/ \( fileName) "
278288 if fileManager. fileExists ( atPath: filePath) {
279- Current . logger ( ) . info ( " Removing stale \( fileName) at path: \( filePath) " )
289+ logger. info ( " Removing stale \( fileName) at path: \( filePath) " )
280290 try await shell. run ( command: . removeFile( from: filePath) , at: . cwd)
281291 }
282292 }
@@ -294,6 +304,7 @@ extension Analyze {
294304 /// - package: `Package` to refresh
295305 static func refreshCheckout( package : Joined < Package , Repository > ) async throws {
296306 @Dependency ( \. fileManager) var fileManager
307+ @Dependency ( \. logger) var logger
297308 @Dependency ( \. shell) var shell
298309
299310 guard let cacheDir = fileManager. cacheDirectoryPath ( for: package . model) else {
@@ -313,7 +324,7 @@ extension Analyze {
313324 branch: package . repository? . defaultBranch ?? " master " ,
314325 url: package . model. url)
315326 } catch {
316- Current . logger ( ) . info ( " fetch failed: \( error. localizedDescription) " )
327+ logger. info ( " fetch failed: \( error. localizedDescription) " )
317328 try await shell. run ( command: . removeFile( from: cacheDir, arguments: [ " -r " , " -f " ] ) , at: . cwd)
318329 try await clone ( cacheDir: cacheDir, url: package . model. url)
319330 }
@@ -357,6 +368,8 @@ extension Analyze {
357368 static func diffVersions( client: Client,
358369 transaction: Database,
359370 package : Joined < Package , Repository > ) async throws -> VersionDelta {
371+ @Dependency ( \. logger) var logger
372+
360373 guard let pkgId = package . model. id else {
361374 throw AppError . genericError ( nil , " PANIC: package id nil for package \( package . model. url) " )
362375 }
@@ -374,7 +387,7 @@ extension Analyze {
374387 let newDiff = Version . diff ( local: existing, incoming: throttled)
375388 let delta = origDiff. toAdd. count - newDiff. toAdd. count
376389 if delta > 0 {
377- Current . logger ( ) . info ( " throttled \( delta) incoming revisions " )
390+ logger. info ( " throttled \( delta) incoming revisions " )
378391 AppMetrics . buildThrottleCount? . inc ( delta)
379392 }
380393 return newDiff
@@ -506,12 +519,13 @@ extension Analyze {
506519 /// have processed the new version.
507520 /// - Parameter versionDelta: The version change
508521 static func carryOverDefaultBranchData( versionDelta: VersionDelta) {
522+ @Dependency ( \. logger) var logger
509523 guard versionDelta. toDelete. filter ( \. isBranch) . count <= 1 else {
510- Current . logger ( ) . warning ( " versionDelta.toDelete has more than one branch version " )
524+ logger. warning ( " versionDelta.toDelete has more than one branch version " )
511525 return
512526 }
513527 guard versionDelta. toAdd. filter ( \. isBranch) . count <= 1 else {
514- Current . logger ( ) . warning ( " versionDelta.toAdd has more than one branch version " )
528+ logger. warning ( " versionDelta.toAdd has more than one branch version " )
515529 return
516530 }
517531 guard let oldDefaultBranch = versionDelta. toDelete. first ( where: \. isBranch) ,
@@ -745,7 +759,8 @@ extension Analyze {
745759 package : package ,
746760 versions: versions)
747761 } catch {
748- Current . logger ( ) . warning ( " Social.postToFirehose failed: \( error. localizedDescription) " )
762+ @Dependency ( \. logger) var logger
763+ logger. warning ( " Social.postToFirehose failed: \( error. localizedDescription) " )
749764 }
750765 }
751766
0 commit comments