Improve help messages
This commit is contained in:
		
							parent
							
								
									a773da037c
								
							
						
					
					
						commit
						7742fe08b5
					
				@ -43,6 +43,7 @@ import           HPath
 | 
			
		||||
import           HPath.IO
 | 
			
		||||
import           Language.Haskell.TH
 | 
			
		||||
import           Options.Applicative     hiding ( style )
 | 
			
		||||
import           Options.Applicative.Help.Pretty ( text )
 | 
			
		||||
import           Prelude                 hiding ( appendFile )
 | 
			
		||||
import           System.Console.Pretty
 | 
			
		||||
import           System.Environment
 | 
			
		||||
@ -164,14 +165,14 @@ com =
 | 
			
		||||
      (  command
 | 
			
		||||
          "install"
 | 
			
		||||
          ((info ((Install <$> installOpts) <**> helper)
 | 
			
		||||
                 (progDesc "Install or update GHC")
 | 
			
		||||
                 (progDesc "Install or update GHC" <> footerDoc (Just $ text installFooter))
 | 
			
		||||
           )
 | 
			
		||||
          )
 | 
			
		||||
      <> command
 | 
			
		||||
           "set"
 | 
			
		||||
           (   SetGHC
 | 
			
		||||
           <$> (info (setGHCOpts <**> helper)
 | 
			
		||||
                     (progDesc "Set currently active GHC version")
 | 
			
		||||
                     (progDesc "Set currently active GHC version" <> footerDoc (Just $ text setFooter))
 | 
			
		||||
               )
 | 
			
		||||
           )
 | 
			
		||||
      <> command
 | 
			
		||||
@ -183,7 +184,7 @@ com =
 | 
			
		||||
      <> command
 | 
			
		||||
           "install-cabal"
 | 
			
		||||
           ((info ((InstallCabal <$> installOpts) <**> helper)
 | 
			
		||||
                  (progDesc "Install or update cabal")
 | 
			
		||||
                  (progDesc "Install or update cabal" <> footerDoc (Just $ text installCabalFooter))
 | 
			
		||||
            )
 | 
			
		||||
           )
 | 
			
		||||
      <> command
 | 
			
		||||
@ -224,6 +225,22 @@ com =
 | 
			
		||||
          <> commandGroup "Other commands:"
 | 
			
		||||
          <> hidden
 | 
			
		||||
          )
 | 
			
		||||
 where
 | 
			
		||||
  installFooter = [i|Discussion:
 | 
			
		||||
  Installs the specified GHC version (or a recommended default one) into
 | 
			
		||||
  a self-contained "~/.ghcup/ghc/<ghcver>" directory
 | 
			
		||||
  and symlinks the ghc binaries to "~/.ghcup/bin/<binary>-<ghcver>".|]
 | 
			
		||||
  setFooter = [i|Discussion:
 | 
			
		||||
  Sets the the current GHC version by creating non-versioned
 | 
			
		||||
  symlinks for all ghc binaries of the specified version in
 | 
			
		||||
  "~/.ghcup/bin/<binary>".|]
 | 
			
		||||
  installCabalFooter = [i|Discussion:
 | 
			
		||||
  Installs the specified cabal-install version (or a recommended default one)
 | 
			
		||||
  into "~/.ghcup/bin", so it can be overwritten by later
 | 
			
		||||
  "cabal install cabal-install", which installs into "~/.cabal/bin" by
 | 
			
		||||
  default. Make sure to set up your PATH appropriately, so the cabal
 | 
			
		||||
  installation takes precedence.|]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
installOpts :: Parser InstallOptions
 | 
			
		||||
@ -276,17 +293,34 @@ compileP = subparser
 | 
			
		||||
  (  command
 | 
			
		||||
      "ghc"
 | 
			
		||||
      (   CompileGHC
 | 
			
		||||
      <$> (info (compileOpts <**> helper) (progDesc "Compile GHC from source")
 | 
			
		||||
      <$> (info (compileOpts <**> helper) (progDesc "Compile GHC from source" <> footerDoc (Just $ text compileFooter))
 | 
			
		||||
          )
 | 
			
		||||
      )
 | 
			
		||||
  <> command
 | 
			
		||||
       "cabal"
 | 
			
		||||
       (   CompileCabal
 | 
			
		||||
       <$> (info (compileOpts <**> helper)
 | 
			
		||||
                 (progDesc "Compile Cabal from source")
 | 
			
		||||
                 (progDesc "Compile Cabal from source" <> footerDoc (Just $ text compileCabalFooter))
 | 
			
		||||
           )
 | 
			
		||||
       )
 | 
			
		||||
  )
 | 
			
		||||
 where
 | 
			
		||||
  compileFooter = [i|Discussion:
 | 
			
		||||
  Compiles and installs the specified GHC version into
 | 
			
		||||
  a self-contained "~/.ghcup/ghc/<ghcver>" directory
 | 
			
		||||
  and symlinks the ghc binaries to "~/.ghcup/bin/<binary>-<ghcver>".
 | 
			
		||||
 | 
			
		||||
Examples:
 | 
			
		||||
  ghcup compile ghc -j 4 -v 8.4.2 -b 8.2.2
 | 
			
		||||
  ghcup compile ghc -j 4 -v 8.4.2 -b /usr/bin/ghc-8.2.2|]
 | 
			
		||||
  compileCabalFooter = [i|Discussion:
 | 
			
		||||
  Compiles and installs the specified Cabal version
 | 
			
		||||
  into "~/.ghcup/bin".
 | 
			
		||||
 | 
			
		||||
Examples:
 | 
			
		||||
  ghcup compile cabal -j 4 -v 3.2.0.0 -b 8.6.5
 | 
			
		||||
  ghcup compile cabal -j 4 -v 3.2.0.0 -b /usr/bin/ghc-8.6.5|]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
compileOpts :: Parser CompileOptions
 | 
			
		||||
@ -531,16 +565,24 @@ main = do
 | 
			
		||||
        ( ("The GHCup Haskell installer, version " <>)
 | 
			
		||||
        $ (head . lines $ describe_result)
 | 
			
		||||
        )
 | 
			
		||||
        (long "version" <> help "Show version")
 | 
			
		||||
        (long "version" <> help "Show version" <> hidden)
 | 
			
		||||
  let numericVersionHelp = infoOption
 | 
			
		||||
        numericVer
 | 
			
		||||
        (  long "numeric-version"
 | 
			
		||||
        <> help "Show the numeric version (for use in scripts)"
 | 
			
		||||
        <> hidden
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
  let main_footer = [i|Discussion:
 | 
			
		||||
  ghcup installs the Glasgow Haskell Compiler from the official
 | 
			
		||||
  release channels, enabling you to easily switch between different
 | 
			
		||||
  versions.
 | 
			
		||||
 | 
			
		||||
Report bugs at <https://gitlab.haskell.org/haskell/ghcup-hs/issues>|]
 | 
			
		||||
 | 
			
		||||
  customExecParser
 | 
			
		||||
      (prefs showHelpOnError)
 | 
			
		||||
      (info (opts <**> helper <**> versionHelp <**> numericVersionHelp) idm)
 | 
			
		||||
      (info (opts <**> helper <**> versionHelp <**> numericVersionHelp) (footerDoc (Just $ text main_footer)))
 | 
			
		||||
    >>= \opt@Options {..} -> do
 | 
			
		||||
          let settings = toSettings opt
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user