From 707cd3d7feb083a41fde3aa3f2a5e20b40b99ba2 Mon Sep 17 00:00:00 2001
From: Helga Velroyen <helgav@google.com>
Date: Thu, 18 Oct 2012 10:56:30 +0200
Subject: [PATCH] Use exitErr instead of explicit error message and exitWith

Furthermore, a few messages have their capitalisation changed (fixed).

Signed-off-by: Helga Velroyen <helgav@google.com>
Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
---
 htest/shelltests/htools-invalid.test   |  8 ++++----
 htools/Ganeti/HTools/ExtLoader.hs      |  2 +-
 htools/Ganeti/HTools/IAlloc.hs         |  7 ++-----
 htools/Ganeti/HTools/Program/Hail.hs   |  6 ++----
 htools/Ganeti/HTools/Program/Hbal.hs   | 10 +++-------
 htools/Ganeti/HTools/Program/Hcheck.hs |  6 ++----
 htools/Ganeti/HTools/Program/Hinfo.hs  |  5 +----
 htools/Ganeti/HTools/Program/Hspace.hs |  2 +-
 htools/Ganeti/Utils.hs                 |  6 ++----
 htools/htools.hs                       |  6 ++----
 htools/rpc-test.hs                     |  3 +--
 11 files changed, 21 insertions(+), 40 deletions(-)

diff --git a/htest/shelltests/htools-invalid.test b/htest/shelltests/htools-invalid.test
index a8160bd36..1625b25ba 100644
--- a/htest/shelltests/htools-invalid.test
+++ b/htest/shelltests/htools-invalid.test
@@ -25,20 +25,20 @@
 # extra arguments
 ./htest/hspace unexpected-argument
 >>>2
-Error: this program doesn't take any arguments.
+Error: This program doesn't take any arguments.
 >>>=1
 
 ./htest/hbal unexpected-argument
 >>>2
-Error: this program doesn't take any arguments.
+Error: This program doesn't take any arguments.
 >>>=1
 
 ./htest/hinfo unexpected-argument
 >>>2
-Error: this program doesn't take any arguments.
+Error: This program doesn't take any arguments.
 >>>=1
 
 ./htest/hcheck unexpected-argument
 >>>2
-Error: this program doesn't take any arguments.
+Error: This program doesn't take any arguments.
 >>>=1
diff --git a/htools/Ganeti/HTools/ExtLoader.hs b/htools/Ganeti/HTools/ExtLoader.hs
index 534ca7eb2..17a6bed2b 100644
--- a/htools/Ganeti/HTools/ExtLoader.hs
+++ b/htools/Ganeti/HTools/ExtLoader.hs
@@ -95,7 +95,7 @@ loadExternalData opts = do
       exInsts = optExInst opts
 
   exitWhen (length allSet > 1) "Only one of the rapi, luxi, and data\
-                               \ files options should be given"
+                               \ files options should be given."
 
   util_contents <- maybe (return "") readFile (optDynuFile opts)
   util_data <- exitIfBad "can't parse utilisation data" .
diff --git a/htools/Ganeti/HTools/IAlloc.hs b/htools/Ganeti/HTools/IAlloc.hs
index d85c9ff57..d7716abbc 100644
--- a/htools/Ganeti/HTools/IAlloc.hs
+++ b/htools/Ganeti/HTools/IAlloc.hs
@@ -36,8 +36,6 @@ import Data.List
 import Control.Monad
 import Text.JSON (JSObject, JSValue(JSArray),
                   makeObj, encodeStrict, decodeStrict, fromJSObject, showJSON)
-import System.Exit
-import System.IO
 
 import Ganeti.BasicTypes
 import qualified Ganeti.HTools.Cluster as Cluster
@@ -50,6 +48,7 @@ import Ganeti.HTools.CLI
 import Ganeti.HTools.Loader
 import Ganeti.HTools.Types
 import Ganeti.JSON
+import Ganeti.Utils
 
 {-# ANN module "HLint: ignore Eta reduce" #-}
 
@@ -385,9 +384,7 @@ readRequest fp = do
                   "-" -> getContents
                   _   -> readFile fp
   case parseData input_data of
-    Bad err -> do
-      hPutStrLn stderr $ "Error: " ++ err
-      exitWith $ ExitFailure 1
+    Bad err -> exitErr err
     Ok (fix_msgs, rq) -> maybeShowWarnings fix_msgs >> return rq
 
 -- | Main iallocator pipeline.
diff --git a/htools/Ganeti/HTools/Program/Hail.hs b/htools/Ganeti/HTools/Program/Hail.hs
index cb334f1ec..7231c0df6 100644
--- a/htools/Ganeti/HTools/Program/Hail.hs
+++ b/htools/Ganeti/HTools/Program/Hail.hs
@@ -32,7 +32,6 @@ module Ganeti.HTools.Program.Hail
 import Control.Monad
 import Data.Maybe (fromMaybe, isJust)
 import System.IO
-import System.Exit
 
 import qualified Ganeti.HTools.Cluster as Cluster
 
@@ -41,6 +40,7 @@ import Ganeti.HTools.CLI
 import Ganeti.HTools.IAlloc
 import Ganeti.HTools.Loader (Request(..), ClusterData(..))
 import Ganeti.HTools.ExtLoader (maybeSaveData, loadExternalData)
+import Ganeti.Utils
 
 -- | Options list and functions.
 options :: [OptType]
@@ -58,9 +58,7 @@ arguments = [ArgCompletion OptComplFile 1 (Just 1)]
 
 wrapReadRequest :: Options -> [String] -> IO Request
 wrapReadRequest opts args = do
-  when (null args) $ do
-    hPutStrLn stderr "Error: this program needs an input file."
-    exitWith $ ExitFailure 1
+  when (null args) $ exitErr "This program needs an input file."
 
   r1 <- readRequest (head args)
   if isJust (optDataFile opts) ||  (not . null . optNodeSim) opts
diff --git a/htools/Ganeti/HTools/Program/Hbal.hs b/htools/Ganeti/HTools/Program/Hbal.hs
index e72bf5e72..bc83d059e 100644
--- a/htools/Ganeti/HTools/Program/Hbal.hs
+++ b/htools/Ganeti/HTools/Program/Hbal.hs
@@ -273,8 +273,7 @@ selectGroup opts gl nlf ilf = do
     hPutStrLn stderr "Found multiple node groups:"
     mapM_ (hPutStrLn stderr . ("  " ++) . Group.name .
            flip Container.find gl . fst) ngroups
-    hPutStrLn stderr "Aborting."
-    exitWith $ ExitFailure 1
+    exitErr "Aborting."
 
   case optGroup opts of
     Nothing -> do
@@ -286,8 +285,7 @@ selectGroup opts gl nlf ilf = do
         hPutStrLn stderr $ "Node group " ++ g ++
           " not found. Node group list is:"
         mapM_ (hPutStrLn stderr . ("  " ++) . Group.name ) (Container.elems gl)
-        hPutStrLn stderr "Aborting."
-        exitWith $ ExitFailure 1
+        exitErr "Aborting."
       Just grp ->
           case lookup (Group.idx grp) ngroups of
             Nothing ->
@@ -350,9 +348,7 @@ checkNeedRebalance opts ini_cv = do
 -- | Main function.
 main :: Options -> [String] -> IO ()
 main opts args = do
-  unless (null args) $ do
-         hPutStrLn stderr "Error: this program doesn't take any arguments."
-         exitWith $ ExitFailure 1
+  unless (null args) $ exitErr "This program doesn't take any arguments."
 
   let verbose = optVerbose opts
       shownodes = optShowNodes opts
diff --git a/htools/Ganeti/HTools/Program/Hcheck.hs b/htools/Ganeti/HTools/Program/Hcheck.hs
index 260a0dfc3..f02b52adb 100644
--- a/htools/Ganeti/HTools/Program/Hcheck.hs
+++ b/htools/Ganeti/HTools/Program/Hcheck.hs
@@ -32,7 +32,6 @@ module Ganeti.HTools.Program.Hcheck
 import Control.Monad
 import Data.List (transpose)
 import System.Exit
-import System.IO
 import Text.Printf (printf)
 
 import qualified Ganeti.HTools.Container as Container
@@ -48,6 +47,7 @@ import Ganeti.HTools.CLI
 import Ganeti.HTools.ExtLoader
 import Ganeti.HTools.Loader
 import Ganeti.HTools.Types
+import Ganeti.Utils
 
 -- | Options list and functions.
 options :: [OptType]
@@ -295,9 +295,7 @@ printFinalHTC = printFinal htcPrefix
 -- | Main function.
 main :: Options -> [String] -> IO ()
 main opts args = do
-  unless (null args) $ do
-         hPutStrLn stderr "Error: this program doesn't take any arguments."
-         exitWith $ ExitFailure 1
+  unless (null args) $ exitErr "This program doesn't take any arguments."
 
   let verbose = optVerbose opts
       machineread = optMachineReadable opts
diff --git a/htools/Ganeti/HTools/Program/Hinfo.hs b/htools/Ganeti/HTools/Program/Hinfo.hs
index b2b47b481..367bf0f20 100644
--- a/htools/Ganeti/HTools/Program/Hinfo.hs
+++ b/htools/Ganeti/HTools/Program/Hinfo.hs
@@ -31,7 +31,6 @@ module Ganeti.HTools.Program.Hinfo
 
 import Control.Monad
 import Data.List
-import System.Exit
 import System.IO
 
 import Text.Printf (printf)
@@ -154,9 +153,7 @@ commonInfo verbose gl nl il = do
 -- | Main function.
 main :: Options -> [String] -> IO ()
 main opts args = do
-  unless (null args) $ do
-         hPutStrLn stderr "Error: this program doesn't take any arguments."
-         exitWith $ ExitFailure 1
+  unless (null args) $ exitErr "This program doesn't take any arguments."
 
   let verbose = optVerbose opts
       shownodes = optShowNodes opts
diff --git a/htools/Ganeti/HTools/Program/Hspace.hs b/htools/Ganeti/HTools/Program/Hspace.hs
index 6ec9ea683..9ad61b803 100644
--- a/htools/Ganeti/HTools/Program/Hspace.hs
+++ b/htools/Ganeti/HTools/Program/Hspace.hs
@@ -387,7 +387,7 @@ instFromSpec spx =
 -- | Main function.
 main :: Options -> [String] -> IO ()
 main opts args = do
-  exitUnless (null args) "this program doesn't take any arguments"
+  exitUnless (null args) "This program doesn't take any arguments."
 
   let verbose = optVerbose opts
       machine_r = optMachineReadable opts
diff --git a/htools/Ganeti/Utils.hs b/htools/Ganeti/Utils.hs
index 8c1b0ce72..9636a34d2 100644
--- a/htools/Ganeti/Utils.hs
+++ b/htools/Ganeti/Utils.hs
@@ -213,15 +213,13 @@ parseUnit str =
 -- | Unwraps a 'Result', exiting the program if it is a 'Bad' value,
 -- otherwise returning the actual contained value.
 exitIfBad :: String -> Result a -> IO a
-exitIfBad msg (Bad s) = do
-  hPutStrLn stderr $ "Error: " ++ msg ++ ": " ++ s
-  exitWith (ExitFailure 1)
+exitIfBad msg (Bad s) = exitErr (msg ++ ": " ++ s)
 exitIfBad _ (Ok v) = return v
 
 -- | Exits immediately with an error message.
 exitErr :: String -> IO a
 exitErr errmsg = do
-  hPutStrLn stderr $ "Error: " ++ errmsg ++ "."
+  hPutStrLn stderr $ "Error: " ++ errmsg
   exitWith (ExitFailure 1)
 
 -- | Exits with an error message if the given boolean condition if true.
diff --git a/htools/htools.hs b/htools/htools.hs
index f90b676f6..cec4aa39d 100644
--- a/htools/htools.hs
+++ b/htools/htools.hs
@@ -30,7 +30,6 @@ import Control.Monad (guard)
 import Data.Char (toLower)
 import Prelude hiding (catch)
 import System.Environment
-import System.Exit
 import System.IO
 import System.IO.Error (isDoesNotExistError)
 
@@ -45,9 +44,8 @@ usage name = do
   hPutStrLn stderr "This program must be installed under one of the following\
                    \ names:"
   mapM_ (hPutStrLn stderr . ("  - " ++) . fst) personalities
-  hPutStrLn stderr "Please either rename/symlink the program or set\n\
-                   \the environment variable HTOOLS to the desired role."
-  exitWith $ ExitFailure 1
+  exitErr "Please either rename/symlink the program or set\n\
+          \the environment variable HTOOLS to the desired role."
 
 main :: IO ()
 main = do
diff --git a/htools/rpc-test.hs b/htools/rpc-test.hs
index b0cad68c3..394ab9d59 100644
--- a/htools/rpc-test.hs
+++ b/htools/rpc-test.hs
@@ -37,8 +37,7 @@ import Ganeti.Utils
 usage :: IO ()
 usage = do
   prog <- getProgName
-  hPutStrLn stderr $ "Usage: " ++ prog ++ " delay node..."
-  exitWith $ ExitFailure 1
+  exitErr "Usage: " ++ prog ++ " delay node..."
 
 main :: IO ()
 main = do
-- 
GitLab