HookStepModel.fromYaml constructor
HookStepModel.fromYaml(
- Map<String, dynamic> yamlMap
)
Implementation
factory HookStepModel.fromYaml(Map<String, dynamic> yamlMap) {
if (yamlMap['name'] == null || yamlMap['command'] == null) {
final missing = <String>[];
if (yamlMap['name'] == null) missing.add('name');
if (yamlMap['command'] == null) missing.add('command');
throw ArgumentError(
'Hook step missing required field(s): ${missing.join(', ')}');
}
Map<String, String>? envMap;
if (yamlMap['env'] != null) {
try {
envMap = Map<String, String>.from(
(yamlMap['env'] as Map)
.map((k, v) => MapEntry(k.toString(), v.toString())),
);
} catch (_) {
print(
'⚠️ [hooks step "${yamlMap['name']}"] Invalid env format. Ignoring env.');
}
}
int? timeout;
if (yamlMap['timeout'] != null) {
timeout = yamlMap['timeout'] is int
? yamlMap['timeout'] as int
: int.tryParse(yamlMap['timeout'].toString());
if (timeout != null && timeout <= 0) timeout = null;
}
return HookStepModel(
name: yamlMap['name'].toString(),
command: yamlMap['command'].toString(),
env: envMap,
workingDirectory: yamlMap['working_directory']?.toString(),
timeout: timeout,
allowFailure: yamlMap['allow_failure'] == true,
description: yamlMap['description']?.toString(),
);
}