opts :: Parser Opts
opts = (
  Patch <$> strOption
    (  long "source"
    <> short 's'
    <> metavar "SRC_TARGET"
    <> help "Source file"
    )
  <*> strOption
    (  long "destination"
    <> short 'd'
    <> metavar "DST_TARGET"
    <> help "Destination file"
    )
  <*> optional (strOption
    (  long "json-output"
    <> short 'j'
    <> metavar "OUT_TARGET"
    <> help "Output file"
    ))
  <*> switch
    ( long "all"
    <> short 'a'
    <> help "Print all patches")
  ) <|> (
  Conflict <$> strOption
    (  long "folder"
    <> short 'f'
    <> metavar "FOLDER"
    <> help "Folder to process"
    )
  ) <|> (
   Preprocess <$> strOption
     ( long "preprocess"
     <> short 'p'
     <> metavar "PREPROCESS"
     <> help "Folder to preprocess"
     )
  )
opts :: Parser Opts
opts = (
  Patch <$> strOption
    (  long "source"
    <> short 's'
    <> metavar "SRC_TARGET"
    <> help "Source file"
    )
  <*> strOption
    (  long "destination"
    <> short 'd'
    <> metavar "DST_TARGET"
    <> help "Destination file"
    )
  <*> optional (strOption
    (  long "json-output"
    <> short 'j'
    <> metavar "OUT_TARGET"
    <> help "Output file"
    ))
  <*> switch
    ( long "all"
    <> short 'a'
    <> help "Print all patches")
  ) <|> (
  Conflict <$> strOption
    (  long "folder"
    <> short 'f'
    <> metavar "FOLDER"
    <> help "Folder to process"
    )
  ) <|> (
   Preprocess <$> strOption
     ( long "preprocess"
     <> short 'p'
     <> metavar "PREPROCESS"
     <> help "Folder to preprocess"
     )
  )
opts = (
  Patch <$> strOption
    (  long "source"
    <> short 's'
    <> metavar "SRC_TARGET"
    <> help "Source file"
    )
  <*> strOption
    (  long "destination"
    <> short 'd'
    <> metavar "DST_TARGET"
    <> help "Destination file"
    )
  <*> optional (strOption
    (  long "json-output"
    <> short 'j'
    <> metavar "OUT_TARGET"
    <> help "Output file"
    ))
  <*> switch
    ( long "all"
    <> short 'a'
    <> help "Print all patches")
  ) <|> (
  Conflict <$> strOption
    (  long "folder"
    <> short 'f'
    <> metavar "FOLDER"
    <> help "Folder to process"
    )
  ) <|> (
   Preprocess <$> strOption
     ( long "preprocess"
     <> short 'p'
     <> metavar "PREPROCESS"
     <> help "Folder to preprocess"
     )
  )