Как обработать неправильную команду git / hg clone в ruby - PullRequest
1 голос
/ 23 мая 2019

Есть ли способ справиться с попыткой клонировать репо, который не существует изящно? В ruby ​​я могу клонировать репо следующим образом:

system("hg clone https://username@bitbucket.org/username/repoThatDoesNotExist")

Если репо можно найти, то оно работает нормально. Если не может , появляется это сообщение об ошибке:

abort: HTTP Error 404: Not Found

Есть ли способ обработать эти сообщения и продолжить работу в сценарии вместо выхода? Я попытался проверить коды ошибок и вызвать исключения, но он все еще не хочет продолжать работу с остальными.

По сути, я просто хочу иметь возможность проверить, существует ли хранилище, которое пытается клонировать, без выхода из сценария.

Спасибо за помощь.

1 Ответ

2 голосов
/ 23 мая 2019

Вы можете использовать Open3 # capture3, который дает вам статус команды, вызывая success?, затем вы можете проверить, выдало ли оно ошибку или успешно.

require 'open3'

ERROR_MESSAGE = 'abort: HTTP Error 404: Not Found'.freeze

def clone_repo(repo)
  _, _, status = Open3.capture3("hg clone #{repo}")

  return ERROR_MESSAGE unless status.success?
end

p clone_repo('https://username@bitbucket.org/username/repoThatDoesNotExist')
...