Skip to content

Optionally propagate context to Decoder #131

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 1, 2025
Merged

Conversation

sethvargo
Copy link
Owner

This introduces a new way to define EnvDecode to optionally pass in a context. The old way still works, but the context method is preferred. Since it's actually impossible to define the same function with different arguments on the same receiver, there's no possibility of conflict.

Fixes #130

This introduces a new way to define `EnvDecode` to optionally pass in a context. The old way still works, but the context method is preferred. Since it's actually impossible to define the same function with different arguments on the same receiver, there's no possibility of conflict.
@sethvargo sethvargo enabled auto-merge (squash) May 1, 2025 13:30
@sethvargo sethvargo requested a review from Copilot May 1, 2025 13:30
@sethvargo sethvargo merged commit 4bcd670 into main May 1, 2025
1 check passed
@sethvargo sethvargo deleted the sethvargo/decode_context branch May 1, 2025 13:31
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces an enhanced decoder interface that optionally propagates the context to decoding functions while retaining legacy support for the old behavior.

  • Updated the decoder interface to prefer context propagation via a new DecoderCtx interface while preserving the legacy Decoder interface.
  • Updated functions (processAsDecoder, processField, etc.) to pass the context parameter.
  • Updated tests and documentation (README.md) to reflect the new decoder changes.

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
envconfig_test.go Updated tests to validate both new DecoderCtx and legacy Decoder behaviors.
envconfig.go Modified decoder functions to accept and propagate a context parameter; updated interface documentation.
README.md Revised code snippet to demonstrate the new context-based custom decoder.
Comments suppressed due to low confidence (1)

envconfig_test.go:1444

  • [nitpick] Test names should be unique to clearly differentiate scenarios; consider renaming one of the duplicate "syntax/=key" tests for clarity.
name: "syntax/=key",

@@ -692,7 +699,7 @@ func lookup(key string, required bool, defaultValue string, l Lookuper) (string,

// processAsDecoder processes the given value as a decoder or custom
// unmarshaller.
Copy link
Preview

Copilot AI May 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update the function comment for processAsDecoder to mention that it now accepts a context parameter as part of the decoding process.

Suggested change
// unmarshaller.
// unmarshaller. It accepts a context parameter `ctx` to support context-aware
// decoding operations.

Copilot uses AI. Check for mistakes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Propagate context to Decoder
1 participant