diff --git a/Sources/tart/Commands/Get.swift b/Sources/tart/Commands/Get.swift index 9867c67..62f6526 100644 --- a/Sources/tart/Commands/Get.swift +++ b/Sources/tart/Commands/Get.swift @@ -23,9 +23,9 @@ struct Get: AsyncParsableCommand { let vmConfig = try VMConfig(fromURL: vmDir.configURL) let diskSizeInGb = try vmDir.sizeGB() let memorySizeInMb = vmConfig.memorySize / 1024 / 1024 - let running = try PIDLock(lockURL: vmDir.configURL).pid() > 0 - let info = VMInfo(CPU: vmConfig.cpuCount, Memory: memorySizeInMb, Disk: diskSizeInGb, Display: vmConfig.display.description, Running: running) + let info = VMInfo(CPU: vmConfig.cpuCount, Memory: memorySizeInMb, Disk: diskSizeInGb, + Display: vmConfig.display.description, Running: try vmDir.running()) print(format.renderSingle(info)) } } diff --git a/Sources/tart/Commands/List.swift b/Sources/tart/Commands/List.swift index f7c864c..a8174e5 100644 --- a/Sources/tart/Commands/List.swift +++ b/Sources/tart/Commands/List.swift @@ -6,6 +6,7 @@ fileprivate struct VMInfo: Encodable { let Source: String let Name: String let Size: Int + let Running: Bool } struct List: AsyncParsableCommand { @@ -32,17 +33,19 @@ struct List: AsyncParsableCommand { func run() async throws { var infos: [VMInfo] = [] + if source == nil || source == "local" { infos += sortedInfos(try VMStorageLocal().list().map { (name, vmDir) in - try VMInfo(Source: "local", Name: name, Size: vmDir.sizeGB()) + try VMInfo(Source: "local", Name: name, Size: vmDir.sizeGB(), Running: vmDir.running()) }) } if source == nil || source == "oci" { infos += sortedInfos(try VMStorageOCI().list().map { (name, vmDir, _) in - try VMInfo(Source: "oci", Name: name, Size: vmDir.sizeGB()) + try VMInfo(Source: "oci", Name: name, Size: vmDir.sizeGB(), Running: vmDir.running()) }) } + if (quiet) { for info in infos { print(info.Name) diff --git a/Sources/tart/VMDirectory.swift b/Sources/tart/VMDirectory.swift index 813915c..4bd01da 100644 --- a/Sources/tart/VMDirectory.swift +++ b/Sources/tart/VMDirectory.swift @@ -26,6 +26,10 @@ struct VMDirectory: Prunable { baseURL } + func running() throws -> Bool { + try PIDLock(lockURL: configURL).pid() != 0 + } + static func temporary() throws -> VMDirectory { let tmpDir = try Config().tartTmpDir.appendingPathComponent(UUID().uuidString) try FileManager.default.createDirectory(at: tmpDir, withIntermediateDirectories: false)