Esempio n. 1
0
        static async Task Main(string[] args)
        {
            await Parser.Default.ParseArguments <Options>(args)
            .WithNotParsed(errors => throw new Exception("Invalid commandline: " + string.Join("; ", errors)))
            .WithParsedAsync(async options =>
            {
                var validator = new SqlValidator(options.ConnectionString);

                var tokenSource = new CancellationTokenSource(TimeSpan.FromMinutes(1d));
                await WaitForReady(validator, tokenSource.Token);

                var dirInfo = new DirectoryInfo(".");

                var executor = new TestExecutor(options.ConnectionString, options.Pattern);

                var results = await executor.Validate(dirInfo);

                var writer = new GitHubErrorWriter(new ConsoleOutputWrapper());

                writer.WriteErrors(results);

                if (results.Any(r => !r.Success))
                {
                    Environment.Exit(1);
                }
            });
        }
Esempio n. 2
0
        private static async Task WaitForReady(SqlValidator validator, CancellationToken cancellationToken)
        {
            while (!cancellationToken.IsCancellationRequested)
            {
                try
                {
                    await validator.TestConnection();

                    return;
                }
                catch (Exception)
                {
                    Console.WriteLine("Database connection failed, waiting a moment and trying again");
                    await Task.Delay(1000, cancellationToken);
                }
            }

            cancellationToken.ThrowIfCancellationRequested();
        }