validateTargetName function
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;
}