sh :: String -> IO ()
sh cmd = do
    ec <- system cmd
    if ec == ExitSuccess then return ()
                         else error $ "Failed: " ++ cmd
sh :: String -> IO ()
sh cmd = do
    ec <- system cmd
    if ec == ExitSuccess then return ()
                         else error $ "Failed: " ++ cmd
sh cmd = do
    ec <- system cmd
    if ec == ExitSuccess then return ()
                         else error $ "Failed: " ++ cmd