diff --git a/bin/jadb.dart b/bin/jadb.dart index 8b041d7..3e17cb0 100644 --- a/bin/jadb.dart +++ b/bin/jadb.dart @@ -15,7 +15,7 @@ ArgParser argParser() { help: 'Path to the SQLite library. This is used to load the SQLite library dynamically.', valueHelp: 'PATH', - mandatory: true, + defaultsTo: Platform.environment['LIBSQLITE_PATH'], ); return parser; } @@ -24,7 +24,7 @@ Future main(List arguments) async { final parser = argParser(); final ArgResults args = parser.parse(arguments); - if (!args.wasParsed('libsqlite')) { + if (args.option('libsqlite') == null) { print(parser.usage); exit(64); } diff --git a/bin/test_tool.dart b/bin/test_tool.dart new file mode 100644 index 0000000..b3fcb5c --- /dev/null +++ b/bin/test_tool.dart @@ -0,0 +1,50 @@ +import 'dart:ffi'; +import 'dart:io'; + +import 'package:args/args.dart'; +import 'package:jadb/search.dart'; +import 'package:sqflite_common_ffi/sqflite_ffi.dart'; +import 'package:sqlite3/open.dart'; + +ArgParser argParser() { + final parser = ArgParser(); + + parser.addOption( + 'libsqlite', + help: + 'Path to the SQLite library. This is used to load the SQLite library dynamically.', + valueHelp: 'PATH', + defaultsTo: Platform.environment['LIBSQLITE_PATH'], + ); + + parser.addOption( + 'jadb', + help: 'Path to the SQLite database file.', + valueHelp: 'PATH', + mandatory: true, + ); + + return parser; +} + +Future main(List arguments) async { + final parser = argParser(); + final ArgResults args = parser.parse(arguments); + + if (args.option('libsqlite') == null || !args.wasParsed('jadb')) { + print(parser.usage); + exit(64); + } + + final db = await createDatabaseFactoryFfi(ffiInit: () { + open.overrideForAll(() => DynamicLibrary.open(args.option('libsqlite')!)); + }).openDatabase(Directory.current.uri.resolve(args.option('jadb')!).path); + + final result = await JaDBConnection(db).searchKanji('漢'); + + if (result == null) { + print("No such kanji"); + } else { + print(result.toJson().toString()); + } +} diff --git a/flake.nix b/flake.nix index 07eea49..97e33dc 100644 --- a/flake.nix +++ b/flake.nix @@ -65,6 +65,9 @@ sqlint sqlfluff ]; + env = { + LIBSQLITE_PATH = "${pkgs.sqlite.out}/lib/libsqlite3.so"; + }; }; }); diff --git a/pubspec.yaml b/pubspec.yaml index c031263..f74e069 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -19,6 +19,7 @@ dev_dependencies: executables: jadb: jadb + test: test_tool topics: - database