Skip to content

Commit

Permalink
feat: add feature to send library update message (#174)
Browse files Browse the repository at this point in the history
* feat: add feature to send library update message
  • Loading branch information
shrimalmadhur authored Jul 23, 2024
1 parent 8b51ab0 commit fa2c3ae
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 0 deletions.
6 changes: 6 additions & 0 deletions cmd/eigenlayer/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@ import (
"fmt"
"os"

"github.com/Layr-Labs/eigenlayer-cli/internal/versionupdate"
"github.com/Layr-Labs/eigenlayer-cli/pkg"
"github.com/Layr-Labs/eigenlayer-cli/pkg/utils"

"github.com/urfave/cli/v2"
)

Expand All @@ -32,6 +34,10 @@ func main() {

// Initialize the dependencies
prompter := utils.NewPrompter()
app.After = func(c *cli.Context) error {
versionupdate.Check(app.Version)
return nil
}

app.Commands = append(app.Commands, pkg.OperatorCmd(prompter))
app.Commands = append(app.Commands, pkg.RewardsCmd(prompter))
Expand Down
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ require (
github.com/Layr-Labs/eigenlayer-contracts v0.3.0-rc3-holesky-preprod-rewards.0.20240618161038-04a0176562a0
github.com/Layr-Labs/eigenlayer-rewards-proofs v0.2.3
github.com/Layr-Labs/eigensdk-go v0.1.9
github.com/blang/semver/v4 v4.0.0
github.com/consensys/gnark-crypto v0.12.1
github.com/ethereum/go-ethereum v1.14.5
github.com/fatih/color v1.17.0
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88=
github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k=
github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU=
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U=
Expand Down
74 changes: 74 additions & 0 deletions internal/versionupdate/check_version_update.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package versionupdate

import (
"encoding/json"
"fmt"
"io"
"net/http"

"github.com/fatih/color"

"github.com/blang/semver/v4"
)

const (
organization = "Layr-Labs"
repository = "eigenlayer-cli"
)

type release struct {
TagName string `json:"tag_name"`
Name string `json:"name"`
}

// Check if there is a new version of the package
// If there is, print a message to the user
// If there isn't, do nothing
// Don't do anything for development version
// If anything fails in this, it will silently pass since this doesn't affect operations
func Check(currentVersion string) {
if currentVersion == "development" {
fmt.Println("Running development version")
return
}

// Get latest version from GitHub releases
latestReleaseUrl := fmt.Sprintf("https://api.github.com/repos/%s/%s/releases/latest", organization, repository)
response, err := http.Get(latestReleaseUrl)
if err != nil {
return
}
defer response.Body.Close()
respBytes, err := io.ReadAll(response.Body)
if err != nil {
return
}
var data release

err = json.Unmarshal(respBytes, &data)
if err != nil {
return
}

// GitHub API returns in vX.X.X format so remove v
latestVersion := data.TagName[1:]
latestSemVer, err := semver.Make(latestVersion)
if err != nil {
return
}

currentSemVer, err := semver.Make(currentVersion)
if err != nil {
return
}

if latestSemVer.GT(currentSemVer) {
greenVersion := color.GreenString(latestVersion)
yellowOldVersion := color.YellowString(currentVersion)
fmt.Println()
fmt.Printf("There is a new version (%s) for this library available.\n", greenVersion)
fmt.Printf("Your current running verison is (%s).\n", yellowOldVersion)
fmt.Println("Please update (https://github.com/Layr-Labs/eigenlayer-cli#install-eigenlayer-cli-using-a-binary) to get latest features and bug fixes.")
fmt.Println()
}
}

0 comments on commit fa2c3ae

Please sign in to comment.