@@ -71,24 +71,26 @@ extension Analyze {
7171
7272
7373 static func trimCheckouts( ) throws {
74+ @Dependency ( \. fileManager) var fileManager
7475 let checkoutDir = URL (
75- fileURLWithPath: Current . fileManager. checkoutsDirectory ( ) ,
76+ fileURLWithPath: fileManager. checkoutsDirectory ( ) ,
7677 isDirectory: true
7778 )
78- try Current . fileManager. contentsOfDirectory ( atPath: checkoutDir. path)
79+ try fileManager. contentsOfDirectory ( atPath: checkoutDir. path)
7980 . map { dir -> ( String , Date ) ? in
8081 let url = checkoutDir. appendingPathComponent ( dir)
81- guard let mod = try Current . fileManager
82+ guard let mod = try fileManager
8283 . attributesOfItem ( atPath: url. path) [ . modificationDate] as? Date
8384 else { return nil }
8485 return ( url. path, mod)
8586 }
8687 . forEach { pair in
8788 guard let ( path, mod) = pair else { return }
8889 @Dependency ( \. date. now) var now
90+ @Dependency ( \. fileManager) var fileManager
8991 let cutoff = now. addingTimeInterval ( - Constants. gitCheckoutMaxAge)
9092 if mod < cutoff {
91- try Current . fileManager. removeItem ( atPath: path)
93+ try fileManager. removeItem ( atPath: path)
9294 AppMetrics . analyzeTrimCheckoutsCount? . inc ( )
9395 }
9496 }
@@ -139,9 +141,10 @@ extension Analyze {
139141 AppMetrics . analyzeCandidatesCount? . set ( packages. count)
140142
141143 // get or create directory
142- let checkoutDir = Current . fileManager. checkoutsDirectory ( )
144+ @Dependency ( \. fileManager) var fileManager
145+ let checkoutDir = fileManager. checkoutsDirectory ( )
143146 Current . logger ( ) . info ( " Checkout directory: \( checkoutDir) " )
144- if !Current . fileManager. fileExists ( atPath: checkoutDir) {
147+ if !fileManager. fileExists ( atPath: checkoutDir) {
145148 try await createCheckoutsDirectory ( client: client, path: checkoutDir)
146149 }
147150
@@ -234,9 +237,10 @@ extension Analyze {
234237 path: String) async throws {
235238 Current . logger ( ) . info ( " Creating checkouts directory at path: \( path) " )
236239 do {
237- try Current . fileManager. createDirectory ( atPath: path,
238- withIntermediateDirectories: false ,
239- attributes: nil )
240+ @Dependency ( \. fileManager) var fileManager
241+ try fileManager. createDirectory ( atPath: path,
242+ withIntermediateDirectories: false ,
243+ attributes: nil )
240244 } catch {
241245 let error = AppError . genericError ( nil , " Failed to create checkouts directory: \( error. localizedDescription) " )
242246 Current . logger ( ) . report ( error: error)
@@ -251,8 +255,9 @@ extension Analyze {
251255 /// - Throws: Shell errors
252256 static func clone( cacheDir: String, url: String) async throws {
253257 Current . logger ( ) . info ( " cloning \( url) to \( cacheDir) " )
258+ @Dependency ( \. fileManager) var fileManager
254259 try await Current . shell. run ( command: . gitClone( url: URL ( string: url) !, to: cacheDir) ,
255- at: Current . fileManager. checkoutsDirectory ( ) )
260+ at: fileManager. checkoutsDirectory ( ) )
256261 }
257262
258263
@@ -263,11 +268,12 @@ extension Analyze {
263268 /// - url: url to fetch from
264269 /// - Throws: Shell errors
265270 static func fetch( cacheDir: String, branch: String, url: String) async throws {
271+ @Dependency ( \. fileManager) var fileManager
266272 Current . logger ( ) . info ( " pulling \( url) in \( cacheDir) " )
267273 // clean up stray lock files that might have remained from aborted commands
268274 for fileName in [ " HEAD.lock " , " index.lock " ] {
269275 let filePath = cacheDir + " /.git/ \( fileName) "
270- if Current . fileManager. fileExists ( atPath: filePath) {
276+ if fileManager. fileExists ( atPath: filePath) {
271277 Current . logger ( ) . info ( " Removing stale \( fileName) at path: \( filePath) " )
272278 try await Current . shell. run ( command: . removeFile( from: filePath) )
273279 }
@@ -286,12 +292,13 @@ extension Analyze {
286292 /// - Parameters:
287293 /// - package: `Package` to refresh
288294 static func refreshCheckout( package : Joined < Package , Repository > ) async throws {
289- guard let cacheDir = Current . fileManager. cacheDirectoryPath ( for: package . model) else {
295+ @Dependency ( \. fileManager) var fileManager
296+ guard let cacheDir = fileManager. cacheDirectoryPath ( for: package . model) else {
290297 throw AppError . invalidPackageCachePath ( package . model. id, package . model. url)
291298 }
292299
293300 do {
294- guard Current . fileManager. fileExists ( atPath: cacheDir) else {
301+ guard fileManager. fileExists ( atPath: cacheDir) else {
295302 try await clone ( cacheDir: cacheDir, url: package . model. url)
296303 return
297304 }
@@ -322,7 +329,8 @@ extension Analyze {
322329 guard let repo = package . repository else {
323330 throw AppError . genericError ( package . model. id, " updateRepository: no repository " )
324331 }
325- guard let gitDirectory = Current . fileManager. cacheDirectoryPath ( for: package . model) else {
332+ @Dependency ( \. fileManager) var fileManager
333+ guard let gitDirectory = fileManager. cacheDirectoryPath ( for: package . model) else {
326334 throw AppError . invalidPackageCachePath ( package . model. id, package . model. url)
327335 }
328336
@@ -375,7 +383,8 @@ extension Analyze {
375383 /// - Returns: future with incoming `Version`s
376384 static func getIncomingVersions( client: Client,
377385 package : Joined < Package , Repository > ) async throws -> [ Version] {
378- guard let cacheDir = Current . fileManager. cacheDirectoryPath ( for: package . model) else {
386+ @Dependency ( \. fileManager) var fileManager
387+ guard let cacheDir = fileManager. cacheDirectoryPath ( for: package . model) else {
379388 throw AppError . invalidPackageCachePath ( package . model. id, package . model. url)
380389 }
381390
@@ -523,7 +532,8 @@ extension Analyze {
523532 /// - Throws: Shell errors or AppError.invalidRevision if there is no Package.swift file
524533 /// - Returns: `Manifest` data
525534 static func dumpPackage( at path: String) async throws -> Manifest {
526- guard Current . fileManager. fileExists ( atPath: path + " /Package.swift " ) else {
535+ @Dependency ( \. fileManager) var fileManager
536+ guard fileManager. fileExists ( atPath: path + " /Package.swift " ) else {
527537 // It's important to check for Package.swift - otherwise `dump-package` will go
528538 // up the tree through parent directories to find one
529539 throw AppError . invalidRevision ( nil , " no Package.swift " )
@@ -546,7 +556,8 @@ extension Analyze {
546556 /// - Returns: `Result` with `Manifest` data
547557 static func getPackageInfo( package : Joined < Package , Repository > , version: Version) async throws -> PackageInfo {
548558 // check out version in cache directory
549- guard let cacheDir = Current . fileManager. cacheDirectoryPath ( for: package . model) else {
559+ @Dependency ( \. fileManager) var fileManager
560+ guard let cacheDir = fileManager. cacheDirectoryPath ( for: package . model) else {
550561 throw AppError . invalidPackageCachePath ( package . model. id,
551562 package . model. url)
552563 }
0 commit comments