(ctx executor.ExecutionContext, outputFormat string, query string, wait string, waitTimeout int)
| 368 | } |
| 369 | |
| 370 | func (b CommandBuilder) executeWait(ctx executor.ExecutionContext, outputFormat string, query string, wait string, waitTimeout int) error { |
| 371 | logger := log.NewDefaultLogger(b.StdErr) |
| 372 | outputWriter := output.NewMemoryOutputWriter() |
| 373 | for start := time.Now(); time.Since(start) < time.Duration(waitTimeout)*time.Second; { |
| 374 | err := b.execute(ctx, "json", "", outputWriter) |
| 375 | result, evaluationErr := b.evaluateWaitCondition(outputWriter.Response(), wait) |
| 376 | if evaluationErr != nil { |
| 377 | return evaluationErr |
| 378 | } |
| 379 | if result { |
| 380 | resultWriter := b.outputWriter(b.StdOut, outputFormat, query) |
| 381 | _ = resultWriter.WriteResponse(outputWriter.Response()) |
| 382 | return err |
| 383 | } |
| 384 | logger.LogError("Condition is not met yet. Waiting...\n") |
| 385 | time.Sleep(1 * time.Second) |
| 386 | } |
| 387 | return errors.New("Timed out waiting for condition") |
| 388 | } |
| 389 | |
| 390 | func (b CommandBuilder) evaluateWaitCondition(response output.ResponseInfo, wait string) (bool, error) { |
| 391 | body, err := io.ReadAll(response.Body) |
no test coverage detected