[hs] Switch to new day system
This commit is contained in:
parent
3b0ea44036
commit
b87c8e4555
4 changed files with 35 additions and 39 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue