Module Args.One

One expected value

let flag: args:list((t, validate)) => name:string => ?⁠alias:string => doc:string => default:'a => empty:'a => Type.t('a) => argValidateTuple('a);

0 or 1 value, if users:

  • Provide an arg with this name and no values -> default will be returned
  • Provide an arg with this name and exactly 1 value -> provided value will be returned
  • Provide an arg with this name and more than 1 value -> validation error
  • Don't provide an arg with this name -> empty will be returned
let boolFlag: args:list((t, validate)) => name:string => ?⁠alias:string => doc:string => ?⁠default:bool => ?⁠empty:bool => Type.t(bool) => argValidateTuple(bool);

A specialized version of the flag

let req: args:list((t, validate)) => name:string => ?⁠alias:string => doc:string => Type.t('a) => argValidateTuple('a);

Required value, if users:

  • Provide an arg with this name and no values -> validation error
  • Provide an arg with this name and exactly 1 value -> provided value will be returned
  • Provide an arg with this name and more than 1 value -> validation error
  • Don't provide an arg with this name -> validation error
let default: args:list((t, validate)) => name:string => ?⁠alias:string => doc:string => default:'a => Type.t('a) => argValidateTuple('a);

Optional with a default value, if users:

  • Provide an arg with this name and no values -> validation error
  • Provide an arg with this name and exactly 1 value -> provided value will be returned
  • Provide an arg with this name and more than 1 value -> validation error
  • Don't provide an arg with this name -> default will be returned
let opt: args:list((t, validate)) => name:string => ?⁠alias:string => doc:string => Type.t('a) => argValidateTuple(option('a));

Optional, if users:

  • Provide an arg with this name and no values -> validation error
  • Provide an arg with this name and exactly 1 value -> provided value will be returned
  • Provide an arg with this name and more than 1 value -> validation error
  • Don't provide an arg with this name -> None will be returned

If you want to allow users to provide an argument, but no values (for example --copy), you can check Args.One.flag.