import 'package:args/args.dart'; import 'package:knex_dart/knex_dart.dart'; import 'package:knex_dart_sqlite/knex_dart_sqlite.dart'; const String version = '1.0.0'; ArgParser buildParser() { return ArgParser() ..addFlag( 'help', abbr: 'h', negatable: false, help: 'Print this usage information.', ) ..addFlag( 'verbose', abbr: 'v', negatable: false, help: 'Show additional command output.', ) ..addFlag('version', negatable: false, help: 'Print the tool version.') ..addOption( 'database', abbr: 'd', help: 'Path to the database', ) ..addOption( 'add', abbr: 'a', help: 'Add updates from supplied Tab-Separated Value (TSV).', ); } void printUsage(ArgParser argParser) { print('Usage: dart cohab_updater.dart [arguments]'); print(argParser.usage); } // Straight up gemini void openDatabase(String path) async { print("Opening the database $path ..."); final db = await KnexSQLite.connect(filename: 'Test.db'); try { // final grab = await db.query // .select(['name', 'comment', 'type']) // .table('ProcessInformation') // .limit(5); // print(grab); } catch (e) { print("Query failed: $e"); } } void main(List arguments) { String dbpath; final ArgParser argParser = buildParser(); try { final ArgResults results = argParser.parse(arguments); bool verbose = false; // Process the parsed arguments. if (results.flag('help')) { printUsage(argParser); return; } if (results.flag('version')) { print('cohab_updater version: $version'); return; } if (results.flag('verbose')) { verbose = true; } // Act on the arguments provided. //print('Positional arguments: ${results.rest}'); //if (verbose) { // print('[VERBOSE] All arguments: ${results.arguments}'); //} if (!results.wasParsed('database')) { print('No database was supplied!'); return; } if (!results.wasParsed('add')) { print('Missing Tab-Separate Values sheet!'); return; } dbpath = results["database"]; openDatabase(dbpath); } on FormatException catch (e) { // Print usage information if an invalid argument was provided. print(e.message); print(''); printUsage(argParser); } }