module Data.Git.Phoenix.CmdRun where import Data.Git.Phoenix.App import Data.Git.Phoenix.CmdArgs import Data.Git.Phoenix.CommitSearch as CS import Data.Git.Phoenix.HeadsDiscovery as HD import Data.Git.Phoenix.Extraction import Data.Git.Phoenix.Prelude import Data.Git.Phoenix.Pretty import Data.Git.Phoenix.Uber import Data.Version (showVersion) import Paths_git_phoenix runCmd :: CmdArgs -> IO () runCmd :: CmdArgs -> IO () runCmd = \case BuildUberRepo { Tagged InDir String inDir :: Tagged InDir String inDir :: CmdArgs -> Tagged InDir String inDir, Tagged OutDir String outDir :: Tagged OutDir String outDir :: CmdArgs -> Tagged OutDir String outDir } -> do String -> IO () forall (m :: * -> *). MonadIO m => String -> m () createDirectory (String -> IO ()) -> String -> IO () forall a b. (a -> b) -> a -> b $ Tagged OutDir String -> String forall {k} (s :: k) b. Tagged s b -> b untag Tagged OutDir String outDir s <- Int -> IO QSem forall (m :: * -> *). MonadIO m => Int -> m QSem newQSem (Int -> IO QSem) -> IO Int -> IO QSem forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< IO Int getNumCapabilities runReaderT (recoverFrom inDir) (PhoenixUberConf outDir s) ExtractCommitTreeAsGitRepo { Tagged ShaPrefix String rootCommit :: Tagged ShaPrefix String rootCommit :: CmdArgs -> Tagged ShaPrefix String rootCommit, Tagged InDir String uberRepoDir :: Tagged InDir String uberRepoDir :: CmdArgs -> Tagged InDir String uberRepoDir, Tagged OutDir String gitRepoOut :: Tagged OutDir String gitRepoOut :: CmdArgs -> Tagged OutDir String gitRepoOut } -> do s <- Int -> IO QSem forall (m :: * -> *). MonadIO m => Int -> m QSem newQSem (Int -> IO QSem) -> (Int -> Int) -> Int -> IO QSem forall b c a. (b -> c) -> (a -> b) -> a -> c . $(tw "numCapabilities/") (Int -> IO QSem) -> IO Int -> IO QSem forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< IO Int getNumCapabilities runReaderT (extractCommitChainAsRepo rootCommit) (PhoenixExtractConf gitRepoOut uberRepoDir s) SearchCommitBy SearchCommitBy scb -> SearchCommitBy -> IO [CommitObject] runCommitSearch SearchCommitBy scb IO [CommitObject] -> ([CommitObject] -> IO ()) -> IO () forall a b. IO a -> (a -> IO b) -> IO b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Doc -> IO () forall (m :: * -> *) a. (MonadIO m, Pretty a) => a -> m () printDoc (Doc -> IO ()) -> ([CommitObject] -> Doc) -> [CommitObject] -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . [CommitObject] -> Doc CS.commitObjectsToDoc HeadsDiscovery HeadsDiscovery ctx -> HeadsDiscovery -> IO [(ShaBs, CommitObject)] runHeadsDiscovery HeadsDiscovery ctx IO [(ShaBs, CommitObject)] -> ([(ShaBs, CommitObject)] -> IO ()) -> IO () forall a b. IO a -> (a -> IO b) -> IO b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Doc -> IO () forall (m :: * -> *) a. (MonadIO m, Pretty a) => a -> m () printDoc (Doc -> IO ()) -> ([(ShaBs, CommitObject)] -> Doc) -> [(ShaBs, CommitObject)] -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . [(ShaBs, CommitObject)] -> Doc HD.commitObjectsToDoc CmdArgs GitPhoenixVersion -> Doc -> IO () forall (m :: * -> *) a. (MonadIO m, Pretty a) => a -> m () printDoc (Doc -> IO ()) -> Doc -> IO () forall a b. (a -> b) -> a -> b $ Doc "Version" Doc -> Doc -> Doc <+> String -> Doc forall a. Pretty a => a -> Doc doc (Version -> String showVersion Version version) Doc -> Doc -> Doc forall a. Semigroup a => a -> a -> a <> Doc linebreak