Shelly.hs 项目教程

Shelly.hs 项目教程

Shelly.hs Haskell shell scripting Shelly.hs 项目地址: https://gitcode.com/gh_mirrors/sh/Shelly.hs

1. 项目介绍

Shelly.hs 是一个用于 Haskell 的系统编程库,旨在提供方便的系统编程接口。Shelly 的设计目标是方便性和实用性,而不是优雅性。它提供了详细的错误消息,并维护自己的环境,使其线程安全。Shelly 还具有低内存使用率,支持多种运行命令的方式,如 run_runFoldLines,以及对文件句柄的完全控制。

2. 项目快速启动

安装 Shelly.hs

首先,确保你已经安装了 Haskell 和 Cabal。然后,你可以通过以下命令安装 Shelly.hs:

cabal update
cabal install Shelly

编写第一个 Shelly 脚本

以下是一个简单的 Shelly 脚本示例,它将当前日期和 Git 提交信息记录到文件中:

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ExtendedDefaultRules #-}
{-# OPTIONS_GHC -fno-warn-type-defaults #-}

import Shelly
import System.IO
import Data.Text as T

default (T.Text)

main :: IO ()
main = do
    hSetBuffering stdout LineBuffering
    shelly $ verbosely $ do
        host <- run "uname" ["-n"]
        if T.stripEnd host == "local-machine"
            then do
                d <- cmd "date"
                c <- escaping False $ cmd "git" "log -1 | head -1 | awk '{print $2}'"
                appendfile "log/deploy.log" $ T.intercalate " - " [T.stripEnd d, c]
                uploads "my-server:/remote/path/" ["deploy"]
                sshPairs_ "my-server" [("cd", ["/remote/path"]), ("./deploy", [])]
            else do
                cmd "./script/angel"

uploads :: Text -> [Text] -> Sh ()
uploads remote locals = rsync $ ["--relative"] ++ locals ++ [remote]

rsync :: [Text] -> Sh ()
rsync args = run_ "rsync" $ ["--delete", "-avz", "--no-g"] ++ args

运行脚本

将上述代码保存为 deploy.hs,然后在终端中运行:

runhaskell deploy.hs

3. 应用案例和最佳实践

自动化部署脚本

Shelly 非常适合编写自动化部署脚本。例如,你可以编写一个脚本来自动将代码部署到远程服务器,并记录每次部署的详细信息。

系统管理任务

Shelly 还可以用于执行系统管理任务,如文件操作、环境变量管理、进程管理等。它的线程安全特性使其非常适合在多线程环境中使用。

最佳实践

  • 详细日志记录:Shelly 提供了详细的日志记录功能,建议在生产环境中启用日志记录以方便调试。
  • 错误处理:Shelly 提供了详细的错误消息,建议在编写脚本时充分利用这些错误消息来提高脚本的健壮性。
  • 性能优化:Shelly 提供了多种运行命令的方式,如 run_runFoldLines,建议根据具体需求选择合适的方式以优化性能。

4. 典型生态项目

shelly-extra

shelly-extra 是 Shelly 的一个扩展包,提供了一些额外的功能,如方便的并发/未来实现。如果你需要更多的功能,可以考虑使用 shelly-extra

HSH

HSH 是另一个 Haskell 的 shell 脚本库,如果你需要混合使用 StringByteString,可以考虑使用 HSH。

turtle

turtle 是一个为初学者友好的 Haskell shell 脚本库,如果你是 Haskell 的初学者,可以考虑使用 turtle

通过以上内容,你应该能够快速上手并使用 Shelly.hs 进行系统编程。

Shelly.hs Haskell shell scripting Shelly.hs 项目地址: https://gitcode.com/gh_mirrors/sh/Shelly.hs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诸莹子Shelley

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值