hledger-flow-0.14.2.0: src/Hledger/Flow/Import/ImportHelpers.hs
{-# LANGUAGE QuasiQuotes #-}
module Hledger.Flow.Import.ImportHelpers (findInputFiles, findJournalFiles) where
import Path
import Data.Char (isDigit)
import Hledger.Flow.PathHelpers (AbsDir, AbsFile, RelDir, findFilesIn)
findInputFiles :: Integer -> AbsDir -> IO [AbsFile]
findInputFiles startYear = do
let excludeDirs = [[Path.reldir|2-preprocessed|], [Path.reldir|3-journal|]] ++ commonExcludeDirs
findFilesIn (includeYearFilesForParent [Path.reldir|1-in|] startYear) excludeDirs
findJournalFiles :: AbsDir -> IO [AbsFile]
findJournalFiles = do
let excludeDirs = [[Path.reldir|1-in|], [Path.reldir|2-preprocessed|]] ++ commonExcludeDirs
findFilesIn (includeYearFilesForParent [Path.reldir|3-journal|] 0) excludeDirs
-- | Include only files directly underneath parentDir/yearDir, e.g. 1-in/2020/* or 3-journal/2020/*
includeYearFilesForParent :: RelDir -> Integer -> AbsDir -> Bool
includeYearFilesForParent parentDir startYear d = (dirname . parent) d == parentDir
&& length shortDirName == 4
&& all isDigit shortDirName
&& read shortDirName >= startYear
where shortDirName = dirToStringNoSlash d
dirToStringNoSlash :: AbsDir -> String
dirToStringNoSlash = init . Path.toFilePath . Path.dirname
commonExcludeDirs :: [RelDir]
commonExcludeDirs = [[Path.reldir|_manual_|], [Path.reldir|__pycache__|]]