33
44module Poseidon.CLI.Jannocoalesce where
55
6- import Poseidon.Janno (JannoRow (.. ), JannoRows (.. ),
7- parseJannoRowFromNamedRecord ,
8- readJannoFile , writeJannoFile )
9- import Poseidon.Package (PackageReadOptions (.. ),
10- defaultPackageReadOptions ,
11- getJointJanno ,
12- readPoseidonPackageCollection )
13- import Poseidon.Utils (PoseidonException (.. ), PoseidonIO ,
14- logDebug , logInfo , logWarning )
6+ import Poseidon.Janno (JannoRow (.. ), JannoRows (.. ),
7+ parseJannoRowFromNamedRecord ,
8+ readJannoFile , writeJannoFile )
9+ import Poseidon.Package (PackageReadOptions (.. ),
10+ defaultPackageReadOptions ,
11+ getJointJanno ,
12+ readPoseidonPackageCollection )
13+ import Poseidon.Utils (PoseidonException (.. ), PoseidonIO ,
14+ logDebug , logInfo , logWarning )
1515
16- import Control.Monad (filterM , forM_ , when )
17- import Control.Monad.Catch (MonadThrow , throwM )
18- import Control.Monad.IO.Class (liftIO )
19- import qualified Data.ByteString.Char8 as BSC
20- import qualified Data.Csv as Csv
21- import qualified Data.HashMap.Strict as HM
22- import qualified Data.IORef as R
23- import Data.List ((\\) )
24- import Data.Text (pack , replace , unpack )
25- import System.Directory (createDirectoryIfMissing )
26- import System.FilePath (takeDirectory )
27- import Text.Regex.TDFA ((=~) )
16+ import Control.Monad (filterM , forM_ , when )
17+ import Control.Monad.Catch (MonadThrow , throwM )
18+ import Control.Monad.IO.Class (liftIO )
19+ import qualified Data.ByteString.Char8 as BSC
20+ import qualified Data.Csv as Csv
21+ import qualified Data.HashMap.Strict as HM
22+ import qualified Data.IORef as R
23+ import Data.List ((\\) )
24+ import Data.Text (pack , replace , unpack )
25+ import Poseidon.PoseidonVersion (latestPoseidonVersion )
26+ import System.Directory (createDirectoryIfMissing )
27+ import System.FilePath (takeDirectory )
28+ import Text.Regex.TDFA ((=~) )
2829
2930-- the source can be a single janno file, or a set of base directories as usual.
3031data JannoSourceSpec = JannoSourceSingle FilePath | JannoSourceBaseDirs [FilePath ]
@@ -48,7 +49,7 @@ data JannoCoalesceOptions = JannoCoalesceOptions
4849runJannocoalesce :: JannoCoalesceOptions -> PoseidonIO ()
4950runJannocoalesce (JannoCoalesceOptions sourceSpec target outSpec fields overwrite sKey tKey maybeStrip) = do
5051 JannoRows sourceRows <- case sourceSpec of
51- JannoSourceSingle sourceFile -> readJannoFile [] sourceFile
52+ JannoSourceSingle sourceFile -> readJannoFile latestPoseidonVersion [] sourceFile
5253 JannoSourceBaseDirs sourceDirs -> do
5354 let pacReadOpts = defaultPackageReadOptions {
5455 _readOptIgnoreChecksums = True
@@ -57,7 +58,7 @@ runJannocoalesce (JannoCoalesceOptions sourceSpec target outSpec fields overwrit
5758 , _readOptOnlyLatest = True
5859 }
5960 getJointJanno <$> readPoseidonPackageCollection pacReadOpts sourceDirs
60- JannoRows targetRows <- readJannoFile [] target
61+ JannoRows targetRows <- readJannoFile latestPoseidonVersion [] target
6162
6263 newJanno <- makeNewJannoRows sourceRows targetRows fields overwrite sKey tKey maybeStrip
6364
@@ -123,7 +124,7 @@ mergeRow cp targetRow sourceRow fields overwrite sKey tKey = do
123124 -- fill in the target row with dummy values for desired fields that might not be present yet
124125 targetComplete = HM. union targetRowRecord (HM. fromList $ map (, BSC. empty) sourceKeysDesired)
125126 newRowRecord = HM. mapWithKey fillFromSource targetComplete
126- parseResult = Csv. runParser . parseJannoRowFromNamedRecord [] $ newRowRecord
127+ parseResult = Csv. runParser . parseJannoRowFromNamedRecord latestPoseidonVersion [] $ newRowRecord
127128 logInfo $ " matched target " ++ BSC. unpack (targetComplete HM. ! BSC. pack tKey) ++
128129 " with source " ++ BSC. unpack (sourceRowRecord HM. ! BSC. pack sKey)
129130 case parseResult of
0 commit comments