packages feed

emanote-1.0.2.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"
  ]