]> gitweb.michael.orlitzky.com - dead/lwn-epub.git/blobdiff - src/CommandLine.hs
Make show_help work.
[dead/lwn-epub.git] / src / CommandLine.hs
index 4fd9a542d600e8a41c9c74498ccd153fda013a7c..0a3117073c220552ff2eaf186e0f74945363ff33 100644 (file)
@@ -1,6 +1,10 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
-module CommandLine (Args(..), apply_args, show_help)
+module CommandLine (
+  Args(..),
+  apply_args,
+  program_name,
+  show_help)
 where
 
 -- Get the version from Cabal.
@@ -36,7 +40,8 @@ import ExitCodes
 
 
 data Args =
-  Args { output :: FilePath,
+  Args { full_stories :: Bool,
+         output :: FilePath,
          article :: String }
   deriving   (Show, Data, Typeable)
 
@@ -45,7 +50,7 @@ description :: String
 description = "Convert LWN articles to EPUB format."
 
 program_name :: String
-program_name = "lwn_epub"
+program_name = "lwn-epub"
 
 lwn_epub_summary :: String
 lwn_epub_summary =
@@ -54,11 +59,15 @@ lwn_epub_summary =
 output_help :: String
 output_help = "Output file, defaults to stdout"
 
+full_stories_help :: String
+full_stories_help = "Replace \"Full Story\" links with their content"
+
 arg_spec :: Mode (CmdArgs Args)
 arg_spec = cmdArgsMode $
              Args {
-               output = def  &= typFile &= help output_help,
-               article = def &= argPos 0 &= typ "ARTICLE"
+               full_stories = def &= help full_stories_help,
+               output       = def &= typFile  &= help output_help,
+               article      = def &= argPos 0 &= typ "ARTICLE"
              }
              &= program program_name
              &= summary lwn_epub_summary
@@ -71,8 +80,8 @@ is_missing_arg_error s =
   startswith "Requires at least" s
 
 
-show_help :: IO (CmdArgs Args)
-show_help = withArgs ["--help"] parse_args
+show_help :: IO Args
+show_help = withArgs ["--help"] apply_args
 
 parse_args :: IO (CmdArgs Args)
 parse_args = do
@@ -82,8 +91,9 @@ parse_args = do
       Right result -> return result
       Left err ->
         if (is_missing_arg_error err) then
-          -- Disregard the error message, show help instead.
-          show_help
+          -- Disregard the error message, show help instead. We can't
+          -- reuse show_help here because of its return type.
+          withArgs ["--help"] parse_args
         else do
           hPutStrLn stderr err
           exitWith (ExitFailure exit_args_parse_failed)