Skip to content
This repository was archived by the owner on Sep 26, 2025. It is now read-only.

Commit 9325830

Browse files
authored
fix(ci): install/upgrade cli from nhost/nhost version (#985)
1 parent af7e8c8 commit 9325830

6 files changed

Lines changed: 74 additions & 23 deletions

File tree

.golangci.yaml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
11
version: "2"
2+
issues:
3+
max-issues-per-linter: 0
4+
max-same-issues: 0
25
linters:
36
default: all
7+
settings:
8+
funlen:
9+
lines: 65
410
disable:
11+
- canonicalheader
512
- depguard
613
- gomoddirectives
14+
- musttag
715
- nlreturn
16+
- tagliatelle
817
- varnamelen
918
- wsl
1019
- noinlineerr
20+
- funcorder
1121
exclusions:
1222
generated: lax
1323
presets:
@@ -26,13 +36,16 @@ linters:
2636
- linters:
2737
- gochecknoglobals
2838
text: Version is a global variable
39+
- linters:
40+
- ireturn
41+
- lll
42+
path: schema\.resolvers\.go
2943
paths:
3044
- third_party$
3145
- builtin$
3246
- examples$
3347
formatters:
3448
enable:
35-
- gci
3649
- gofmt
3750
- gofumpt
3851
- goimports
@@ -42,3 +55,4 @@ formatters:
4255
- third_party$
4356
- builtin$
4457
- examples$
58+
- schema\.resolvers\.go

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
NOTE: This repository is deprecated. All development has moved to https://github.com/nhost/nhost
2+
13
<div align="center">
24
<h1 style="font-size: 3em; font-weight: bold;">Nhost CLI</h1>
35
</div>
@@ -88,4 +90,4 @@ This will build the binary available as the `nhost` command in the terminal.
8890

8991
- MacOS
9092
- Linux
91-
- Windows WSL2
93+
- Windows WSL2

cmd/software/upgrade.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"os"
66
"runtime"
7+
"strings"
78

89
"github.com/nhost/cli/clienv"
910
"github.com/nhost/cli/software"
@@ -42,7 +43,14 @@ func commandUpgrade(cCtx *cli.Context) error {
4243

4344
ce.Infoln("Upgrading to %s...", latest.TagName)
4445

45-
want := fmt.Sprintf("cli-%s-%s-%s.tar.gz", latest.TagName, runtime.GOOS, runtime.GOARCH)
46+
version := latest.TagName
47+
s := strings.Split(latest.TagName, "@")
48+
49+
if len(s) == 2 { //nolint:mnd
50+
version = s[1]
51+
}
52+
53+
want := fmt.Sprintf("cli-%s-%s-%s.tar.gz", version, runtime.GOOS, runtime.GOARCH)
4654

4755
var url string
4856

dockercompose/compose.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,7 @@ func mountCACertificates(
637637
}
638638
}
639639

640-
func ComposeFileFromConfig( //nolint:funlen
640+
func ComposeFileFromConfig(
641641
cfg *model.ConfigConfig,
642642
subdomain string,
643643
projectName string,

get.sh

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ NC='\033[0m'
1818
# basic variables
1919
INSTALL_PATH=${INSTALL_PATH:-"/usr/local/bin"}
2020
NEED_SUDO=${NEED_SUDO:-1}
21-
REPO="nhost/cli"
21+
REPO="nhost/nhost"
2222

2323
# check for existing installation
2424
hasCli=$(which nhost)
@@ -38,12 +38,13 @@ if [ "$?" = "1" ]; then
3838
fi
3939

4040
# get release version
41-
release=${1:-latest}
42-
log "Getting $release version..."
43-
if [[ "$release" == "latest" ]]; then
44-
version=$(curl --silent "https://api.github.com/repos/$REPO/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
41+
version=${1:-latest}
42+
log "Getting $version version..."
43+
if [[ "$version" == "latest" ]]; then
44+
release=$(curl --silent https://api.github.com/repos/nhost/nhost/releases\?per_page=100 | grep tag_name | grep \"cli\@ | head -n 1 | sed 's/.*"tag_name": "\([^"]*\)".*/\1/')
45+
version=$( echo $release | sed 's/.*@//')
4546
else
46-
version=$(curl --silent "https://api.github.com/repos/nhost/cli/tags" | grep "name" | sed -E 's/.*"([^"]+)".*/\1/' | grep "^$release$")
47+
release="cli@$release"
4748
fi
4849

4950
# check version exists
@@ -96,14 +97,15 @@ suffix="-${platform}-${arch}"
9697

9798
if [[ "$platform" != 'windows' ]]; then
9899
extension=".tar.gz"
99-
else
100+
else
100101
extension='.zip'
101102
fi
102103

103104
# variables for install
104105
targetFile="cli-$version$suffix$extension"
105106

106-
url="https://github.com/${REPO}/releases/download/${version}/${targetFile}"
107+
encodedRelease=$(echo $release | sed 's/@/%40/g')
108+
url="https://github.com/${REPO}/releases/download/${encodedRelease}/${targetFile}"
107109

108110
# remove previous download
109111
if [ -e $targetFile ]; then
@@ -119,7 +121,7 @@ try chmod +x $targetFile
119121

120122
if [[ "$platform" != 'windows' ]]; then
121123
try tar -xvf $targetFile
122-
else
124+
else
123125
try unzip $targetFile
124126
fi
125127

software/sofware.go

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"fmt"
1010
"io"
1111
"net/http"
12+
"strings"
1213

1314
"golang.org/x/mod/semver"
1415
)
@@ -25,13 +26,45 @@ func NewManager() *Manager {
2526
}
2627
}
2728

29+
func (mgr *Manager) filterReleases(releases Releases, version string) Releases {
30+
if !strings.HasPrefix(version, "v") {
31+
version = "v" + version
32+
}
33+
34+
// filter pre-releases and older releases
35+
r := make(Releases, 0, len(releases))
36+
for _, release := range releases {
37+
s := strings.Split(release.TagName, "@")
38+
if len(s) != 2 { //nolint:mnd
39+
continue
40+
}
41+
42+
releaseName := s[0]
43+
releaseVersion := s[1]
44+
45+
if !strings.HasPrefix(releaseVersion, "v") {
46+
releaseVersion = "v" + releaseVersion
47+
}
48+
49+
if releaseName != "cli" ||
50+
release.Prerelease ||
51+
semver.Compare(version, releaseVersion) >= 0 {
52+
continue
53+
}
54+
55+
r = append(r, release)
56+
}
57+
58+
return r
59+
}
60+
2861
func (mgr *Manager) GetReleases(ctx context.Context, version string) (Releases, error) {
2962
var releases Releases
3063

3164
req, err := http.NewRequestWithContext(
3265
ctx,
3366
http.MethodGet,
34-
"https://api.github.com/repos/nhost/cli/releases?per_page=100",
67+
"https://api.github.com/repos/nhost/nhost/releases?per_page=100",
3568
nil,
3669
)
3770
if err != nil {
@@ -62,15 +95,7 @@ func (mgr *Manager) GetReleases(ctx context.Context, version string) (Releases,
6295
}
6396

6497
// filter pre-releases and older releases
65-
r := make(Releases, 0, len(releases))
66-
for _, release := range releases {
67-
switch {
68-
case release.Prerelease:
69-
case semver.Compare(version, release.TagName) >= 0:
70-
default:
71-
r = append(r, release)
72-
}
73-
}
98+
r := mgr.filterReleases(releases, version)
7499

75100
mgr.cache = r
76101

0 commit comments

Comments
 (0)