-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.hs
44 lines (35 loc) · 1.09 KB
/
main.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import qualified Paths_database_migrate as Program (version)
import Control.Monad (mapM_)
import Data.Version (showVersion)
import System.Console.CmdArgs.Explicit
import System.Console.CmdArgs.Text
import System.Exit
usage :: [String]
usage = [
"usage: migrate ..."
, " migrate -h|--help"
, " migrate -v|--version"
]
data Arguments = Arguments {
help :: Bool
, version :: Bool
} deriving (Eq, Show)
defaultArguments :: Arguments
defaultArguments = Arguments False False
ignore :: Arg Arguments
ignore = flagArg (\_ a -> Right a) ""
migratemode :: Mode Arguments
migratemode =
mode "migrate" defaultArguments "" ignore [
flagNone [ "h", "help" ] (\a -> a { help = True }) "print help and exit"
, flagNone [ "V", "version" ] (\a -> a { version = True }) "print version and exit"
]
migrate :: IO ()
migrate = undefined
run :: Arguments -> IO ()
run args
| help args = mapM_ putStrLn usage
| version args = putStrLn $ "migrate " ++ showVersion Program.version
| otherwise = migrate
main :: IO ()
main = processArgs migratemode >>= run