module Main where
import Path (parseRelDir, parseRelFile)
import Life.Main.Add (lifeAdd)
import Life.Main.Init (lifeInit)
import Life.Main.Pull (lifePull)
import Life.Main.Push (lifePush)
import Life.Main.Remove (lifeRemove)
import Options (LifeCommand (..), PathOptions (..), PullOptions (..), parseCommand)
import qualified Data.Set as Set
main :: IO ()
main = parseCommand >>= \case
Init owner -> lifeInit owner
Add PathOptions{..} -> lifeAdd pathOptionsPath
Remove PathOptions{..} -> lifeRemove pathOptionsPath
Push -> lifePush
Pull PullOptions{..} -> do
withoutFiles <- Set.fromList <$> mapM parseRelFile pullOptionsNoFiles
withoutDirs <- Set.fromList <$> mapM parseRelDir pullOptionsNoDirs
lifePull pullOptionsOwner withoutFiles withoutDirs