Fastlane закомментирует цитаты в строке
Я пытаюсь показать iOS-устройство, подключенное к mac, используя команду ruby shell execute.
system_profiler SPUSBDataType | grep -A 11 -w "iPad\|iPhone\|iPad"
в терминале это выводит нормально.
как правильно экранировать персонажей и запустить это в консоли ruby
Но, добавляя то же самое, используя полосу моего Fastfile, обратите внимание на экранирующие кавычки, используя '\'. Я получаю ошибку ненулевого выхода.
desc "Register a new device"
lane :register_new_device do
UI.message("Detected device")
sh("system_profiler SPUSBDataType | grep -A 11 -w \"iPad\|iPhone\|iPad\"")
device_name = prompt(text: "Enter the device name: ")
device_udid = prompt(text: "Enter the device UDID: ")
device_hash = {}
device_hash[device_name] = device_udid
register_devices(devices: device_hash)
new_devices
end
ошибка:
[08:23:56]: Exit status of command 'system_profiler SPUSBDataType | grep -A 11 -w "iPad|iPhone|iPad"' was 1 instead of 0.
2018-12-07 08:23:55.602 system_profiler[21056:476660] SPUSBDevice: IOCreatePlugInInterfaceForService failed 0xe00002be
ожидаемый результат:
2018-12-07 08:27:52.170 system_profiler[21266:479375] SPUSBDevice: IOCreatePlugInInterfaceForService failed xx
iPhone:
Product ID: xx
Vendor ID: xx (Apple Inc.)
Version: xx
Serial Number: xxx
Speed: Up to 480 Mb/sec
Manufacturer: Apple Inc.
Location ID: xx / 3
Current Available (mA): xx
Current Required (mA): xx
Extra Operating Current (mA): xx
Как я могу выполнить команду в оболочке и показать результат до того, как пользователь добавит устройство в соответствие Fastlane?
1 ответ
Кажется, что команда, которую вы выполняете, всегда возвращает код состояния 1
вместо 0
даже при непосредственном запуске. Проверьте, запустив echo $?
после того, как это закончено.
Если это действительно так и ожидается или хотел, вы должны сделать Fastlane's sh
принять это. Вы можете сделать это, дав sh
error_callback
Параметр, который будет выполняться, если статус равен 1. На самом деле он ничего не должен делать, поэтому с пустым методом все должно быть в порядке.
(Внутренняя логика и код этого здесь - обратите внимание, как сообщение об ошибке выводится с UI.shell_error!
который останавливает выполнение при отсутствии обратного вызова, но UI.error
который просто выводит красное сообщение об ошибке при наличии обратного вызова.)