packages feed

tlynx-0.6.0.0: src/TLynx/TLynx.hs

-- |
-- Module      :  TLynx.TLynx
-- Description :  TLynx module
-- Copyright   :  (c) Dominik Schrempf 2021
-- License     :  GPL-3.0-or-later
--
-- Maintainer  :  dominik.schrempf@gmail.com
-- Stability   :  unstable
-- Portability :  portable
--
-- Creation date: Thu Apr 23 16:36:43 2020.
module TLynx.TLynx
  ( tlynx,
    rTLynx,
  )
where

import ELynx.Tools
import TLynx.Compare.Compare
import TLynx.Connect.Connect
import TLynx.Distance.Distance
import TLynx.Examine.Examine
import TLynx.Options
import TLynx.Shuffle.Shuffle
import TLynx.Simulate.Simulate

-- | Run TLynx with given arguments.
tlynx :: Arguments CommandArguments -> IO ()
tlynx c = case local c of
  Compare l -> eLynxWrapper g l Compare compareCmd
  Connect l -> eLynxWrapper g l Connect connectCmd
  Distance l -> eLynxWrapper g l Distance distance
  Examine l -> eLynxWrapper g l Examine examine
  Shuffle l -> eLynxWrapper g l Shuffle shuffleCmd
  Simulate l -> eLynxWrapper g l Simulate simulate
  where
    g = global c

-- | Run TLynx, parse arguments from command line.
rTLynx :: IO ()
rTLynx = parseArguments >>= tlynx