import 'dart:async';
import 'dart:convert';
import 'dart:io';

final _blnsJsonRawUrl =
    'https://github.com/minimaxir/big-list-of-naughty-strings/raw/master/blns.json';
final _blnsFilePath = 'test/blns.dart';

Future<void> main() async {
  final client = HttpClient();
  List<String> json;
  try {
    final request = await client.getUrl(Uri.parse(_blnsJsonRawUrl));
    final response = await request.close();
    final source =
        await response.cast<List<int>>().transform(utf8.decoder).join('');
    json = (jsonDecode(source) as List).cast<String>();
  } finally {
    client.close();
  }
  final blnsContent = StringBuffer('''
// GENERATED FILE. DO NOT EDIT.
//
// This file was generated from big-list-of-naughty-strings's JSON file:
// $_blnsJsonRawUrl
// at ${DateTime.now()} by the script, tool/update_blns.dart.

// ignore_for_file: text_direction_code_point_in_literal, use_raw_strings

''');
  blnsContent.writeln('const blns = <String>[');
  for (final str in json) {
    final escaped = str
        .replaceAll(r'\', r'\\')
        .replaceAll("'", r"\'")
        .replaceAll(r'$', r'\$');
    blnsContent.writeln("  '$escaped',");
  }
  blnsContent.writeln('];');
  File(_blnsFilePath).writeAsStringSync(blnsContent.toString());
}
