2015-09-15 4 views
8

Недавно я начал использовать библиотеку Haskell Turtle, чтобы заменить некоторые из моих сценариев оболочки.Можно ли отлаживать скрипты Turtle (эквивалент флага «-x» в bash)?

Есть ли способ каким-то образом включить эхо встроенных команд черепахи (например, cd) ala set -x в сценариях bash? Я считаю довольно проблематичным отлаживать скрипты Turtle в случаях, когда выполняется множество команд, и один из них сбой исключается (например, cp команда с Exception:openBinaryFile: does not exist). Кроме того, есть ли у вас рекомендации по быстрому изолированию таких проблем, так что мне не нужно вставлять команды puStrLn/echo во весь мой сценарий?

ответ

5

К сожалению, это невозможно, так как черепаха не обеспечивает трассировку. Например, mv определяется только с функцией Haskell (без оболочки вызова), так что нет никакого способа, чтобы напечатать что-нибудь, когда он бежал:

mv :: MonadIO io => FilePath -> FilePath -> io() 
mv oldPath newPath = liftIO (Filesystem.rename oldPath newPath) 

Это ограничение упоминается в документации, в которой автор рекомендует взглянуть на Shelly, который похож, но обеспечивают дополнительные функции:

черепаха предназначена для новичков, но в результате не хватает определенных функций, такие как отслеживание команд. Если вы чувствуете себя комфортно, используя черепаху , то вы также должны проверить библиотеку Шелли, которую обеспечивает аналогичную функциональность.

Смежные вопросы