validateTargetName function

String? validateTargetName(
  1. String name, {
  2. Set<String> reserved = reservedCliVerbs,
})

Validates a target name (ADR-0015).

A valid target name is a lowercase identifier ([a-z][a-z0-9_-]*) that does not shadow a reservedCliVerbs core verb. Returns an actionable error message, or null when the name is valid.

Implementation

String? validateTargetName(
  String name, {
  Set<String> reserved = reservedCliVerbs,
}) {
  if (!_targetNamePattern.hasMatch(name)) {
    return 'invalid target name "$name": targets are lowercase identifiers '
        '([a-z][a-z0-9_-]*), e.g. "device", "publish-play".';
  }
  if (reserved.contains(name)) {
    final sorted = reserved.toList()..sort();
    return 'target name "$name" shadows a reserved core verb. Core verbs are '
        'reserved and cannot be shadowed by targets (ADR-0015). '
        'Reserved verbs: ${sorted.join(', ')}. Pick another target name.';
  }
  return null;
}