shellmet

Out of the shell solution for scripting in Haskell

https://github.com/kowainik/shellmet

Version on this page:0.0.4.0
LTS Haskell 23.0:0.0.5.0
Stackage Nightly 2024-12-11:0.0.5.0
Latest on Hackage:0.0.5.0

See all snapshots shellmet appears in

MPL-2.0 licensed by Dmitrii Kovanikov
Maintained by Kowainik
This version can be pinned in stack with:shellmet-0.0.4.0@sha256:264310dea9f70c6489b7ef161944c6cf3e9f21be4e3f2c523b369bdddf6729dd,3018

Module documentation for 0.0.4.0

Used by 1 package in lts-18.28(full list with versions):

shellmet

GitHub CI Hackage Stackage Lts Stackage Nightly MPL-2.0 license

Out of the shell solution for scripting in Haskell. Shellmet provides an easy and convenient way to call shell commands from Haskell programs.

Usage example

This README contains the usage example of the shellmet library. The example is runnable. You can build and execute with the following command:

cabal run readme

Setting up

Since this tutorial is written using Literate Haskell, first, let’s write all necessary pragmas and imports.

{-# LANGUAGE OverloadedStrings #-}

import Data.Semigroup ((<>))
import Shellmet (($|))

import qualified Data.Text as T

Simple scripting example

Below you can see how easy it is to interact with shell commands in Haskell:

main :: IO ()
main = do
    "echo" ["Starting shellmet readme..."]
    text <- "cat" $| ["README.md"]
    let cnt = T.pack $ show $ length $ T.lines text
    "echo" ["Number of lines in this README: " <> cnt]

And the output is:

⚙  echo 'Starting shellmet readme...'
Starting shellmet readme...
⚙  echo 'Number of lines in this README: 54'
Number of lines in this README: 54

Changes

Changelog

shellmet uses PVP Versioning. The changelog is available on GitHub.

0.0.4.0 — Mar 23, 2021

  • #20: Add isSuccess function to show if the command succeded.
  • #25: Support GHC-9.0.
  • Upgrade GHC from 8.8.3 to 8.8.4, 8.10.1 to 8.10.4.

0.0.3.1 — May 7, 2020

  • #18: Support GHC-8.10. Move from GHC-8.8.1 support to GHC-8.8.3.

0.0.3.0 — Sep 28, 2019

0.0.2.0 — Jul 4, 2019

  • #8: Implement $^ operator that doesn’t print the command to terminal.

0.0.1 — Apr 9, 2019

  • Generalise the type of the $? operator to allow returning values on shell-command failuires.

0.0.0

  • Initially created.