diff --git a/.golangci.yaml b/.golangci.yaml index 42aa6225e..afe1cbef7 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -1,13 +1,23 @@ version: "2" +issues: + max-issues-per-linter: 0 + max-same-issues: 0 linters: default: all + settings: + funlen: + lines: 65 disable: + - canonicalheader - depguard - gomoddirectives + - musttag - nlreturn + - tagliatelle - varnamelen - wsl - noinlineerr + - funcorder exclusions: generated: lax presets: @@ -26,13 +36,16 @@ linters: - linters: - gochecknoglobals text: Version is a global variable + - linters: + - ireturn + - lll + path: schema\.resolvers\.go paths: - third_party$ - builtin$ - examples$ formatters: enable: - - gci - gofmt - gofumpt - goimports @@ -42,3 +55,4 @@ formatters: - third_party$ - builtin$ - examples$ + - schema\.resolvers\.go diff --git a/README.md b/README.md index e369b6231..77e89aa38 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +NOTE: This repository is deprecated. All development has moved to https://github.com/nhost/nhost +

Nhost CLI

@@ -88,4 +90,4 @@ This will build the binary available as the `nhost` command in the terminal. - MacOS - Linux -- Windows WSL2 \ No newline at end of file +- Windows WSL2 diff --git a/cmd/software/upgrade.go b/cmd/software/upgrade.go index 7b6f71ca2..c290b15f6 100644 --- a/cmd/software/upgrade.go +++ b/cmd/software/upgrade.go @@ -4,6 +4,7 @@ import ( "fmt" "os" "runtime" + "strings" "github.com/nhost/cli/clienv" "github.com/nhost/cli/software" @@ -42,7 +43,14 @@ func commandUpgrade(cCtx *cli.Context) error { ce.Infoln("Upgrading to %s...", latest.TagName) - want := fmt.Sprintf("cli-%s-%s-%s.tar.gz", latest.TagName, runtime.GOOS, runtime.GOARCH) + version := latest.TagName + s := strings.Split(latest.TagName, "@") + + if len(s) == 2 { //nolint:mnd + version = s[1] + } + + want := fmt.Sprintf("cli-%s-%s-%s.tar.gz", version, runtime.GOOS, runtime.GOARCH) var url string diff --git a/dockercompose/compose.go b/dockercompose/compose.go index 708327d38..bdaae25ad 100644 --- a/dockercompose/compose.go +++ b/dockercompose/compose.go @@ -637,7 +637,7 @@ func mountCACertificates( } } -func ComposeFileFromConfig( //nolint:funlen +func ComposeFileFromConfig( cfg *model.ConfigConfig, subdomain string, projectName string, diff --git a/get.sh b/get.sh index 3212b427c..0275ba8c0 100755 --- a/get.sh +++ b/get.sh @@ -18,7 +18,7 @@ NC='\033[0m' # basic variables INSTALL_PATH=${INSTALL_PATH:-"/usr/local/bin"} NEED_SUDO=${NEED_SUDO:-1} -REPO="nhost/cli" +REPO="nhost/nhost" # check for existing installation hasCli=$(which nhost) @@ -38,12 +38,13 @@ if [ "$?" = "1" ]; then fi # get release version -release=${1:-latest} -log "Getting $release version..." -if [[ "$release" == "latest" ]]; then - version=$(curl --silent "https://api.github.com/repos/$REPO/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') +version=${1:-latest} +log "Getting $version version..." +if [[ "$version" == "latest" ]]; then + 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/') + version=$( echo $release | sed 's/.*@//') else - version=$(curl --silent "https://api.github.com/repos/nhost/cli/tags" | grep "name" | sed -E 's/.*"([^"]+)".*/\1/' | grep "^$release$") + release="cli@$release" fi # check version exists @@ -96,14 +97,15 @@ suffix="-${platform}-${arch}" if [[ "$platform" != 'windows' ]]; then extension=".tar.gz" -else +else extension='.zip' fi # variables for install targetFile="cli-$version$suffix$extension" -url="https://github.com/${REPO}/releases/download/${version}/${targetFile}" +encodedRelease=$(echo $release | sed 's/@/%40/g') +url="https://github.com/${REPO}/releases/download/${encodedRelease}/${targetFile}" # remove previous download if [ -e $targetFile ]; then @@ -119,7 +121,7 @@ try chmod +x $targetFile if [[ "$platform" != 'windows' ]]; then try tar -xvf $targetFile -else +else try unzip $targetFile fi diff --git a/software/sofware.go b/software/sofware.go index 267c52e63..64ef7d360 100644 --- a/software/sofware.go +++ b/software/sofware.go @@ -9,6 +9,7 @@ import ( "fmt" "io" "net/http" + "strings" "golang.org/x/mod/semver" ) @@ -25,13 +26,45 @@ func NewManager() *Manager { } } +func (mgr *Manager) filterReleases(releases Releases, version string) Releases { + if !strings.HasPrefix(version, "v") { + version = "v" + version + } + + // filter pre-releases and older releases + r := make(Releases, 0, len(releases)) + for _, release := range releases { + s := strings.Split(release.TagName, "@") + if len(s) != 2 { //nolint:mnd + continue + } + + releaseName := s[0] + releaseVersion := s[1] + + if !strings.HasPrefix(releaseVersion, "v") { + releaseVersion = "v" + releaseVersion + } + + if releaseName != "cli" || + release.Prerelease || + semver.Compare(version, releaseVersion) >= 0 { + continue + } + + r = append(r, release) + } + + return r +} + func (mgr *Manager) GetReleases(ctx context.Context, version string) (Releases, error) { var releases Releases req, err := http.NewRequestWithContext( ctx, http.MethodGet, - "https://api.github.com/repos/nhost/cli/releases?per_page=100", + "https://api.github.com/repos/nhost/nhost/releases?per_page=100", nil, ) if err != nil { @@ -62,15 +95,7 @@ func (mgr *Manager) GetReleases(ctx context.Context, version string) (Releases, } // filter pre-releases and older releases - r := make(Releases, 0, len(releases)) - for _, release := range releases { - switch { - case release.Prerelease: - case semver.Compare(version, release.TagName) >= 0: - default: - r = append(r, release) - } - } + r := mgr.filterReleases(releases, version) mgr.cache = r