-
Notifications
You must be signed in to change notification settings - Fork 3.7k
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
feat(tools/cosmovisor): Add ShowUpgradeInfoCmd #21932
Changes from 2 commits
dd7929d
d258cff
aa7f8b1
5c9aca0
63272b1
1e842c5
e20269d
6bbf2ac
b0eaf1a
dd23fae
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,35 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
package main | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"fmt" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"os" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"github.com/spf13/cobra" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
func NewShowUpgradeInfoCmd() *cobra.Command { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
showUpgradeInfo := &cobra.Command{ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Use: "show-upgrade-info <path to executable>", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Short: "Show upgrade-info.json into stdout.", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SilenceUsage: true, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Let's not silence usage. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Args: cobra.ExactArgs(1), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RunE: showUpgradeInfoCmd, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return showUpgradeInfo | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
func showUpgradeInfoCmd(cmd *cobra.Command, args []string) error { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if len(args) != 1 { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return fmt.Errorf("expected exactly one argument") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
data, err := os.ReadFile(args[0]) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if err != nil { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return fmt.Errorf("failed to read upgrade-info.json: %w", err) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fmt.Println(string(data)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Let's use |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return nil | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Suggestions for improving error handling and output method. The
Consider applying these changes: func showUpgradeInfoCmd(cmd *cobra.Command, args []string) error {
- if len(args) != 1 {
- return fmt.Errorf("expected exactly one argument")
- }
-
data, err := os.ReadFile(args[0])
if err != nil {
+ if os.IsNotExist(err) {
+ return fmt.Errorf("upgrade-info.json not found at %s: %w", args[0], err)
+ }
return fmt.Errorf("failed to read upgrade-info.json: %w", err)
}
- fmt.Println(string(data))
+ _, err = fmt.Fprintln(cmd.OutOrStdout(), string(data))
+ if err != nil {
+ return fmt.Errorf("failed to write output: %w", err)
+ }
return nil
} These changes improve error specificity, remove redundant checks, and use 📝 Committable suggestion
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The bot has great suggestion, could you implement them? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @julienrbrt, certainly! I've implemented the bot's suggestions. Here's the updated package main
import (
"fmt"
"os"
"github.com/spf13/cobra"
)
func NewShowUpgradeInfoCmd() *cobra.Command {
showUpgradeInfo := &cobra.Command{
Use: "show-upgrade-info <path to executable>",
Short: "Show upgrade-info.json into stdout.",
SilenceUsage: true,
Args: cobra.ExactArgs(1),
RunE: showUpgradeInfoCmd,
}
return showUpgradeInfo
}
func showUpgradeInfoCmd(cmd *cobra.Command, args []string) error {
data, err := os.ReadFile(args[0])
if err != nil {
if os.IsNotExist(err) {
return fmt.Errorf("upgrade-info.json not found at %s: %w", args[0], err)
}
return fmt.Errorf("failed to read upgrade-info.json: %w", err)
}
_, err = fmt.Fprintln(cmd.OutOrStdout(), string(data))
if err != nil {
return fmt.Errorf("failed to write output: %w", err)
}
return nil
} These changes improve error specificity, remove the redundant argument check, and use 🐰😊 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The goal of the issue wasn't to pass an upgrade-info location, but to get it from the cosmovisor node config. We have the root of the node, so we can know the path of the executable. Taking an argument doesn't close the issue.