A framework for building convergent cross-platform Nextcloud clients using Flutter.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.4 KiB

// ignore_for_file: depend_on_referenced_packages
import 'dart:io';
import 'package:dynamite/src/helpers/dart_helpers.dart';
import 'package:path/path.dart' as p;
void main() {
final files =
Directory('lib/src/api').listSync().cast<File>().where((final file) => file.path.endsWith('.openapi.dart'));
final idStatements = <String>[];
for (final file in files) {
final basename = p.basename(file.path);
final id = basename.substring(0, basename.length - 13);
final variablePrefix = toDartName(id);
final classPrefix = toDartName(id, uppercaseFirstCharacter: true);
idStatements.add(" static const $variablePrefix = '$id';");
final exports = ["export 'src/api/$id.openapi.dart';"];
if (File('lib/src/helpers/$id.dart').existsSync()) {
exports.add("export 'src/helpers/$id.dart';");
}
File('lib/$id.dart').writeAsStringSync('''
// coverage:ignore-file
import 'package:nextcloud/src/api/$id.openapi.dart';
import 'package:nextcloud/src/client.dart';
${exports.join('\n')}
// ignore: public_member_api_docs
extension ${classPrefix}Extension on NextcloudClient {
static final _$variablePrefix = Expando<Client>();
/// Client for the $id APIs
Client get $variablePrefix => _$variablePrefix[this] ??= Client.fromClient(this);
}
''');
}
File('lib/ids.dart').writeAsStringSync('''
// ignore_for_file: public_member_api_docs
final class AppIDs {
${idStatements.join('\n')}
}
''');
}