renderTinkerScript function
The program tinker runs for expression, importing imports.
Implementation
String renderTinkerScript(List<String> imports, String expression) {
final buffer = StringBuffer()
..writeln('// Generated by `dartisan tinker`; safe to delete.')
..writeln("import 'dart:convert';")
..writeln()
..writeln("import 'package:daravel/daravel.dart';")
..writeln();
for (final import in imports) {
buffer.writeln("import '$import';");
}
buffer
..writeln("import '../../bootstrap/app.dart';")
..writeln()
..writeln('Future<void> main() async {')
..writeln(' final app = createApp();')
..writeln(' await app.boot();')
..writeln(' try {')
..writeln(' final Object? result = await app.run<Object?>(')
..writeln(' () async => $expression,')
..writeln(' );')
..writeln(' print(')
..writeln(' result is String')
..writeln(' ? result')
..writeln(" : JsonEncoder.withIndent(' ', (Object? value) {")
..writeln(' return value is JsonSerializable')
..writeln(' ? value.toJson()')
..writeln(" : '\$value';")
..writeln(' }).convert(result),')
..writeln(' );')
..writeln(' } finally {')
..writeln(' await app.shutdown();')
..writeln(' }')
..writeln('}');
return buffer.toString();
}