Skip to content
This repository has been archived by the owner on Jul 1, 2022. It is now read-only.

Commit

Permalink
add abdfnx/resto package, build the version checker
Browse files Browse the repository at this point in the history
  • Loading branch information
abdfnx committed Apr 22, 2022
1 parent 6e0e8c7 commit bfc120d
Show file tree
Hide file tree
Showing 4 changed files with 115 additions and 2 deletions.
51 changes: 51 additions & 0 deletions api/get-latest.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package api

import (
"fmt"
"time"
"net/http"
"io/ioutil"

"github.com/tidwall/gjson"
"github.com/briandowns/spinner"
httpClient "github.com/abdfnx/resto/client"
)

func GetLatest() string {
url := "https://api.github.com/repos/abdfnx/gomo/releases/latest"

req, err := http.NewRequest("GET", url, nil)

if err != nil {
fmt.Errorf("Error creating request: %s", err.Error())
}

s := spinner.New(spinner.CharSets[11], 100*time.Millisecond)
s.Suffix = " 🔍 Checking for updates..."
s.Start()

client := httpClient.HttpClient()
res, err := client.Do(req)

if err != nil {
fmt.Printf("Error sending request: %s", err.Error())
}

defer res.Body.Close()

b, err := ioutil.ReadAll(res.Body)

if err != nil {
fmt.Printf("Error reading response: %s", err.Error())
}

body := string(b)

tag_name := gjson.Get(body, "tag_name")

latestVersion := tag_name.String()

s.Stop()

return latestVersion
}
3 changes: 2 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ go 1.18
require (
github.com/AlecAivazis/survey/v2 v2.3.4
github.com/abdfnx/looker v0.1.0
github.com/abdfnx/resto v0.1.6
github.com/briandowns/spinner v1.18.1
github.com/charmbracelet/bubbles v0.10.3
github.com/charmbracelet/bubbletea v0.20.0
Expand All @@ -20,7 +21,7 @@ require (
github.com/spf13/viper v1.11.0
github.com/tidwall/gjson v1.14.1
github.com/tidwall/sjson v1.2.4
golang.org/x/term v0.0.0-20210503060354-a79de5458b56
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211
)

require (
Expand Down
5 changes: 4 additions & 1 deletion go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym
github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w=
github.com/abdfnx/looker v0.1.0 h1:tMN7E0wKIgbydAPPQ1RkppJ1bGHn+B+y9PZy7mwa+3U=
github.com/abdfnx/looker v0.1.0/go.mod h1:QVfPHnredPBUg4R+MtEkZbMBbqrgtoaj0JHO3KYkvyE=
github.com/abdfnx/resto v0.1.6 h1:yOM9O9bpMP4lb2ox0U7/gcFXO78P5eUZBxWuKrfdrFA=
github.com/abdfnx/resto v0.1.6/go.mod h1:7+/dYHN1Zw70GKAOtT+76LG9ZnMqA9NTbUFFgEt7rsk=
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
github.com/briandowns/spinner v1.18.1 h1:yhQmQtM1zsqFsouh09Bk/jCjd50pC3EOGsh28gLVvwY=
github.com/briandowns/spinner v1.18.1/go.mod h1:mQak9GHqbspjC/5iUx3qMlIho8xBS/ppAL/hX5SmPJU=
Expand Down Expand Up @@ -381,8 +383,9 @@ golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210422114643-f5beecf764ed/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210503060354-a79de5458b56 h1:b8jxX3zqjpqb2LklXPzKSGJhzyxCOZSz8ncv8Nv+y7w=
golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4ajbZsCe5lw1metzhBm9T3x7oIY=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
Expand Down
58 changes: 58 additions & 0 deletions internal/checker/checker.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package checker

import (
"fmt"
"strings"

"github.com/mgutz/ansi"
"github.com/abdfnx/looker"
"github.com/abdfnx/gomo/api"
"github.com/abdfnx/gomo/cmd/factory"
)

func Check(buildVersion string) {
cmdFactory := factory.New()
stderr := cmdFactory.IOStreams.ErrOut

latestVersion := api.GetLatest()
isFromHomebrewTap := isUnderHomebrew()
isFromUsrBinDir := isUnderUsr()
isFromAppData := isUnderAppData()

var command = func() string {
if isFromHomebrewTap {
return "brew upgrade gomo"
} else if isFromUsrBinDir {
return "curl -fsSL https://bit.ly/gomo-cli | bash"
} else if isFromAppData {
return "iwr -useb https://bit.ly/gomo-win | iex"
}

return ""
}

if buildVersion != latestVersion {
fmt.Fprintf(stderr, "%s %s → %s\n",
ansi.Color("There's a new version of ", "yellow") + ansi.Color("gomo", "cyan") + ansi.Color(" is avalaible:", "yellow"),
ansi.Color(buildVersion, "cyan"),
ansi.Color(latestVersion, "cyan"))

if command() != "" {
fmt.Fprintf(stderr, ansi.Color("To upgrade, run: %s\n", "yellow"), ansi.Color(command(), "black:white"))
}
}
}

var gomoExe, _ = looker.LookPath("gomo")

func isUnderHomebrew() bool {
return strings.Contains(gomoExe, "brew")
}

func isUnderUsr() bool {
return strings.Contains(gomoExe, "usr")
}

func isUnderAppData() bool {
return strings.Contains(gomoExe, "AppData")
}

0 comments on commit bfc120d

Please sign in to comment.