1{-# LANGUAGE OverloadedStrings #-}
2import TutorialD.Interpreter
4import ProjectM36.Client
6import Options.Applicative
9parseArgs :: Parser InterpreterConfig
10parseArgs = LocalInterpreterConfig <$> parsePersistenceStrategy <|>
11 RemoteInterpreterConfig <$> parseNodeId <*> parseDatabaseName
13parsePersistenceStrategy :: Parser PersistenceStrategy
14parsePersistenceStrategy = CrashSafePersistence <$> (dbdirOpt <* fsyncOpt) <|>
15 MinimalPersistence <$> dbdirOpt <|>
18 dbdirOpt = strOption (short 'd' <>
19 long "database-directory" <>
20 metavar "DIRECTORY" <>
23 fsyncOpt = switch (short 'f' <>
25 help "Fsync all new transactions.")
27parseDatabaseName :: Parser DatabaseName
28parseDatabaseName = strOption (long "database" <>
29 help "Remote database name")
31parseNodeId :: Parser NodeId
32parseNodeId = createNodeId <$>
33 strOption (long "host" <>
35 help "Remote host name" <>
36 value "127.0.0.1") <*>
37 option auto (long "port" <>
40 value defaultServerPort)
42opts :: ParserInfo InterpreterConfig
43opts = info parseArgs idm
45connectionInfoForConfig :: InterpreterConfig -> ConnectionInfo
46connectionInfoForConfig (LocalInterpreterConfig pStrategy) = InProcessConnectionInfo pStrategy
47connectionInfoForConfig (RemoteInterpreterConfig remoteNodeId remoteDBName) = RemoteProcessConnectionInfo remoteDBName remoteNodeId
51 interpreterConfig <- execParser opts
52 let connInfo = connectionInfoForConfig interpreterConfig
53 dbconn <- connectProjectM36 connInfo
56 hPutStrLn stderr ("Failed to create database connection: " ++ show err)
59 _ <- reprLoop interpreterConfig conn
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list