static async Task Main(string[] args) { int exitCode = 0; HandleArgs(args); try { if (showHelp) { ShowHelp(); } else { Validate(); var db = await DatabaseFactory.CreateAsync(connectionString); await GenerateReportAsync <DependencyReport>(db, outputDirectory, overwriteFiles); await GenerateReportAsync <TablesReport>(db, outputDirectory, overwriteFiles); await GenerateReportAsync <ViewsReport>(db, outputDirectory, overwriteFiles); await GenerateReportAsync <RoutinesReport>(db, outputDirectory, overwriteFiles); } } catch (Exception exc) { exitCode = -1; ShowHelp(exc.Message); } finally { Environment.Exit(exitCode); } }