(ctx context.Context, ref string)
| 570 | } |
| 571 | |
| 572 | func (r cliProviderVaultMetadataResolver) GetMetadata(ctx context.Context, ref string) (vault.Metadata, error) { |
| 573 | db, err := globaldb.OpenGlobalDB(ctx, r.homePaths.DatabaseFile) |
| 574 | if err != nil { |
| 575 | return vault.Metadata{}, fmt.Errorf("cli: open global DB for provider auth status: %w", err) |
| 576 | } |
| 577 | lookupEnv := func(key string) (string, bool) { |
| 578 | value := r.getenv(key) |
| 579 | return value, strings.TrimSpace(value) != "" |
| 580 | } |
| 581 | service, err := vault.NewService( |
| 582 | db, |
| 583 | vault.NewFileKeyProvider(r.homePaths.HomeDir, lookupEnv), |
| 584 | vault.WithLookupEnv(lookupEnv), |
| 585 | ) |
| 586 | if err != nil { |
| 587 | closeErr := db.Close(ctx) |
| 588 | if closeErr != nil { |
| 589 | return vault.Metadata{}, fmt.Errorf( |
| 590 | "cli: initialize provider auth vault status: %w; close global DB: %v", |
| 591 | err, |
| 592 | closeErr, |
| 593 | ) |
| 594 | } |
| 595 | return vault.Metadata{}, fmt.Errorf("cli: initialize provider auth vault status: %w", err) |
| 596 | } |
| 597 | metadata, err := service.GetMetadata(ctx, ref) |
| 598 | closeErr := db.Close(ctx) |
| 599 | if err != nil { |
| 600 | if errors.Is(err, vault.ErrSecretNotFound) { |
| 601 | if closeErr != nil { |
| 602 | return vault.Metadata{}, fmt.Errorf("cli: close provider auth vault status DB: %w", closeErr) |
| 603 | } |
| 604 | return vault.Metadata{}, err |
| 605 | } |
| 606 | if closeErr != nil { |
| 607 | return vault.Metadata{}, fmt.Errorf( |
| 608 | "cli: read provider credential metadata: %w; close global DB: %v", |
| 609 | err, |
| 610 | closeErr, |
| 611 | ) |
| 612 | } |
| 613 | return vault.Metadata{}, fmt.Errorf("cli: read provider credential metadata: %w", err) |
| 614 | } |
| 615 | if closeErr != nil { |
| 616 | return vault.Metadata{}, fmt.Errorf("cli: close provider auth vault status DB: %w", closeErr) |
| 617 | } |
| 618 | return metadata, nil |
| 619 | } |
| 620 | |
| 621 | func providerAuthStatusBundle(record providerAuthStatusRecord) outputBundle { |
| 622 | return outputBundle{ |
nothing calls this directly
no test coverage detected