Skip to content

Commit 882f89f

Browse files
author
Mustafa Ali Dikçinar
committed
refactor:
- Updated the class name callback to allow null values. - Enhanced the toString method to include className in GenerateOptions. - Added validation for className to ensure it is a valid Dart identifier. - Trimmed whitespace from className before use.
1 parent 5a71dc2 commit 882f89f

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

bin/generate.dart

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ ArgParser _generateArgParser(GenerateOptions? generateOptions) {
8585
'class-name',
8686
abbr: 'c',
8787
defaultsTo: 'LocaleKeys',
88-
callback: (String? x) => generateOptions!.className = x!,
89-
help: 'Custom class name for generated file',
88+
callback: (String? x) => generateOptions!.className = x,
89+
help: 'Custom class name for generated keys class (keys format)',
9090
);
9191

9292
return parser;
@@ -104,7 +104,13 @@ class GenerateOptions {
104104

105105
@override
106106
String toString() {
107-
return 'format: $format sourceDir: $sourceDir sourceFile: $sourceFile outputDir: $outputDir outputFile: $outputFile skipUnnecessaryKeys: $skipUnnecessaryKeys';
107+
return 'format: $format '
108+
'sourceDir: $sourceDir '
109+
'sourceFile: $sourceFile '
110+
'outputDir: $outputDir '
111+
'outputFile: $outputFile '
112+
'skipUnnecessaryKeys: $skipUnnecessaryKeys '
113+
'className: $className';
108114
}
109115
}
110116

@@ -154,7 +160,15 @@ void generateFile(
154160
Directory outputPath,
155161
GenerateOptions options,
156162
) async {
157-
final className = options.className ?? 'LocaleKeys';
163+
final className = (options.className?.trim().isNotEmpty ?? false)
164+
? options.className!.trim()
165+
: 'LocaleKeys';
166+
if (options.format == 'keys' &&
167+
!RegExp(r'^[A-Za-z_$][A-Za-z0-9_$]*$').hasMatch(className)) {
168+
stderr.writeln(
169+
"Invalid --class-name '$className'. It must be a valid Dart identifier (start with a letter or _; only letters, digits, _ or \$).");
170+
return;
171+
}
158172
var generatedFile = File(outputPath.path);
159173
if (!generatedFile.existsSync()) {
160174
generatedFile.createSync(recursive: true);
@@ -194,7 +208,7 @@ Future _writeKeys(
194208
195209
// ignore_for_file: constant_identifier_names
196210
197-
abstract class $className {
211+
abstract class $className {
198212
''';
199213

200214
final fileData = File(files.first.path);

0 commit comments

Comments
 (0)