module Rattletrap.Console.Option where

import qualified Rattletrap.Console.Flag as Flag
import qualified System.Console.GetOpt as Console

type Option = Console.OptDescr Flag.Flag

all :: [Option]
all :: [Option]
all = [Option
compact, Option
fast, Option
help, Option
input, Option
mode, Option
output, Option
schema, Option
skipCrc, Option
version]

compact :: Option
compact :: Option
compact = [Char] -> [[Char]] -> ArgDescr Flag -> [Char] -> Option
forall a. [Char] -> [[Char]] -> ArgDescr a -> [Char] -> OptDescr a
Console.Option
  [Char
'c']
  [[Char]
"compact"]
  (Flag -> ArgDescr Flag
forall a. a -> ArgDescr a
Console.NoArg Flag
Flag.Compact)
  [Char]
"minify JSON output"

fast :: Option
fast :: Option
fast = [Char] -> [[Char]] -> ArgDescr Flag -> [Char] -> Option
forall a. [Char] -> [[Char]] -> ArgDescr a -> [Char] -> OptDescr a
Console.Option
  [Char
'f']
  [[Char]
"fast"]
  (Flag -> ArgDescr Flag
forall a. a -> ArgDescr a
Console.NoArg Flag
Flag.Fast)
  [Char]
"only encode or decode the header"

help :: Option
help :: Option
help = [Char] -> [[Char]] -> ArgDescr Flag -> [Char] -> Option
forall a. [Char] -> [[Char]] -> ArgDescr a -> [Char] -> OptDescr a
Console.Option [Char
'h'] [[Char]
"help"] (Flag -> ArgDescr Flag
forall a. a -> ArgDescr a
Console.NoArg Flag
Flag.Help) [Char]
"show the help"

input :: Option
input :: Option
input = [Char] -> [[Char]] -> ArgDescr Flag -> [Char] -> Option
forall a. [Char] -> [[Char]] -> ArgDescr a -> [Char] -> OptDescr a
Console.Option
  [Char
'i']
  [[Char]
"input"]
  (([Char] -> Flag) -> [Char] -> ArgDescr Flag
forall a. ([Char] -> a) -> [Char] -> ArgDescr a
Console.ReqArg [Char] -> Flag
Flag.Input [Char]
"FILE|URL")
  [Char]
"input file or URL"

mode :: Option
mode :: Option
mode = [Char] -> [[Char]] -> ArgDescr Flag -> [Char] -> Option
forall a. [Char] -> [[Char]] -> ArgDescr a -> [Char] -> OptDescr a
Console.Option
  [Char
'm']
  [[Char]
"mode"]
  (([Char] -> Flag) -> [Char] -> ArgDescr Flag
forall a. ([Char] -> a) -> [Char] -> ArgDescr a
Console.ReqArg [Char] -> Flag
Flag.Mode [Char]
"MODE")
  [Char]
"decode or encode"

output :: Option
output :: Option
output = [Char] -> [[Char]] -> ArgDescr Flag -> [Char] -> Option
forall a. [Char] -> [[Char]] -> ArgDescr a -> [Char] -> OptDescr a
Console.Option
  [Char
'o']
  [[Char]
"output"]
  (([Char] -> Flag) -> [Char] -> ArgDescr Flag
forall a. ([Char] -> a) -> [Char] -> ArgDescr a
Console.ReqArg [Char] -> Flag
Flag.Output [Char]
"FILE")
  [Char]
"output file"

schema :: Option
schema :: Option
schema =
  [Char] -> [[Char]] -> ArgDescr Flag -> [Char] -> Option
forall a. [Char] -> [[Char]] -> ArgDescr a -> [Char] -> OptDescr a
Console.Option [] [[Char]
"schema"] (Flag -> ArgDescr Flag
forall a. a -> ArgDescr a
Console.NoArg Flag
Flag.Schema) [Char]
"output the schema"

skipCrc :: Option
skipCrc :: Option
skipCrc =
  [Char] -> [[Char]] -> ArgDescr Flag -> [Char] -> Option
forall a. [Char] -> [[Char]] -> ArgDescr a -> [Char] -> OptDescr a
Console.Option [] [[Char]
"skip-crc"] (Flag -> ArgDescr Flag
forall a. a -> ArgDescr a
Console.NoArg Flag
Flag.SkipCrc) [Char]
"skip the CRC"

version :: Option
version :: Option
version = [Char] -> [[Char]] -> ArgDescr Flag -> [Char] -> Option
forall a. [Char] -> [[Char]] -> ArgDescr a -> [Char] -> OptDescr a
Console.Option
  [Char
'v']
  [[Char]
"version"]
  (Flag -> ArgDescr Flag
forall a. a -> ArgDescr a
Console.NoArg Flag
Flag.Version)
  [Char]
"show the version"