Skip to content
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

fix(client): get desired config file #22261

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open

Conversation

GAtom22
Copy link
Contributor

@GAtom22 GAtom22 commented Oct 14, 2024

Description

Closes: #XXXX

When calling the conf, err := getClientConfig(configPath, ctx.Viper) on the client configuration, the current code calls the following functions on the Viper instance:

	v.AddConfigPath(configPath)
	v.SetConfigName("client")
	v.SetConfigType("toml")

	if err := v.ReadInConfig(); err != nil {
		return nil, err
	}

However, if having a custom home directory specified, this will result in picking up an incorrect configuration.
This happens because the logic in place does the following:

This logic can result in using an incorrect configuration file.

To ensure the desired configuration file is used (using the provided configPath), this PR adds the call to the SetConfigFile function, which explicitly sets the v.configFile value.


Author Checklist

All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.

I have...

  • included the correct type prefix in the PR title, you can find examples of the prefixes below:
  • confirmed ! in the type prefix if API or client breaking change
  • targeted the correct branch (see PR Targeting)
  • provided a link to the relevant issue or specification
  • reviewed "Files changed" and left comments if necessary
  • included the necessary unit and integration tests
  • added a changelog entry to CHANGELOG.md
  • updated the relevant documentation or specification, including comments for documenting Go code
  • confirmed all CI checks have passed

Reviewers Checklist

All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.

Please see Pull Request Reviewer section in the contributing guide for more information on how to review a pull request.

I have...

  • confirmed the correct type prefix in the PR title
  • confirmed all author checklist items have been addressed
  • reviewed state machine logic, API design and naming, documentation is accurate, tests and test coverage

Summary by CodeRabbit

  • New Features

    • Introduced simulation of nested messages.
    • Added a Linux-only backend for crypto/keyring module.
    • Enabled importing hex keys via standard input.
    • Explicitly set the client configuration file.
  • Bug Fixes

    • Resolved issues with querying addresses.
    • Improved handling of client configurations.
    • Skipped certain tests under specific conditions.
  • Documentation

    • Updated changelog for clarity and ease of navigation.

Copy link
Contributor

coderabbitai bot commented Oct 14, 2024

📝 Walkthrough
📝 Walkthrough

Walkthrough

The changes in this pull request enhance the configuration handling logic in client/config/toml.go by introducing new constants for the configuration name and type, replacing hardcoded strings. The SetConfigName and SetConfigType methods of the viper.Viper instance are updated to utilize these constants. Additionally, the changelog in CHANGELOG.md is updated to include new features, improvements, and bug fixes across various modules in the Cosmos SDK.

Changes

File Change Summary
client/config/toml.go - Added constants confName and confType to replace hardcoded strings in getClientConfig.
- Updated SetConfigName and SetConfigType methods to use the new constants.
- Introduced a line to set the configuration file path dynamically using fmt.Sprintf.
CHANGELOG.md - Added new features: simulation of nested messages, a Linux-only backend for crypto/keyring, and support for importing hex keys.
- Improvements: skipping certain tests under specific conditions and updates to client configurations.
- Bug fixes: querying addresses and handling client configurations.

Suggested reviewers

  • akhilkumarpilli
  • julienrbrt

📜 Recent review details

Configuration used: .coderabbit.yml
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between a10e57d and df942f7.

📒 Files selected for processing (1)
  • CHANGELOG.md (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
CHANGELOG.md (1)

Pattern **/*.md: "Assess the documentation for misspellings, grammatical errors, missing documentation and correctness"

🔇 Additional comments (4)
CHANGELOG.md (4)

Line range hint 1-55: LGTM: Unreleased changes are well-documented

The "Unreleased" section of the CHANGELOG.md file is well-organized and provides a comprehensive overview of the upcoming changes. The improvements, bug fixes, and new features are clearly categorized, making it easy for developers to understand the upcoming changes in the SDK.


Line range hint 57-1007: LGTM: Comprehensive documentation for v0.47.0 release

The v0.47.0 section of the CHANGELOG.md file provides an extensive and well-documented overview of the changes in this release. It covers features, improvements, bug fixes, and breaking changes across various modules and components of the SDK.

Developers should pay special attention to the API Breaking Changes and State Machine Breaking Changes sections, as these may require updates to existing applications built with the SDK.


Line range hint 1009-1014: LGTM: Well-structured and informative CHANGELOG

The CHANGELOG.md file is well-structured, providing detailed information about changes in each version of the Cosmos SDK. The consistent format across versions and the inclusion of links to previous changelogs make it easy for developers to track the evolution of the SDK and understand the changes between versions.


Line range hint 1-1014: Excellent CHANGELOG documentation

The CHANGELOG.md file is exemplary in its organization, detail, and consistency. It provides a comprehensive history of changes across multiple versions of the Cosmos SDK, with clear categorization of features, improvements, bug fixes, and breaking changes. This level of documentation is invaluable for developers working with the SDK, allowing them to easily understand the evolution of the project and plan for upgrades accordingly.


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions github-actions bot added the C:CLI label Oct 14, 2024
@GAtom22 GAtom22 changed the title fix(config): get desired config file fix(client): get desired config file Oct 14, 2024
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (2)
client/config/toml.go (2)

79-82: LGTM: Good use of constants, consider moving them.

The addition of confName and confType constants improves code maintainability by eliminating magic strings. This aligns well with the Uber Go Style Guide.

Consider moving these constants to the package level if they might be used elsewhere in the future. This would improve reusability without affecting the current implementation.


86-86: LGTM: Explicit config file setting addresses the core issue.

The addition of v.SetConfigFile with a dynamically constructed path directly addresses the PR objectives. This should resolve the issue of incorrect configuration file selection mentioned in the PR summary.

Consider using filepath.Join instead of string concatenation for better cross-platform compatibility:

v.SetConfigFile(filepath.Join(configPath, fmt.Sprintf("%s.%s", confName, confType)))

This would require adding "path/filepath" to the imports.

📜 Review details

Configuration used: .coderabbit.yml
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 4274dcf and a10e57d.

📒 Files selected for processing (1)
  • client/config/toml.go (2 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
client/config/toml.go (1)

Pattern **/*.go: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.

🔇 Additional comments (2)
client/config/toml.go (2)

5-5: LGTM: Import addition is appropriate.

The addition of the fmt package import is consistent with the upcoming changes in the getClientConfig function. This follows the Uber Go Style Guide recommendations for standard library imports.


84-85: LGTM: Improved consistency with constants.

The use of confName and confType constants in SetConfigName and SetConfigType improves code consistency and maintainability. This change aligns with the PR objectives and the Uber Go Style Guide.

@julienrbrt
Copy link
Member

Could you add a test or at least steps to reproduce?

I've never noticed an issue actually 🤔

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

Successfully merging this pull request may close these issues.

3 participants