труба быстрого ввода стандартного процесса - PullRequest
0 голосов
/ 05 июня 2018

Я хочу создать зашифрованный .dmg в macOS с помощью swift

Я не нашел реализации для hdiutil, поэтому я вынужден использовать для этого терминальные команды.

К сожалениюЯ не знаю, как работать с трубами (которые должны использоваться в отношении документации яблок)

Команда, которую я хочу вызвать, следующая: printf 'password' | hdiutil create -encryption AES-256 -volname backupname -stdinpass -size 1GB backupname.dmg

Код, я 'я попробовал следующее (ничего не работает):

func shell(_ args: String...) -> Int32 {
        let task = Process()
        let inputpipe = Pipe()
        task.standardInput = inputpipe
        //1. try: inputpipe.fileHandleForReading.write("password".data(using: .utf8)!)
        //2. try: inputpipe.fileHandleForWriting.write("password".data(using: .utf8)!)
        /*3. try: inputpipe.fileHandleForWriting.writeabilityHandler = {
        pipe in
        let inputString = "password"
        let data = inputString.data(using: .utf8)!
        pipe.write(data)
    }*/
    task.launchPath = "/usr/bin/env"
    task.arguments = args
    task.launch()
    task.waitUntilExit()
    return task.terminationStatus
}
print(shell("hdiutil", "create", "-encryption", "AES-256", "-volname", "backupname", "-stdinpass", "-size", "1MB", "~/Documents/backupname.dmg"))

Как правильно указать пароль, используя Process()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...