Revision 21839f47 htools/htools.hs
b/htools/htools.hs | ||
---|---|---|
4 | 4 |
|
5 | 5 |
{- |
6 | 6 |
|
7 |
Copyright (C) 2011 Google Inc. |
|
7 |
Copyright (C) 2011, 2012 Google Inc.
|
|
8 | 8 |
|
9 | 9 |
This program is free software; you can redistribute it and/or modify |
10 | 10 |
it under the terms of the GNU General Public License as published by |
... | ... | |
31 | 31 |
import System.IO |
32 | 32 |
|
33 | 33 |
import Ganeti.HTools.Utils |
34 |
import Ganeti.HTools.CLI (OptType, Options, parseOpts) |
|
34 | 35 |
import qualified Ganeti.HTools.Program.Hail as Hail |
35 | 36 |
import qualified Ganeti.HTools.Program.Hbal as Hbal |
36 | 37 |
import qualified Ganeti.HTools.Program.Hscan as Hscan |
37 | 38 |
import qualified Ganeti.HTools.Program.Hspace as Hspace |
38 | 39 |
|
39 | 40 |
-- | Supported binaries. |
40 |
personalities :: [(String, IO ())]
|
|
41 |
personalities = [ ("hail", Hail.main)
|
|
42 |
, ("hbal", Hbal.main)
|
|
43 |
, ("hscan", Hscan.main)
|
|
44 |
, ("hspace", Hspace.main)
|
|
41 |
personalities :: [(String, (Options -> [String] -> IO (), [OptType]))]
|
|
42 |
personalities = [ ("hail", (Hail.main, Hail.options))
|
|
43 |
, ("hbal", (Hbal.main, Hbal.options))
|
|
44 |
, ("hscan", (Hscan.main, Hscan.options))
|
|
45 |
, ("hspace", (Hspace.main, Hspace.options))
|
|
45 | 46 |
] |
46 | 47 |
|
47 | 48 |
-- | Display usage and exit. |
... | ... | |
59 | 60 |
main = do |
60 | 61 |
binary <- getEnv "HTOOLS" `catch` const getProgName |
61 | 62 |
let name = map toLower binary |
62 |
boolnames = map (\(x, y) -> (x == name, y)) personalities |
|
63 |
select (usage name) boolnames |
|
63 |
boolnames = map (\(x, y) -> (x == name, Just y)) personalities |
|
64 |
case select Nothing boolnames of |
|
65 |
Nothing -> usage name |
|
66 |
Just (fn, options) -> do |
|
67 |
cmd_args <- getArgs |
|
68 |
(opts, args) <- parseOpts cmd_args name options |
|
69 |
fn opts args |
Also available in: Unified diff