[hs] Switch to new day system

This commit is contained in:
Joscha 2020-12-03 00:40:20 +00:00
parent 3b0ea44036
commit b87c8e4555
4 changed files with 35 additions and 39 deletions

View file

@ -1,34 +1,24 @@
module Main where
import Options.Applicative
import Control.Monad
import Aoc.Y2019
import Aoc.Y2020
import Options.Applicative
data Settings = Settings
{ function :: FilePath -> IO ()
, filename :: FilePath
}
import Aoc.Day (Day (..))
import qualified Aoc.Y2019 as Y2019
import qualified Aoc.Y2020 as Y2020
solutions :: Parser (FilePath -> IO ())
solutions = subparser $ mconcat $ map (\(name, func) -> command name (info (pure func) mempty))
[ ("2019_01", solve201901)
, ("2019_02", solve201902)
, ("2019_03", solve201903)
, ("2019_04", solve201904)
, ("2019_05", solve201905)
, ("2020_01", solve202001)
]
toCommand :: Day -> Mod CommandFields (IO ())
toCommand (DayPure name f) = command name $ info (helper <*> pure f) mempty
toCommand (DayFile name f) = command name $ info (helper <*> p) mempty
where
p = f <$> strArgument (metavar "INPUTFILE")
parser :: Parser Settings
parser = Settings
<$> solutions
<*> strArgument (metavar "INPUTFILE")
parser :: Parser (IO ())
parser = subparser $ mconcat $ map toCommand $ Y2019.days ++ Y2020.days
opts :: ParserInfo Settings
opts :: ParserInfo (IO ())
opts = info (helper <*> parser) $ fullDesc <> failureCode 1
main :: IO ()
main = do
settings <- customExecParser (prefs showHelpOnEmpty) opts
function settings $ filename settings
main = join $ customExecParser (prefs showHelpOnEmpty) opts