Цель: Я пытаюсь заархивировать файл с помощью скрипта swift.
Я хочу заархивировать папку с помощью скрипта Swift, как показано ниже (в приглашении):
$~/workarea:ls
MyStuff/
$~/workarea:tar -cf MyStuff.zip MyStuff
$~/workarea:ls
MyStuff/ MyStuff.zip
$~/workarea:
Вот скрипт Swift:
import Foundation
let workArea = "/Users/Ric/workarea"
extension Process {
private static let tarExecURL = URL(fileURLWithPath: "/usr/bin/tar")
public func zip(source: String, archivedOutput: String) throws {
executableURL = Process.tarExecURL
arguments = ["-cf", archivedOutput, source]
// emulate this: $~/workarea:tar -cf MyStuff.zip MyStuff
try run()
}
}
// ============================================================================================
func zipFolder() {
// let sourceURL = URL(string:workArea+"MyStuff")
let source = workArea+"/"+"MyStuff"
let output = workArea+"/"+"MyStuff.zip"
try! Process().zip(source: source, archivedOutput: output)
print("Finished Archive")
}
// ============================================================================================
zipFolder()
print("Done")
Я использовал абсолютный путь к файлам:
(lldb) po source
"/Users/Ric/workarea/MyStuff"
(lldb) po output
"/Users/Ric/workarea/MyStuff.zip"
Но смола жаловалась на '/'.
Я получаю следующую ошибку в консоли:
Finished Archive
Done
tar: Removing leading '/' from member names
Program ended with exit code: 0
Решение