packages feed

nemesis-titan 2013.6.13.2 → 2013.6.13.3

raw patch · 4 files changed

+65/−35 lines, 4 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- System.Nemesis.Titan: titan_with_label_file_name :: String -> String -> Unit
- System.Nemesis.Titan: titan_with_label_file_name_custom_task :: String -> String -> Unit -> Unit
+ System.Nemesis.Titan: Config :: String -> String -> String -> String -> String -> String -> String -> String -> Config
+ System.Nemesis.Titan: bin_directory :: Config -> String
+ System.Nemesis.Titan: config_directory :: Config -> String
+ System.Nemesis.Titan: data Config
+ System.Nemesis.Titan: defaultConfig :: Config
+ System.Nemesis.Titan: file_name :: Config -> String
+ System.Nemesis.Titan: ghc_arg_string :: Config -> String
+ System.Nemesis.Titan: ghc_default_arg_string :: Config -> String
+ System.Nemesis.Titan: haskell_source_directory :: Config -> String
+ System.Nemesis.Titan: instance Default Config
+ System.Nemesis.Titan: instance Eq Config
+ System.Nemesis.Titan: instance Show Config
+ System.Nemesis.Titan: label :: Config -> String
+ System.Nemesis.Titan: pid_name :: Config -> String
+ System.Nemesis.Titan: titan_with_config :: Config -> Unit

Files

Nemesis view
@@ -23,5 +23,3 @@   console ["-isrc", "-Wall"] "src/System/Nemesis/Titan"    titan "Main.hs"-  -  titan "Test.hs"
nemesis-titan.cabal view
@@ -1,5 +1,5 @@ Name:                 nemesis-titan-Version:              2013.6.13.2+Version:              2013.6.13.3 Build-type:           Simple Synopsis:             A collection of Nemesis tasks to bootstrap a Haskell project with a focus on continuous integration Description:          
src/Main.hs view
@@ -2,7 +2,6 @@  import Prelude () import Air.Env-import Air.Extra  import System.Nemesis.Titan import Test.Hspec
src/System/Nemesis/Titan.hs view
@@ -1,5 +1,7 @@ {-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-} + module System.Nemesis.Titan where    import System.Nemesis.Env@@ -7,7 +9,7 @@  import Air.Env import Prelude ()-import Air.TH (here)+import Air.TH (here, mkDefault)  import qualified Data.ByteString.Char8 as B import qualified Data.UUID as UUID@@ -20,7 +22,7 @@  import Test.Hspec import Text.StringTemplate-+import Text.Printf  angel_template :: StringTemplate String angel_template = newSTMP - [here|@@ -83,44 +85,57 @@       text `shouldSatisfy` (null > not)        -titan :: String -> Unit-titan file_name = do-  let label = file_name.takeBaseName-  titan_with_label_file_name label file_name -titan_with_label_file_name :: String -> String -> Unit-titan_with_label_file_name label file_name = titan_with_label_file_name_custom_task label file_name (return ())+data Config = Config+  {+    pid_name :: String+  , bin_directory :: String+  , config_directory :: String+  , haskell_source_directory :: String+  , label :: String+  , file_name :: String+  , ghc_arg_string :: String+  , ghc_default_arg_string :: String+  }+  deriving (Show, Eq) +mkDefault ''Config -titan_with_label_file_name_custom_task :: String -> String -> Unit -> Unit-titan_with_label_file_name_custom_task label file_name custom_tasks = do-  namespace label - do++defaultConfig :: Config+defaultConfig = def+    {+      pid_name = "uuid.txt"+    , bin_directory = ".bin"+    , config_directory = "config"+    , haskell_source_directory = "src"+    , ghc_default_arg_string = "-threaded"+    }++titan_with_config :: Config -> Unit+titan_with_config config = do+  namespace (config.label) - do          let  -      pid_name = "uuid.txt"-      bin_directory = ".bin"-      config_name = "config"-      config_directory = config_name / label-      angel_path = config_directory / "Angel.conf"-      guard_path = config_directory / "Guardfile"+      _label = config.label+      config_label_directory = config.config_directory / _label+      angel_path = config_label_directory / "Angel.conf"+      guard_path = config_label_directory / "Guardfile"       -      pid_directory = bin_directory / label-      pid_path = pid_directory / pid_name+      pid_directory = config.bin_directory / _label+      pid_path = pid_directory / config.pid_name +      haskell_path = config.haskell_source_directory / config.file_name+           desc "Initialize a Titan node"     task "init" - io - do-      let-        haskell_source_directory = "src"-        haskell_path = haskell_source_directory / file_name-      --      createDirectoryIfMissing True config_directory-      createDirectoryIfMissing True haskell_source_directory+      createDirectoryIfMissing True config_label_directory+      createDirectoryIfMissing True (config.haskell_source_directory)              let -        angel_file_content = render - setAttribute "label" label angel_template-        guard_file_content = render - setAttribute "label" label guard_template-        haskell_file_content = render - setAttribute "label" label haskell_template+        angel_file_content = render - setAttribute "label" _label angel_template+        guard_file_content = render - setAttribute "label" _label guard_template+        haskell_file_content = render - setAttribute "label" _label haskell_template              let {         write_if_not_exist file_path str = do@@ -132,6 +147,7 @@               puts - file_path + " already exists!"               return ()       }+             write_if_not_exist angel_path angel_file_content        write_if_not_exist guard_path guard_file_content        write_if_not_exist haskell_path haskell_file_content@@ -172,7 +188,17 @@     desc "Compile the binary"     task "compile" - do       bin <- get_bin-      sh - "ghc --make -isrc -threaded src/" + file_name + " -o " + bin+      let { cmd =+        printf "ghc --make -i%s %s %s %s -o %s" +          (config.haskell_source_directory)+          (config.ghc_default_arg_string)+          (config.ghc_arg_string)+          haskell_path+          bin+        }+      +      -- puts cmd+      sh cmd      desc "Start the process"     task "run" - do@@ -188,7 +214,14 @@     task "guard" - do       sh - "guard --no-bundler-warning -G " + guard_path   -    custom_tasks+++titan :: String -> Unit+titan _file_name = do+  let _label = _file_name.takeBaseName+  titan_with_config defaultConfig {file_name = _file_name, label = _label}++   -- Helpers