27 lines
1.0 KiB
Swift
27 lines
1.0 KiB
Swift
import ArgumentParser
|
|
import CommandLineTools
|
|
import Foundation
|
|
|
|
struct OutdatedPackages: ParsableCommand {
|
|
static let configuration = CommandConfiguration(abstract: "A tool to check outdated package dependencies. Please make sure you have already run setup-project before using this tool.")
|
|
|
|
private var projectSwiftPMDirectoryURL: URL {
|
|
.projectDirectory.appendingPathComponent("ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm")
|
|
}
|
|
|
|
func run() throws {
|
|
try checkToolsDependencies()
|
|
try checkProjectDependencies()
|
|
}
|
|
|
|
func checkToolsDependencies() throws {
|
|
guard let output = try Zsh.run(command: "swift outdated"), !output.isEmpty else { return }
|
|
print("outdated tools Swift packages:\n\(output)")
|
|
}
|
|
|
|
func checkProjectDependencies() throws {
|
|
guard let output = try Zsh.run(command: "swift outdated", directory: projectSwiftPMDirectoryURL), !output.isEmpty else { return }
|
|
print("outdated project Swift packages:\n\(output)")
|
|
}
|
|
}
|