标签: haskell-turtle

是否可以调试Turtle脚本(相当于bash中的"-x"标志)?

我最近开始使用Haskell Turtle库来替换我的一些shell脚本.

有没有办法set -x在bash脚本中以某种方式启用内置Turtle命令(如cd)ala的回声?我发现在执行许多命令并且其中一个命令因异常而失败(如cp命令Exception:openBinaryFile: does not exist)时调试Turtle脚本是很有问题的.或者,您是否有一些建议如何快速隔离这些问题,以便我不必puStrLn/echo在整个脚本中插入命令?

haskell haskell-turtle

8
推荐指数
1
解决办法
297
查看次数

在Turtle中编写ExitCodes.为什么没有Monad/Monad Transformer实例?

我正在使用Haskell编写一个shell脚本,turtle并希望了解编写可能失败的命令的最佳实践.

现在我有一个案例表达式楼梯,如下所示:

runRemote :: MonadIO io => Text -> Text -> io ()
runRemote oldVersion' newVersion' = sh $ do
  mkdir "out"
  e1 <- shell ("command " <> oldVersion') empty
  case e1 of
    ExitFailure n -> cleanup 
    ExitSuccess -> do
      e2 <- shell ("command " <> newVersion') empty
      case e2 of
        ExitFailure n -> cleanup 
        ExitSuccess -> do
          curDir <- pwd
          cd (curDir <.> oldVersion')
          e3 <- shell ("command something else") empty
          case e3 of
           -- ...
           -- …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-turtle

6
推荐指数
1
解决办法
153
查看次数

从Haskell启动程序(例如:Vim)

使用Turtleshell脚本库我试图启动一个程序,即:

shell "vim" empty
Run Code Online (Sandbox Code Playgroud)

问题是这会产生警告Warning: Input is not from a terminal并导致Vim在最终启动之前滞后几秒钟.

问题:

  1. shell从haskell启动外部程序是最好的Turtle函数吗?
  2. 如果是这样,有没有办法解决上述错误?

haskell haskell-turtle

5
推荐指数
1
解决办法
109
查看次数

Haskell:Turtle:从Shell中获取返回值

如何从Shell monad中提取一个值?

我想排序的命令列表点菜 bash的&&,但我也想提取最终ExitCode值.

说我有以下代码:

import           Turtle

type Commands = [Shell ExitCode]
run :: (MonadIO io) => Commands -> io ExitCode
run cs = whatIsThisFunction $ Prelude.foldl (.&&.) (return ExitSuccess) cs

whatIsThisFunction :: (MonadIO io) => Shell a -> io a
whatIsThisFunction = undefined
Run Code Online (Sandbox Code Playgroud)

我试图看看我是否可以用Control.Foldl实现它,但没有找到解决方案.

有任何想法吗?

更一般地说,为什么Turtle没有提供具有这种签名的功能:

sh' :: MonadIO io => Shell a -> io a 
Run Code Online (Sandbox Code Playgroud)

haskell haskell-turtle

4
推荐指数
2
解决办法
141
查看次数

如何使用Haskell和海龟库从文件流式传输时删除行

假设我想从一个文件流到另一个文件,但我想跳过输入文件的前n行.如果没有先使用'fold'折叠整个第一个文件,我该怎么做?

import Turtle
main = output "/tmp/b.txt" (f (input "/tmp/a.txt"))
Run Code Online (Sandbox Code Playgroud)

应该做什么才能实现这一目标?

ps:我没有足够的声誉来创建'haskell-turtle'标签.

haskell haskell-turtle

3
推荐指数
1
解决办法
289
查看次数

Turtle:提示输入,没有尾随换行符

我正在编写一个控制台应用程序,该应用程序需要提示用户几件事。我正在使用乌龟库。

我的函数如下所示:

askInput :: IO (Maybe Text)
askInput = do
    echo "Input something: "
    s <- readline
    return s
Run Code Online (Sandbox Code Playgroud)

echo实施使用putStrLn,因此,将打印与尾随换行符的说法。

乌龟库中是否有一个类似于Python的输入函数raw_input,结合了提示和读取用户输入的功能?

haskell haskell-turtle

3
推荐指数
1
解决办法
181
查看次数

将String转换为Turtle.FilePath

如何将连接转换String为乌龟FilePath?例如,以下程序尝试读取一些文本文件,将它们连接成一个新文件并删除旧文件.虽然OverloadedStrings扩展已启用但它似乎不起作用:

{-# LANGUAGE OverloadedStrings #-}

module Main where

import System.Environment
import System.IO
import Control.Monad
import Turtle
import Turtle.Prelude
import qualified Control.Foldl as L

main :: IO ()
main = do
  params <- getArgs
  let n             = read $ params !! 0
      k             = read $ params !! 1
  -- Some magic is done here
  -- After a while, read generated .txt files and concatenate them
  files <- fold (find (suffix ".txt") ".") L.list
  let …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-turtle

3
推荐指数
1
解决办法
512
查看次数

如何在Haskell Turtle库中将“外壳线”转换为“文本”?

考虑(inshell "echo A line of text." empty)有类型Shell Line

问题:如何将这种类型的值转换为Text

haskell haskell-turtle

2
推荐指数
2
解决办法
254
查看次数

如何将`Shell Text`转换为`Shell Line`?

在用于从密钥环获取密码的Turtle脚本中,ssh-add使用这些密码调用以便不必手动填写它们,具有以下功能:

processKey :: (T.Text, T.Text) -> Shell Line -> IO ()
processKey (kn, str) pwds = do
    -- Not sure why (text str) is needed here, but it won't typecheck without
    -- it (despite OverloadedStrings).
    let expectArg = do
        ml <- grep (contains (text str)) pwds
        let pass = getPwd $ cut tab (format l ml)
        return $ T.unlines [ "<< EOF"
                  , "spawn ssh-add"
                  , "expect \"Enter passphrase\""
                  , "send " <> pass
                  , "expect eof"
                  , …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-turtle

1
推荐指数
1
解决办法
226
查看次数

标签 统计

haskell ×9

haskell-turtle ×9