{-# LANGUAGE OverloadedStrings #-}

module Main (main) where

import Control.Exception
import System.Environment
import System.Posix.Process

import SpaceTraders
import SpaceTraders.Automation.Init
import SpaceTraders.APIClient.Agent(myAgent)
import SpaceTraders.APIClient.Client
import SpaceTraders.APIClient.Ships
import SpaceTraders.APIClient.Systems

main :: IO ()
main = do
  env <- initST
  ma <- runSpaceTradersT myAgent env
  case ma of
   Left (APIResetHappened _) -> do
     p <- getExecutablePath
     a <- getArgs
     e <- getEnvironment
     executeFile p False a (Just e)
   Left e -> throwIO e
   Right ma' -> print ma'
  s <- runSpaceTradersT listSystems env
  case s of
    Left e -> throwIO e
    Right s' -> print $ length s'
  ships <- runSpaceTradersT listShips env
  case ships of
    Left e -> throwIO e
    Right s' -> print $ s'
  deinitST env