packages feed

hwm-0.1.0: src/HWM/Integrations/Scaffold.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE NoImplicitPrelude #-}

module HWM.Integrations.Scaffold (scaffoldPackage) where

import qualified Data.Text as T
import HWM.Core.Pkg (PkgName)
import HWM.Domain.ConfigT (ConfigT)
import HWM.Integrations.Toolchain.Package (newPackage, savePackage)
import Relude
import System.Directory (createDirectoryIfMissing)
import System.FilePath ((</>))

libHsTemplate :: Text
libHsTemplate =
  T.unlines
    [ "module Lib (someFunc) where",
      "",
      "someFunc :: IO ()",
      "someFunc = putStrLn \"Scaffolded by HWM\""
    ]

scaffoldPackage :: FilePath -> PkgName -> ConfigT ()
scaffoldPackage targetDir pkgName = do
  liftIO $ createDirectoryIfMissing True (targetDir </> "src")
  package <- newPackage pkgName
  savePackage (targetDir </> "package.yaml") package
  liftIO $ writeFile (targetDir </> "src/Lib.hs") (T.unpack libHsTemplate)