Fastlane закомментирует цитаты в строке - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь показать устройство iOS, подключенное к компьютеру Mac, с помощью команды ruby ​​shell.

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 Ответ

0 голосов
/ 07 декабря 2018

Кажется, что команда, которую вы запускаете, всегда возвращает код состояния 1 вместо 0, даже если она выполняется напрямую.Проверьте, запустив echo $? после того, как он закончится.

Если это действительно так, ожидаемый или желаемый, вы должны заставить * fast6e sh принять это.Вы можете сделать это, задав sh error_callback параметр , который будет выполняться, если статус равен 1. На самом деле ничего делать не нужно, поэтому с пустым методом все должно быть в порядке.

(Внутренняя логика и код этого кода здесь - обратите внимание, как выводится сообщение об ошибке с UI.shell_error!, который останавливает выполнение при отсутствии обратного вызова, но UI.error, который просто выводит красныйсообщение об ошибке при обратном вызове.)

...