packages feed

Grow-1.1: Grow.cabal

-- content information
name:          Grow
category:      Build
synopsis:      A declarative make-like interpreter.
description:     Grow is a well-defined replacement for Makefiles and the like to build complex
  hierarchies of files with minimal effort. 
  
  Like many Makefile-like tools, Grow depends on the notion of
  timestamps to determine whether a file should be recompiled or
  not. Grow is much simpler than those, though, and I might argue way
  easier to use as well.
  
  On startup, Grow will look for a file named "Seed" in the current
  directory, and evaluate the grow expressions contained within.
  
  For example, here is a simple Seed file to compile a single C file
  into an executable.
  
      tee $$arg:in {
        all = ($main:seq "All done !"):in $execs
        execs = hook ld [main] [main.o] :in $objects
        objects = hook cc [main.o] [main.c]
      }
  
  Notice the `hook` function ? It is the Grow primitive that calls an
  external program to perform actual tasks. 
  
  In Grow, hooks are expected to only accept files as their arguments,
  so we have to write the wrapper scripts `cc` and `ld` that accept
  arguments in the form "<destination>... <source>...". They are pretty
  trivial to write since they only involve renaming variables and
  swapping arguments.
  
  Here are sample `cc` and `ld` scripts to show you there is nothing
  magical about them :
  
      #!/bin/bash
      obj="$1" ; shift ; src="$1"
      gcc -c "$src" -o "$obj"
  
      #!/bin/bash
      bin="$1" ; shift ; obj="$1"
      gcc "$obj" -o "$bin"
  
  In grow, instead of writing recipes in the configuration, we just declare
  hooks and then write the appropriate wrapper scripts to call compilers with
  the correct flags and arguments.

-- meta-information
author:        Marc Coiffier
maintainer:    marc.coiffier@gmail.com
version:       1.1
license:       OtherLicense
license-file:  LICENSE

-- build information
build-type:    Simple
cabal-version: >=1.10

library
  exposed-modules: Grow Language.Grow Language.Syntax.Grow
  build-depends: base (== 4.6.*), definitive-base (== 1.2.*), containers (== 0.5.*), deepseq (== 1.3.*), array (== 0.5.*), bytestring (== 0.10.*), vector (== 0.10.*), primitive (== 0.5.*), definitive-parser (== 1.2.*), definitive-filesystem (== 1.2.*), definitive-reactive (== 1.0.*), clock (== 0.4.*), directory (== 1.2.*), filepath (== 1.3.*), time (== 1.4.*), old-locale (== 1.0.*), unix (== 2.7.*), process (== 1.2.*)
  default-extensions: RebindableSyntax NoMonomorphismRestriction GeneralizedNewtypeDeriving FlexibleInstances LambdaCase FlexibleContexts MultiParamTypeClasses ImplicitParams
  ghc-options: 
  default-language: Haskell2010