Доступ к несистемным командам через приложение Какао - PullRequest
1 голос
/ 18 июня 2020

В настоящее время я работаю над библиотекой gphoto2 в приложении Cocoa. Итак, в основном я пытался получить доступ к библиотеке через свое приложение. Gphoto2 работает с командами. Поэтому я использую класс Process для выполнения команд терминала через приложение. Итак, у меня есть файл сценария, который содержит сценарий для доступа к gphoto2.

Вот мой код:

func shellScript ()
    {
        guard let path1 = Bundle.main.path(forResource: "Script",ofType:"sh") else {
            print("Unable to locate Script.sh")
            return
        }
        let path =  "/bin/zsh" //"file:///usr/local/Cellar/gphoto2/2.5.23/bin/gphoto2"
        let arguments = [""]
        let process = Process()
        process.arguments = arguments
        process.executableURL = URL(fileURLWithPath: path)
        let connection = Pipe()
        process.standardOutput = connection
        do {
            let task =  try Process.run(URL(fileURLWithPath: path1), arguments: []) { (process) in
                let data = connection.fileHandleForReading.readDataToEndOfFile()
                if let string = String(data: data, encoding: String.Encoding.utf8) {
                    print(string)
                }
            }
            task.waitUntilExit()
        }catch {
            print(error.localizedDescription)
        }
    }

А вот и мой файл сценария.

#!/bin/zsh

#  Script.sh
#  CommandsDemo
#
#  Created by Ravindra on 22/05/20.
#  Copyright © 2020 Ravindra. All rights reserved.
#name="Pinto"

echo "*********************************"
echo "Build Started"
echo "*********************************"

echo "*********************************"
echo "Beginning Build Process"
echo "*********************************"
#script typescript bash -c 'ls'
script commandOutputFile gphoto2

Вот результат этого.

*********************************
Build Started
*********************************
*********************************
Beginning Build Process
*********************************
Script started, output file is commandOutputFile
script: gphoto2: No such file or directory

Script done, output file is commandOutputFile

На самом деле, мои системные команды (echo, ls, et c.) Работают нормально. Но это похоже на несистемные (gphoto2, npm, et c.) Команды, тогда он не может найти файл или каталог. Я указываю проблему, с которой мне нужно передать DSLR (для библиотеки gphoto2, которую я использую) моему приложению macOS.

...