Skip to content

Commit

Permalink
Merge pull request #1691 from dten/absolute-templates-path
Browse files Browse the repository at this point in the history
Absolute templates path
  • Loading branch information
snoyberg committed Aug 9, 2020
2 parents 8845483 + 8585893 commit eb5f7a9
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 2 deletions.
4 changes: 4 additions & 0 deletions yesod/ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 1.6.1.0

* `widgetFileReload` and `widgetFileNoReload` now use absolute paths via the new `globFilePackage` Q Exp which can provide absolute templates paths within the project [#1691](https://github.com/yesodweb/yesod/pull/1691)

## 1.6.0.2

* Replace deprecated decodeFile with decodeFileEither. This should have no semantic impact, but silences a deprecation warning. [#1658](https://github.com/yesodweb/yesod/pull/1658)
Expand Down
9 changes: 8 additions & 1 deletion yesod/Yesod/Default/Util.hs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
module Yesod.Default.Util
( addStaticContentExternal
, globFile
, globFilePackage
, widgetFileNoReload
, widgetFileReload
, TemplateLanguage (..)
Expand All @@ -15,6 +16,7 @@ module Yesod.Default.Util
) where

import qualified Data.ByteString.Lazy as L
import Data.FileEmbed (makeRelativeToProject)
import Data.Text (Text, pack, unpack)
import Yesod.Core -- purposely using complete import so that Haddock will see addStaticContent
import Control.Monad (when, unless)
Expand Down Expand Up @@ -64,6 +66,11 @@ addStaticContentExternal minify hash staticDir toRoute ext' _ content = do
globFile :: String -> String -> FilePath
globFile kind x = "templates/" ++ x ++ "." ++ kind

-- | `globFile` but returned path is absolute and within the package the Q Exp is evaluated
-- @since 1.6.1.0
globFilePackage :: String -> String -> Q FilePath
globFilePackage = (makeRelativeToProject <$>) . globFile

data TemplateLanguage = TemplateLanguage
{ tlRequiresToWidget :: Bool
, tlExtension :: String
Expand Down Expand Up @@ -124,7 +131,7 @@ warnUnlessExists :: Bool
-> Bool -- ^ requires toWidget wrap
-> String -> (FilePath -> Q Exp) -> Q (Maybe Exp)
warnUnlessExists shouldWarn x wrap glob f = do
let fn = globFile glob x
fn <- globFilePackage glob x
e <- qRunIO $ doesFileExist fn
when (shouldWarn && not e) $ qRunIO $ putStrLn $ "widget file not found: " ++ fn
if e
Expand Down
3 changes: 2 additions & 1 deletion yesod/yesod.cabal
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: yesod
version: 1.6.0.2
version: 1.6.1.0
license: MIT
license-file: LICENSE
author: Michael Snoyman <michael@snoyman.com>
Expand All @@ -25,6 +25,7 @@ library
, data-default-class
, directory
, fast-logger
, file-embed
, monad-logger
, shakespeare
, streaming-commons
Expand Down

0 comments on commit eb5f7a9

Please sign in to comment.