emanote-1.2.0.0: src/Emanote/Source/Pattern.hs
module Emanote.Source.Pattern where
import Emanote.Route qualified as R
import Relude
import System.FilePattern (FilePattern)
filePattern :: (HasCallStack) => R.FileType R.SourceExt -> FilePath
filePattern = \case
R.LMLType R.Md ->
R.withExt @_ @('R.LMLType 'R.Md) $
"**/*"
R.LMLType R.Org ->
R.withExt @_ @('R.LMLType 'R.Org) $
"**/*"
R.Yaml ->
R.withExt @_ @'R.Yaml "**/*"
R.HeistTpl ->
R.withExt @_ @'R.HeistTpl $
"**/*"
R.AnyExt ->
"**"
filePatterns :: [(R.FileType R.SourceExt, FilePattern)]
filePatterns =
(id &&& filePattern)
<$> [ R.LMLType R.Md
, R.LMLType R.Org
, R.Yaml
, R.HeistTpl
, R.AnyExt
]
ignorePatterns :: [FilePattern]
ignorePatterns =
[ -- Ignore all dotfile directories (eg: .git, .vscode)
"**/.*/**"
, -- Ignore vi/vim/neovim writebackup files (see ":help writebackup")
"**/*~"
, -- /Top-level ./-/ directory is reserved by Emanote
"-/**"
, -- Special files that are not meant to be rendered
-- NOTE: We must hardcode this only because there is no user-controllable
-- `.emanoteignore` setting yet.{-# ANN annotation #-}
--
-- Any top-level Nix flake files
"flake.nix"
, "flake.lock"
]