-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Start your Haskell project with cabal, git and tests.
--   
--   Holy Project is an application wich ask the user some questions and
--   create files to help you starting a new Haskell project. There are
--   example for tests using HUnit and SmallCheck It initializes git, use
--   Haskell LTS, and provide a useful script: "auto-update".
@package holy-project
@version 0.2.0.1

module HolyProject.StringUtils

-- | transform a chain like "Holy project" in "holy-project"
projectNameFromString :: String -> String

-- | transform a chain like "Holy project" in <a>HolyProject</a>
capitalize :: String -> String

-- | verify if a project name is conform
checkProjectName :: String -> Bool

module HolyProject.GithubAPI

-- | Search a username using the github API
searchGHUser :: String -> IO (Maybe String)

module HolyProject

-- | Record containing all information to initialize a project
data Project
Project :: String -> String -> String -> String -> String -> String -> String -> Project
[projectName] :: Project -> String
[moduleName] :: Project -> String
[author] :: Project -> String
[mail] :: Project -> String
[ghaccount] :: Project -> String
[synopsis] :: Project -> String
[year] :: Project -> String

-- | Randomly choose an end scenario and then show a "serious" error
--   message
holyError :: String -> IO ()

-- | Assert something true. In any other case show the holy error
ioassert :: Bool -> String -> IO ()

-- | Ask, questions and create the initial project
holyStarter :: IO ()

-- | Simply return the current year as String
getCurrentYear :: IO String

-- | Show an introduction test
intro :: IO ()

-- | Show the final dialog
end :: IO ()

-- | This function use a Data file mustache template and a hastache context
--   to write a destination file
genFile :: MuContext IO -> String -> FilePath -> IO ()

-- | This function is where we create the project once the question are
--   answered
createProject :: Project -> IO ()
instance Data.Data.Data HolyProject.Project
