NatrixCommand constructor

NatrixCommand({
  1. required String id,
  2. String? tooltip,
  3. required String description,
  4. required NatrixCommandCallback callback,
  5. String argumentTip = "",
  6. bool inheritFlags = false,
  7. bool hidden = false,
  8. List<NatrixFlag> flags = const [],
  9. List<NatrixCommand> children = const [],
})

Implementation

factory NatrixCommand.new({
  required final String id,
  String? tooltip,
  required final String description,
  required final NatrixCommandCallback callback,
  final String argumentTip = "",
  final bool inheritFlags = false,
  bool hidden = false,
  final List<NatrixFlag> flags = const [],
  final List<NatrixCommand> children = const [],
}) {
  void same(final NatrixFlag a, final NatrixFlag b) {
    bool twin = a.id == b.id;
    twin = twin || a.acronym == b.acronym;
    if (twin) {
      throw Exception(
        "A conflict with the flag ${a.id} has been detected. "
        "Please change the relevant acronym or identifier.",
      );
    }
  }

  flags.forEach((f) => flags.where((o) => o != f).forEach((o) => same(f, o)));
  hidden = id.isEmpty || hidden;

  return NatrixCommand._internal(
    id: id,
    tooltip: tooltip,
    description: description,
    hidden: hidden,
    argumentTip: argumentTip,
    inheritFlags: inheritFlags,
    flags: flags,
    children: children,
    callback: callback,
  );
}