Args.kt

  1. package com.hexagontk.shell

  2. inline fun <reified T : Any> Option(
  3.     shortName: Char? = null,
  4.     name: String? = null,
  5.     description: String? = null,
  6.     regex: Regex? = null,
  7.     optional: Boolean = true,
  8.     multiple: Boolean = false,
  9.     tag: String? = null,
  10. ) : Option<T> =
  11.     Option(T::class, shortName, name, description, regex, optional, multiple, tag)

  12. inline fun <reified T : Any> Option(
  13.     shortName: Char? = null,
  14.     name: String? = null,
  15.     description: String? = null,
  16.     regex: Regex? = null,
  17.     tag: String? = null,
  18.     values: List<T>
  19. ) : Option<T> =
  20.     Option(T::class, shortName, name, description, regex, tag, values)

  21. inline fun <reified T : Any> Option(
  22.     shortName: Char? = null,
  23.     name: String? = null,
  24.     description: String? = null,
  25.     regex: Regex? = null,
  26.     tag: String? = null,
  27.     value: T
  28. ) : Option<T> =
  29.     Option(T::class, shortName, name, description, regex, tag, value)

  30. inline fun <reified T : Any> Parameter(
  31.     name: String,
  32.     description: String? = null,
  33.     regex: Regex? = null,
  34.     optional: Boolean = true,
  35.     multiple: Boolean = false,
  36.     tag: String? = null,
  37. ) : Parameter<T> =
  38.     Parameter(T::class, name, description, regex, optional, multiple, tag)

  39. inline fun <reified T : Any> Parameter(
  40.     name: String,
  41.     description: String? = null,
  42.     regex: Regex? = null,
  43.     tag: String? = null,
  44.     values: List<T>,
  45. ) : Parameter<T> =
  46.     Parameter(T::class, name, description, regex, tag, values)

  47. inline fun <reified T : Any> Parameter(
  48.     name: String,
  49.     description: String? = null,
  50.     regex: Regex? = null,
  51.     tag: String? = null,
  52.     value: T,
  53. ) : Parameter<T> =
  54.     Parameter(T::class, name, description, regex, tag, value)