packages feed

hscaffold 0.1.1.0 → 0.2.0.0

raw patch · 2 files changed

+34/−10 lines, 2 filesdep +transformers

Dependencies added: transformers

Files

hscaffold.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack  name:           hscaffold-version:        0.1.1.0+version:        0.2.0.0 synopsis:       Very simple file/directory structure scaffolding writer monad EDSL description:     See our README on GitHub at <https://github.com/yamadapc/hscaffold>  homepage:       https://github.com/yamadapc/hscaffold#readme@@ -29,6 +29,7 @@       base >=4.8 && <4.9     , text     , mtl+    , transformers     , directory     , filepath     , unix@@ -49,6 +50,7 @@       base >=4.8 && <4.9     , text     , mtl+    , transformers     , directory     , filepath     , unix
src/Hscaffold.hs view
@@ -4,6 +4,7 @@ {-# LANGUAGE FlexibleContexts           #-} {-# LANGUAGE FlexibleInstances          #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses      #-} module Hscaffold     ( runHscaffold     , runAction@@ -13,16 +14,18 @@     , directory     , file     , link-    , Permissions(..)+    , copy     , fileWith     , directoryWith     , permissions+    , Permissions(..)      , ScaffoldActionType(..)     , ScaffoldAction     , ScaffoldActionV      , module Data.Text+    , module Control.Monad.IO.Class     , module Control.Monad.Writer     , module System.Directory     , module System.FilePath@@ -30,14 +33,15 @@   where  import           Control.Applicative+import           Control.Monad.IO.Class import           Control.Monad.Writer-import           Data.Text                (Text)+import           Data.Text              (Text) import qualified Data.Text-import qualified Data.Text.IO as Text+import qualified Data.Text.IO           as Text import           System.Directory -- TODO - Disable this on Windows-import           System.Posix.Files import           System.FilePath+import           System.Posix.Files   -- | Run the scaffolding writer on the IO monad with no extensions@@ -69,6 +73,12 @@ runAction root (Directory fp nested) = do     createDirectoryIfMissing True (root </> fp)     mapM_ (runAction (root </> fp)) nested+runAction root (Copy fp1 fp2) = do+    let fp1' = makeAbsolute fp1+        fp2' = makeAbsolute fp2+    copyFile fp1' fp2'+  where+    makeAbsolute fp = if isAbsolute fp then fp else root </> fp  -- | Accumulator for actions type ScaffoldAction e = [ScaffoldActionType e]@@ -78,11 +88,13 @@  -- | Type of actions scaffolding can make, 'ScaffoldActionTypeExtension' is open -- for extension through other data-types-data ScaffoldActionType e = File FilePath Text-                          | Link FilePath FilePath-                          | Directory FilePath (ScaffoldAction e)-                          | SetPermissions Permissions FilePath-                          | ScaffoldActionTypeExtension e+data ScaffoldActionType e+    = File FilePath Text+    | Link FilePath FilePath+    | Directory FilePath (ScaffoldAction e)+    | SetPermissions Permissions FilePath+    | Copy FilePath FilePath+    | ScaffoldActionTypeExtension e   deriving(Show, Eq, Ord)  -- | Create a directory with the nested contents@@ -142,3 +154,13 @@     -> FilePath     -> m () link fp1 fp2 = tell [Link fp1 fp2]++-- | Copy a file from A to B+--+-- *Non-absolute paths are treated relative to the root*+copy+    :: MonadWriter (ScaffoldAction e) m+    => FilePath+    -> FilePath+    -> m ()+copy fp1 fp2 = tell [Copy fp1 fp2]