2017-07-25 73 views
0

我想使用spawnNode.ChildProcess執行一個命令,但我不知道如何掛鉤產生的命令和應用程序的其餘部分的功能spawn。我有一個模糊的想法,我需要使用ContT來連接錯誤和成功回調,並且無法將數據管道視爲單個程序。如何在purescript中使用spawn/exec繼續monad變換器?

這是我嘗試寫程序 -

  1. 等待一個請求(假設爲HTTP服務器)
  2. 根據要求,寫東西到一個文件
  3. 消防終端命令
  4. 從終端命令
  5. 收集輸出發送響應

回答

0

我會去找更簡單的解決方案並使用Aff。我有我怎麼在這裏做催生子進程的一個例子:https://github.com/justinwoo/vidtracker/blob/b5756099a4f683d262bc030d33b68343a47f14d7/src/GetIcons.purs#L44-L54

curl :: forall e. 
    String 
    -> String 
    -> Aff 
     _ 
     Unit 
curl url path = do 
    cp <- liftEff $ spawn "curl" [url, "-o", path] defaultSpawnOptions 
    makeAff \e s -> do 
    onError cp (e <<< Exc.error <<< unsafeStringify) 
    onClose cp (s <<< const unit) 

我在這裏有另一個例子,我收集輸出:https://github.com/justinwoo/simple-rpc-telegram-bot/blob/09e894c81493f913fe316f6689cb94ce1f5056e6/src/Main.purs#L149

+0

謝謝!將檢查的例子,並回復給你。 你能解釋一下,即使在處理由spawn返回的流的錯誤,數據和關閉回調之後,類型是如何排列的嗎? –