tart export: make export path optional (#454)

This commit is contained in:
Nikolay Edigaryev
2023-03-27 16:59:57 +00:00
committed by GitHub
parent 5da1a085d3
commit 33a51b7344
2 changed files with 32 additions and 4 deletions
+31 -3
View File
@@ -1,16 +1,44 @@
import ArgumentParser
import Foundation
struct Export: AsyncParsableCommand {
static var configuration = CommandConfiguration(abstract: "Export VM to a file")
static var configuration = CommandConfiguration(abstract: "Export VM to a compressed .tvm file")
@Argument(help: "Source VM name.")
var name: String
@Argument(help: "Path to the destination file.")
var path: String
var path: String?
func run() async throws {
let correctedPath: String
if let path = path {
correctedPath = path
} else {
correctedPath = "\(name).tvm"
if FileManager.default.fileExists(atPath: correctedPath) {
while true {
if userWantsOverwrite(correctedPath) {
break
} else {
return
}
}
}
}
print("exporting...")
try VMStorageHelper.open(name).exportToArchive(path: path)
try VMStorageHelper.open(name).exportToArchive(path: correctedPath)
}
func userWantsOverwrite(_ filename: String) -> Bool {
print("file \(filename) already exists, are you sure you want to overwrite it? (yes, [no])? ", terminator: "")
let answer = readLine()!
return answer == "yes"
}
}
+1 -1
View File
@@ -2,7 +2,7 @@ import ArgumentParser
import Foundation
struct Import: AsyncParsableCommand {
static var configuration = CommandConfiguration(abstract: "Import VM from a file")
static var configuration = CommandConfiguration(abstract: "Import VM from a compressed .tvm file")
@Argument(help: "Path to a file created with \"tart export\".")
var path: String