packages feed

cake3 0.4.0.0 → 0.5.0.0

raw patch · 3 files changed

+30/−33 lines, 3 filesdep ~basedep ~language-javascript

Dependency ranges changed: base, language-javascript

Files

README.md view
@@ -21,8 +21,8 @@ The goals of Cake3 are to help the developer to:    * Stop overusing Make by writing complex logic in make-language-  * Still have a correct Makefile which could be distributed among the users-  * Take a bit of Haskell practice :)+  * Still have a correct Makefile which could be distributed among the end-users+  * Practice some Haskell  Installation ------------@@ -85,11 +85,11 @@     import Development.Cake3     import Cakefile_P -    main = writeMake "Makefile" $ do+    main = writeMake (file "Makefile") $ do        selfUpdate -      cs <- filterDirectoryContentsRecursive [".c"]+      cs <- return $ [file "main.c", file "second.c"]        d <- rule $ do         shell [cmd|gcc -M $cs -MF @(file "depend.mk")|]@@ -126,9 +126,9 @@     'all' rule to be defined at the bottom of Cakefile.hs.   * Starting from 0.4, cake3 outputs rule named 'clean' automatically. This rule     contains recipe which deletes all intermediate files with 'rm' command.-  * selfUpdate call includes the self-updating dependencies. That means, that+  * `selfUpdate` call includes the self-updating dependencies. That means, that     Makefile will depend on Cakefile.hs and thus will require ghc to present in-    the system. Removing selfUpdate call will make the Makefile fully+    the system. Removing `selfUpdate` call will make the Makefile fully     Haskell-independent.  @@ -150,6 +150,7 @@ ### Features    * *Cake3 generates the 'clean' rule automatically.*+     But if you define your own 'clean', cake3 will take it as is.    * *Cake3 takes care of spaces inside the filenames.*@@ -240,16 +241,15 @@  #### Make syntax -As a summary - only a samll subset of Make syntax is supported for generation.-For complex algorithms Haskell looks more suitable so implement everything you-need inside the Cakefile.hs. In particular:+As a summary - only a samll subset of Make syntax is supported.  For complex+algorithms Haskell looks more suitable so implement everything you need inside+the Cakefile.hs. In particular: -  * Cake3 offers no way of detecting directory content chages. For example, user-    has to rerun the ./Cakegen if they add/remove a source file.+  * Cake3 offers no way of detecting directory content chages at the moment. For+    example, user has to rerun the ./Cakegen if they add/remove a source file.   * Cake3 doesn't check the contents of Makefile variables. It is user's     responsibility to keep them safe.-  * Variables as targets is not supported. Implement this logic in Haskell for-    now.+  * DSL doesn't allow to place Make variables anywhere except the recipe.   #### General@@ -264,24 +264,20 @@ Random implementation details ----------------------------- -  1. User writes a cakefile (./Cake\*.hs) describing the rules. Refer to-     Example/GHC/Cakefile.hs. Note, that different cakefiles should have-     different names even if they are in different directories due to GHC import-     restrictions. This way user can import one cakefile from another, as if-     they were in the same directory. Actually, cake3 copies all cakefiles into-     one temporary directory and compiles them there. Note that cake3 calls ghc-     having several common haskell extentions enabled.+  1. cake3 script copies all the Cake\*hs files it found in the project tree to+     a single temporary directory before compiling the ./Cakegen application.+     That is why all the cakefiles in project should have different names.+     Another consequence - cakefiles as Haskell modules may be imported by+     filename regardles of their actual position in the project tree. -  2. Cake3 copies all Cake\*.hs files from your project tree into temporary dir-     and compiles them with GHC (or calls GHCi). Before that, it creates a-     ./Cake\*_P.hs pathfile containing information about paths. The most-     important is _files_ function which translates relative _filename_ into-     _"." </> path_to_subproject </> filename_.+  2. Cake3 creates ./Cake\*\_P.hs files for every Cake\*hs. The \_P files+     contain paths information. In particular, they define `file` function for+     the current directiory. `selfUpdate` function is also defined there. -  3. Cake3 uses relative paths only for the final Makefile.+  3. All filepaths in the final Makefile are relative.    4. Cake3 uses it's own representation of files (File). Many filepath functions      (takeDirectory, takeBaseName, dropExtensions, </>, etc) are defined for-     them. See System.FilePath.Wrapper.hs. FileLike typeclass makes it possible-     to use them with plain FilePath as well.+     File as members of FileLike typeclass. See System.FilePath.Wrapper for the+     details. 
cake3.cabal view
@@ -2,7 +2,7 @@ -- see http://haskell.org/cabal/users-guide/  name:                cake3-version:             0.4.0.0+version:             0.5.0.0 synopsis:            Third cake the Makefile EDSL description:         Cake3 is a Makefile EDSL written in Haskell. Write your build logic in                      Haskell, obtain clean and safe Makefile, distribute it to the end-users.@@ -71,24 +71,24 @@                      Development.Cake3.Utils.Find                      Text.QuasiMake -  build-depends:     base ==4.6.*, haskell-src-meta, template-haskell,+  build-depends:     base ==4.7.*, haskell-src-meta, template-haskell,                      filepath, containers, text, monadloc, mtl,                      bytestring, deepseq, system-filepath, text-format,                      directory, attoparsec, mime-types,-                     language-javascript ==0.5.*, syb+                     language-javascript, syb    hs-source-dirs:    src  executable cake3   hs-source-dirs:    src   main-is:           CakeScript.hs-  build-depends:     base ==4.6.*, process+  build-depends:     base ==4.7.*, process   other-modules:     Paths_cake3  executable urembed   hs-source-dirs:    src   main-is:           Development/Cake3/Ext/UrWeb/UrEmbed.hs-  build-depends:     base == 4.6.*, mtl, language-javascript ==0.5.*, process,+  build-depends:     base == 4.7.*, mtl, language-javascript, process,                      filepath, syb, optparse-applicative, directory,                      text, bytestring, containers, language-javascript,                      haskell-src-meta, template-haskell, attoparsec, monadloc,
src/CakeScript.hs view
@@ -16,6 +16,7 @@     , std_out = Inherit     , std_err = Inherit     , close_fds = True+    , delegate_ctlc = False     , create_group = False     }   ret <- waitForProcess ph