Skip to content

Commit 0dde0ea

Browse files
authored
Merge pull request #1060 from YumNumm/regenerate-openapi-client/patch
2 parents 1c90413 + 0c3d07e commit 0dde0ea

File tree

165 files changed

+18735
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

165 files changed

+18735
-0
lines changed

packages/eqmonitor_api/bin/generate.dart

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,55 @@ void main(List<String> args) async {
3737
await _run('dart', ['run', 'swagger_parser'], packageDir.path);
3838
});
3939

40+
/// swagger_parser が生成した震度 enum のメンバー名を修正する。
41+
///
42+
/// swagger_parser は `+` `-` `!` をセパレータとして除去するため、
43+
/// `5-``5+` が両方 `value5` になり重複エラーが起きる。
44+
/// ここで以下の置換を行う:
45+
/// - `!5-` (undefined0) → value5unknown
46+
/// - `{N}-` (value{N}) → value{N}minus
47+
/// - `{N}+` (value{N}) → value{N}plus
48+
await _step('震度 enum メンバー名をパッチ', () async {
49+
final modelsDir = Directory('${packageDir.path}/lib/models');
50+
51+
if (!modelsDir.existsSync()) return;
52+
53+
final dartFiles = modelsDir.listSync().whereType<File>().where(
54+
(f) => f.path.endsWith('.dart') && !f.path.endsWith('.g.dart'),
55+
);
56+
57+
for (final file in dartFiles) {
58+
var content = file.readAsStringSync();
59+
final original = content;
60+
61+
// `!5-` の自動生成コメントを除去し undefined0 → value5unknown に置換
62+
content = content.replaceAll(
63+
RegExp(
64+
r" /// Incorrect name has been replaced\. Original name: `!5-`\.\n",
65+
),
66+
'',
67+
);
68+
content = content.replaceAll("undefined0('!5-')", "value5unknown('!5-')");
69+
70+
// value{N}('{N}-') → value{N}minus('{N}-')
71+
content = content.replaceAllMapped(
72+
RegExp(r"value(\d+)\('(\d+)-'\)"),
73+
(m) => "value${m[1]}minus('${m[2]}-')",
74+
);
75+
76+
// value{N}('{N}+') → value{N}plus('{N}+')
77+
content = content.replaceAllMapped(
78+
RegExp(r"value(\d+)\('(\d+)\+'\)"),
79+
(m) => "value${m[1]}plus('${m[2]}+')",
80+
);
81+
82+
if (content != original) {
83+
file.writeAsStringSync(content);
84+
stdout.writeln(' patched: ${file.path}');
85+
}
86+
}
87+
});
88+
4089
await _step('build_runner で Freezed / Retrofit コードを生成', () async {
4190
await _run('dart', [
4291
'run',

0 commit comments

Comments
 (0)