generateDartParameterMethod static method
String
generateDartParameterMethod(
- String methodName,
- String scriptContent,
- List<
ShellParameter> parameters, - bool allowRawParameters,
Generates Dart code for creating a script with parameters
Implementation
static String generateDartParameterMethod(
String methodName,
String scriptContent,
List<ShellParameter> parameters,
bool allowRawParameters,
) {
final buffer = StringBuffer();
// Generate method signature
buffer.write(' String $methodName(');
final hasParameters = parameters.isNotEmpty || allowRawParameters;
if (hasParameters) {
buffer.writeln('{');
// Add typed parameters
for (int i = 0; i < parameters.length; i++) {
final param = parameters[i];
final paramType = param.type == ParameterType.flag ? 'bool' : 'String';
if (param.required) {
buffer.write(' required $paramType ${param.name}');
} else {
final defaultValue = param.type == ParameterType.flag
? 'false'
: (param.defaultValue != null
? "'${param.defaultValue}'"
: 'null');
buffer.write(' $paramType? ${param.name} = $defaultValue');
}
if (i < parameters.length - 1 || allowRawParameters) {
buffer.writeln(',');
} else {
buffer.writeln();
}
}
// Add raw parameters option
if (allowRawParameters) {
buffer.writeln(' String? rawParameters,');
}
buffer.write(' }');
}
buffer.writeln(') {');
// Generate method body
buffer.writeln(' final args = <String>[];');
// Process typed parameters
for (final param in parameters) {
if (param.type == ParameterType.flag) {
buffer.writeln(
' if (${param.name} == true) args.add("-${param.flag}");');
} else {
buffer.writeln(' if (${param.name} != null) {');
buffer.writeln(' args.add("-${param.flag}");');
buffer.writeln(' args.add(${param.name}!);');
buffer.writeln(' }');
}
}
// Process raw parameters
if (allowRawParameters) {
buffer.writeln(
' if (rawParameters != null && rawParameters.isNotEmpty) {');
buffer.writeln(' args.addAll(_parseRawParameters(rawParameters));');
buffer.writeln(' }');
}
buffer.writeln(' return _buildScriptWithArgs($scriptContent, args);');
buffer.writeln(' }');
return buffer.toString();
}