Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
293 changes: 293 additions & 0 deletions srcpkgs/zvm/patches/disable-self-update.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,293 @@
diff --git a/cli/upgrade.go b/cli/upgrade.go
index c6f7572..6dc42b0 100644
--- a/cli/upgrade.go
+++ b/cli/upgrade.go
@@ -7,7 +7,7 @@ package cli
import (
"archive/tar"
"encoding/json"
- "errors"
+ // "errors"
"fmt"
"io"
"net/http"
@@ -17,133 +17,134 @@ import (
"strings"
"time"

- "github.com/schollz/progressbar/v3"
+ // "github.com/schollz/progressbar/v3"

"github.com/tristanisham/zvm/cli/meta"

"github.com/charmbracelet/log"
- "github.com/tristanisham/clr"
- "golang.org/x/mod/semver"
+ // "github.com/tristanisham/clr"
+ // "golang.org/x/mod/semver"
)

// Upgrade will upgrade the system installation of ZVM.
// I wrote most of it before I remembered that GitHub has an API so expect major refactoring.
func (z *ZVM) Upgrade() error {
- defer func() {
- if err := z.Clean(); err != nil {
- log.Warn("ZVM failed to clean up after itself.")
- }
- }()
-
- tagName, upgradable, err := CanIUpgrade()
- if err != nil {
- return errors.Join(ErrFailedUpgrade, err)
- }
-
- if !upgradable {
- fmt.Printf("You are already on the latest release (%s) of ZVM :) \n", clr.Blue(meta.VERSION))
- os.Exit(0)
- } else {
- fmt.Printf("You are on ZVM %s... upgrading to (%s)", meta.VERSION, tagName)
- }
-
- zvmInstallDirENV, err := z.getInstallDir()
- if err != nil {
- return err
- }
-
- log.Debug("exe dir", "path", zvmInstallDirENV)
- zvmBinaryName := "zvm"
- archive := "tar"
- if runtime.GOOS == "windows" {
- archive = "zip"
- zvmBinaryName = "zvm.exe"
- }
-
- download := fmt.Sprintf("zvm-%s-%s.%s", runtime.GOOS, runtime.GOARCH, archive)
-
- downloadUrl := fmt.Sprintf("https://github.com/tristanisham/zvm/releases/latest/download/%s", download)
-
- resp, err := http.Get(downloadUrl)
- if err != nil {
- errors.Join(ErrFailedUpgrade, err)
- }
- defer resp.Body.Close()
-
- tempDownload, err := os.CreateTemp(z.baseDir, fmt.Sprintf("*.%s", archive))
- if err != nil {
- return err
- }
- defer tempDownload.Close()
- defer os.Remove(tempDownload.Name())
-
- log.Debug("tempDir", "name", tempDownload.Name())
- pbar := progressbar.DefaultBytes(
- int64(resp.ContentLength),
- "Upgrading ZVM...",
- )
-
- _, err = io.Copy(io.MultiWriter(tempDownload, pbar), resp.Body)
- if err != nil {
- return err
- }
-
- zvmPath := filepath.Join(zvmInstallDirENV, zvmBinaryName)
- if err := os.Remove(filepath.Join(zvmInstallDirENV, zvmBinaryName)); err != nil {
- if err, ok := err.(*os.PathError); ok {
- if os.IsNotExist(err) {
- log.Debug("Failed to remove file", "path", zvmPath)
- }
- }
- }
-
- log.Debug("zvmPath", "path", zvmPath)
-
- newTemp, err := os.MkdirTemp(z.baseDir, "zvm-upgrade-*")
- if err != nil {
- log.Debugf("Failed to create temp direcory: %s", newTemp)
- return errors.Join(ErrFailedUpgrade, err)
- }
-
- defer os.RemoveAll(newTemp)
-
- if runtime.GOOS == "windows" {
- log.Debug("unzip", "from", tempDownload.Name(), "to", newTemp)
- if err := unzipSource(tempDownload.Name(), newTemp); err != nil {
- log.Error(err)
- return err
- }
-
- secondaryZVM := fmt.Sprintf("%s.old", zvmPath)
- log.Debug("SecondaryZVM", "path", secondaryZVM)
-
- newDownload := filepath.Join(newTemp, fmt.Sprintf("zvm-%s-%s", runtime.GOOS, runtime.GOARCH), zvmBinaryName)
-
- if err := replaceExe(newDownload, zvmPath); err != nil {
- log.Warn("This command might break if ZVM is installed outside of ~/.zvm/self/")
- return fmt.Errorf("upgrade error: %q", err)
- }
- // fmt.Println("Run the following to complete your upgrade on Windows.")
- // fmt.Printf("- Command Prompt:\n\tmove /Y '%s' '%s'\n", secondaryZVM, zvmPath)
- // fmt.Printf("- Powershell:\n\tMove-Item -Path '%s' -Destination '%s' -Force\n", secondaryZVM, zvmPath)
-
- } else {
- if err := untar(tempDownload.Name(), newTemp); err != nil {
- log.Error(err)
- return err
- }
-
- if err := os.Rename(filepath.Join(newTemp, zvmBinaryName), zvmPath); err != nil {
- log.Debugf("Failed to rename %s to %s", filepath.Join(newTemp, zvmBinaryName), zvmPath)
- return errors.Join(ErrFailedUpgrade, err)
- }
- }
-
- if err := os.Chmod(zvmPath, 0775); err != nil {
- log.Debugf("Failed to update permissions for %s", zvmPath)
- return errors.Join(ErrFailedUpgrade, err)
- }
-
+ // defer func() {
+ // if err := z.Clean(); err != nil {
+ // log.Warn("ZVM failed to clean up after itself.")
+ // }
+ // }()
+ //
+ // tagName, upgradable, err := CanIUpgrade()
+ // if err != nil {
+ // return errors.Join(ErrFailedUpgrade, err)
+ // }
+ //
+ // if !upgradable {
+ // fmt.Printf("You are already on the latest release (%s) of ZVM :) \n", clr.Blue(meta.VERSION))
+ // os.Exit(0)
+ // } else {
+ // fmt.Printf("You are on ZVM %s... upgrading to (%s)", meta.VERSION, tagName)
+ // }
+ //
+ // zvmInstallDirENV, err := z.getInstallDir()
+ // if err != nil {
+ // return err
+ // }
+ //
+ // log.Debug("exe dir", "path", zvmInstallDirENV)
+ // zvmBinaryName := "zvm"
+ // archive := "tar"
+ // if runtime.GOOS == "windows" {
+ // archive = "zip"
+ // zvmBinaryName = "zvm.exe"
+ // }
+ //
+ // download := fmt.Sprintf("zvm-%s-%s.%s", runtime.GOOS, runtime.GOARCH, archive)
+ //
+ // downloadUrl := fmt.Sprintf("https://github.com/tristanisham/zvm/releases/latest/download/%s", download)
+ //
+ // resp, err := http.Get(downloadUrl)
+ // if err != nil {
+ // errors.Join(ErrFailedUpgrade, err)
+ // }
+ // defer resp.Body.Close()
+ //
+ // tempDownload, err := os.CreateTemp(z.baseDir, fmt.Sprintf("*.%s", archive))
+ // if err != nil {
+ // return err
+ // }
+ // defer tempDownload.Close()
+ // defer os.Remove(tempDownload.Name())
+ //
+ // log.Debug("tempDir", "name", tempDownload.Name())
+ // pbar := progressbar.DefaultBytes(
+ // int64(resp.ContentLength),
+ // "Upgrading ZVM...",
+ // )
+ //
+ // _, err = io.Copy(io.MultiWriter(tempDownload, pbar), resp.Body)
+ // if err != nil {
+ // return err
+ // }
+ //
+ // zvmPath := filepath.Join(zvmInstallDirENV, zvmBinaryName)
+ // if err := os.Remove(filepath.Join(zvmInstallDirENV, zvmBinaryName)); err != nil {
+ // if err, ok := err.(*os.PathError); ok {
+ // if os.IsNotExist(err) {
+ // log.Debug("Failed to remove file", "path", zvmPath)
+ // }
+ // }
+ // }
+ //
+ // log.Debug("zvmPath", "path", zvmPath)
+ //
+ // newTemp, err := os.MkdirTemp(z.baseDir, "zvm-upgrade-*")
+ // if err != nil {
+ // log.Debugf("Failed to create temp direcory: %s", newTemp)
+ // return errors.Join(ErrFailedUpgrade, err)
+ // }
+ //
+ // defer os.RemoveAll(newTemp)
+ //
+ // if runtime.GOOS == "windows" {
+ // log.Debug("unzip", "from", tempDownload.Name(), "to", newTemp)
+ // if err := unzipSource(tempDownload.Name(), newTemp); err != nil {
+ // log.Error(err)
+ // return err
+ // }
+ //
+ // secondaryZVM := fmt.Sprintf("%s.old", zvmPath)
+ // log.Debug("SecondaryZVM", "path", secondaryZVM)
+ //
+ // newDownload := filepath.Join(newTemp, fmt.Sprintf("zvm-%s-%s", runtime.GOOS, runtime.GOARCH), zvmBinaryName)
+ //
+ // if err := replaceExe(newDownload, zvmPath); err != nil {
+ // log.Warn("This command might break if ZVM is installed outside of ~/.zvm/self/")
+ // return fmt.Errorf("upgrade error: %q", err)
+ // }
+ // // fmt.Println("Run the following to complete your upgrade on Windows.")
+ // // fmt.Printf("- Command Prompt:\n\tmove /Y '%s' '%s'\n", secondaryZVM, zvmPath)
+ // // fmt.Printf("- Powershell:\n\tMove-Item -Path '%s' -Destination '%s' -Force\n", secondaryZVM, zvmPath)
+ //
+ // } else {
+ // if err := untar(tempDownload.Name(), newTemp); err != nil {
+ // log.Error(err)
+ // return err
+ // }
+ //
+ // if err := os.Rename(filepath.Join(newTemp, zvmBinaryName), zvmPath); err != nil {
+ // log.Debugf("Failed to rename %s to %s", filepath.Join(newTemp, zvmBinaryName), zvmPath)
+ // return errors.Join(ErrFailedUpgrade, err)
+ // }
+ // }
+ //
+ // if err := os.Chmod(zvmPath, 0775); err != nil {
+ // log.Debugf("Failed to update permissions for %s", zvmPath)
+ // return errors.Join(ErrFailedUpgrade, err)
+ // }
+
+ log.Info("Upgrade is disabled for this build of zvm, use your system package manager.")
return nil
}

@@ -304,16 +305,16 @@ func isSymlink(path string) (bool, error) {
// CanIUpgrade checks if a newer version of ZVM is available on GitHub.
// It returns the latest tag name, a boolean indicating if an upgrade is available, and any error.
func CanIUpgrade() (string, bool, error) {
- release, err := getLatestGitHubRelease("tristanisham", "zvm")
- if err != nil {
- return "", false, err
- }
-
- if semver.Compare(meta.VERSION, release.TagName) == -1 {
- return release.TagName, true, nil
- }
-
- return release.TagName, false, nil
+ // release, err := getLatestGitHubRelease("tristanisham", "zvm")
+ // if err != nil {
+ // return "", false, err
+ // }
+ //
+ // if semver.Compare(meta.VERSION, release.TagName) == -1 {
+ // return release.TagName, true, nil
+ // }
+
+ return meta.VERSION, false, nil
}

// func getGitHubReleases(owner, repo string) ([]GithubRelease, error) {
17 changes: 17 additions & 0 deletions srcpkgs/zvm/template
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Template file for 'zvm'
pkgname=zvm
version=0.8.13
revision=1
build_style=go
go_import_path="github.com/tristanisham/zvm"
short_desc="Zig version manager"
maintainer="tranzystorekk <tranzystorek.io@protonmail.com>"
license="MIT"
homepage="https://www.zvm.app"
changelog="https://github.com/tristanisham/zvm/releases"
distfiles="https://github.com/tristanisham/zvm/archive/refs/tags/v${version}.tar.gz"
checksum=12a6e2176930841209361ec6b440d2c36ad9de3e2656812e9637aa5b374ca082

post_install() {
vlicense LICENSE
}