MyNixOS website logo
Description

Library to compose and reuse command line fragments.

CmdItem

Build Status

CmdItem allows you to compose command lines by combining fragments of commands.

Installation

cabal update
cabal install cmd-item

Example

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE OverloadedLists #-}

import Data.CmdItem
import System.Environment (getArgs)

main :: IO ()
main = do
    args <- getArgs
    case args of
    [] -> return ()
    (name:ns) -> do
        constants <- getConstants name
        makeProject constants

makeProject :: CmdItem -> IO ()
makeProject contants = do
    let cmdItem = pants <> "idea" <> ideaOptions <> constants
    shellCommand <- render cmdItem
    print shellcommand

getConstants :: Text -> IO CmdItem
getConstants name =  do
    home <- getHomeDirectory
    nCpu <- getNumProcessors
    let result = [ ("java_version", "7")
                 , ("project_root", T.pack $ home <> "/workspace/project")
                 , ("num_cpu", T.pack $ show nCpu)
                 , ("project_name", name)
                 ]
    return result

pants :: CmdItem
pants = "%{project_root}/pants"

ideaOptions :: CmdItem
ideaOptions = "--idea-java-language-level=%{java_version}"
            <> "--idea-java-maximum-heap-size=2096"
            <> "--idea-scala-maximum-heap-size=2096"
            <> "--idea-project-name=%{project_name}"
Metadata

Version

0.0.1.0

License

Platforms (77)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-freebsd
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64-windows
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows