From 86a77dece48755662c79452402722d5deaada8ef Mon Sep 17 00:00:00 2001 From: roboogg133 Date: Fri, 1 Aug 2025 16:01:40 -0300 Subject: [PATCH] changed xz package for zst --- cmd/packets/main.go | 122 +++++++++++++------------------------------ internal/internal.go | 44 +++++++++------- 2 files changed, 61 insertions(+), 105 deletions(-) diff --git a/cmd/packets/main.go b/cmd/packets/main.go index cffc285..8d12b08 100644 --- a/cmd/packets/main.go +++ b/cmd/packets/main.go @@ -8,7 +8,6 @@ import ( "crypto/sha256" "database/sql" "encoding/hex" - "encoding/json" "fmt" "io" "io/fs" @@ -27,11 +26,10 @@ import ( "time" "github.com/BurntSushi/toml" + "github.com/klauspost/compress/zstd" "github.com/schollz/progressbar/v3" "golang.org/x/net/ipv4" _ "modernc.org/sqlite" - - "github.com/ulikunitz/xz" ) type ConfigTOML struct { @@ -85,13 +83,19 @@ type Quer1 struct { } type Manifest struct { - Name string `json:"name"` - Version string `json:"version"` - Description string `json:"description"` - Dependencies []string `json:"dependencies"` - Author string `json:"author"` - Family string `json:"family"` - Serial uint `json:"serial"` + Info struct { + Name string `toml:"name"` + Version string `toml:"version"` + Description string `toml:"description"` + Dependencies []string `toml:"dependencies"` + Author string `toml:"author"` + Family string `toml:"family"` + Serial uint `toml:"serial"` + } `toml:"Info"` + Hooks struct { + Install string `toml:"install"` + Remove string `toml:"remove"` + } `toml:"Hooks"` } var serialPass uint @@ -375,7 +379,7 @@ func Install(packagepath string, serial uint) error { log.Panic(err) } - name := manifest.Name + name := manifest.Info.Name var destDir = filepath.Join(cfg.Config.DataDir, name) @@ -436,6 +440,7 @@ func Install(packagepath string, serial uint) error { bar.Finish() return err } + f.WriteString("\n\n# BE CAREFULL CHANGING BIN_DIR, BECAUSE THE BINARIES DON'T MOVE AUTOMATICALLY\n#NEVER CHANGE lastDataDir\n") os.Remove(cfg.Config.LastDataDir) bar.Finish() @@ -455,12 +460,12 @@ func Install(packagepath string, serial uint) error { counter := &CountingReader{R: f} - xzr, err := xz.NewReader(counter) + zs, err := zstd.NewReader(f) if err != nil { return err } - tr := tar.NewReader(xzr) + tr := tar.NewReader(zs) bar := progressbar.NewOptions64( totalsize, @@ -479,7 +484,6 @@ func Install(packagepath string, serial uint) error { rel := filepath.Clean(hdr.Name) if rel == ".." || strings.HasPrefix(rel, ".."+string(os.PathSeparator)) { - fmt.Println("Ignored :", rel) continue } @@ -528,45 +532,16 @@ func Install(packagepath string, serial uint) error { bar.Finish() - manifest.Serial = serial - - jsonData, err := json.Marshal(manifest) - if err != nil { - log.Println(err) - } - - os.WriteFile(fmt.Sprintf("%s/manifest.json", destDir), jsonData, 0777) - - script := fmt.Sprintf("%s/postinstall.sh", destDir) - - os.Chmod(script, 0777) - os.Chmod(fmt.Sprintf("%s/remove.sh", destDir), 0777) - - fmt.Println("\nMaking post install configuration...") - cmd := exec.Command(script) - - cmd.Env = append(os.Environ(), - fmt.Sprintf("PACKETS_PACKAGE_DIR=%s", cfg.Config.DataDir), - fmt.Sprintf("PACKETS_PACKAGE_BIN_DIR=%s", cfg.Config.BinDir), - ) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - - err = cmd.Run() - - if err != nil { - log.Println(err) - return fmt.Errorf("error exec postinstall script %e", err) - } + // TODO LUA SCRIPT fmt.Printf("Package %s fully installed\n", name) var insert = Installed{ - Realname: manifest.Name, - Version: manifest.Version, - Dependencies: manifest.Dependencies, - Family: manifest.Family, - Serial: manifest.Serial, + Realname: manifest.Info.Name, + Version: manifest.Info.Version, + Dependencies: manifest.Info.Dependencies, + Family: manifest.Info.Family, + Serial: manifest.Info.Serial, } if err := AddToInstalledDB(insert); err != nil { @@ -1331,7 +1306,7 @@ func Upgrade(packagepath string, og_realname string, serial uint) error { log.Panic(err) } - name := manifest.Name + name := manifest.Info.Name fmt.Printf("Unpacking (%s) above (%s)\n", name, og_realname) @@ -1347,12 +1322,12 @@ func Upgrade(packagepath string, og_realname string, serial uint) error { counter := &CountingReader{R: f} - xzr, err := xz.NewReader(counter) + zs, err := zstd.NewReader(f) if err != nil { return err } - tr := tar.NewReader(xzr) + tr := tar.NewReader(zs) bar := progressbar.NewOptions64( totalSize, @@ -1372,7 +1347,6 @@ func Upgrade(packagepath string, og_realname string, serial uint) error { rel := filepath.Clean(hdr.Name) if rel == ".." || strings.HasPrefix(rel, ".."+string(os.PathSeparator)) { - fmt.Println("Ignored :", rel) continue } @@ -1421,45 +1395,19 @@ func Upgrade(packagepath string, og_realname string, serial uint) error { bar.Finish() os.Rename(destDir, filepath.Join(cfg.Config.DataDir, name)) + destDir = filepath.Join(cfg.Config.DataDir, name) - manifest.Serial = serial + //TODO manifest.toml things - jsonData, err := json.Marshal(manifest) - if err != nil { - log.Println(err) - } - - os.WriteFile(filepath.Join(destDir, "manifest.json"), jsonData, 0777) - - script := fmt.Sprintf(filepath.Join(destDir, "postinstall.sh"), destDir) - - os.Chmod(script, 0777) - os.Chmod(fmt.Sprintf(filepath.Join(destDir, "remove.sh"), destDir), 0777) - - fmt.Println("Making post install configuration...") - cmd := exec.Command(script) - - cmd.Env = append(os.Environ(), - fmt.Sprintf("PACKETS_PACKAGE_DIR=%s", cfg.Config.DataDir), - fmt.Sprintf("PACKETS_PACKAGE_BIN_DIR=%s", cfg.Config.BinDir), - ) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - - err = cmd.Run() - if err != nil { - return fmt.Errorf("error exec postinstall script %e", err) - } - - fmt.Printf("Package %s fully installed you maybe run: \"source ~/.bashrc \"\n", name) + fmt.Printf("Package %s fully installed", name) var insert = Installed{ - Realname: manifest.Name, - Version: manifest.Version, - Dependencies: manifest.Dependencies, - Family: manifest.Family, - Serial: manifest.Serial, + Realname: manifest.Info.Name, + Version: manifest.Info.Version, + Dependencies: manifest.Info.Dependencies, + Family: manifest.Info.Family, + Serial: manifest.Info.Serial, } _, err = db.Exec("DELETE FROM packages WHERE realname = ?", og_realname) diff --git a/internal/internal.go b/internal/internal.go index f7cd4e6..640bba6 100644 --- a/internal/internal.go +++ b/internal/internal.go @@ -2,14 +2,14 @@ package internal import ( "archive/tar" - "encoding/json" "fmt" "io" "os" "os/exec" "strings" - "github.com/ulikunitz/xz" + "github.com/BurntSushi/toml" + "github.com/klauspost/compress/zstd" ) type ConfigTOML struct { @@ -25,13 +25,19 @@ type ConfigTOML struct { } type Manifest struct { - Name string `json:"name"` - Version string `json:"version"` - Description string `json:"description"` - Dependencies []string `json:"dependencies"` - Author string `json:"author"` - Family string `json:"family"` - Serial uint `json:"serial"` + Info struct { + Name string `toml:"name"` + Version string `toml:"version"` + Description string `toml:"description"` + Dependencies []string `toml:"dependencies"` + Author string `toml:"author"` + Family string `toml:"family"` + Serial uint `toml:"serial"` + } `toml:"Info"` + Hooks struct { + Install string `toml:"install"` + Remove string `toml:"remove"` + } `toml:"Hooks"` } func PacketsPackageDir() string { @@ -52,15 +58,16 @@ func ManifestReadXZ(path string) (*Manifest, error) { } defer f.Close() - xzr, err := xz.NewReader(f) + zr, err := zstd.NewReader(f) if err != nil { return nil, err } + defer zr.Close() - tr := tar.NewReader(xzr) + tarReader := tar.NewReader(zr) for { - hdr, err := tr.Next() + header, err := tarReader.Next() if err == io.EOF { break } @@ -68,17 +75,18 @@ func ManifestReadXZ(path string) (*Manifest, error) { return nil, err } - if strings.HasSuffix(hdr.Name, "/manifest.json") || hdr.Name == "manifest.json" { + if header.Name == "/manifest.toml" || header.Name == "manifest.toml" { + decoder := toml.NewDecoder(tarReader) var manifest Manifest - decoder := json.NewDecoder(tr) - if err := decoder.Decode(&manifest); err != nil { - return nil, err - } + + decoder.Decode(manifest) + return &manifest, nil } + } - return nil, fmt.Errorf("can't find manifest.json") + return nil, fmt.Errorf("can't find manifest.toml") } func DefaultConfigTOML() *ConfigTOML {