import 'dart:io'; import 'package:args/command_runner.dart'; import 'package:random_string/random_string.dart' as rs; class KeyCommand extends Command { @override String get name => 'key'; @override String get description => 'Generates a new `angel_auth`key.'; @override run() async { var secret = rs.randomAlphaNumeric(32); print('Generated new JWT secret: $secret'); await changeSecret(new File('config/default.yaml'), secret); await changeSecret(new File('config/production.yaml'), secret); } changeSecret(File file, String secret) async { if (await file.exists()) { var contents = await file.readAsString(); contents = contents.replaceAll(new RegExp(r'jwt_secret:[^\n]+\n?'), ''); await file.writeAsString(contents.trim() + '\njwt_secret: $secret'); } } }