Fixing some huge bugs, and implemented remove function
This commit is contained in:
@@ -2,7 +2,6 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
|
||||||
"crypto/ed25519"
|
"crypto/ed25519"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
_ "embed"
|
_ "embed"
|
||||||
@@ -15,12 +14,10 @@ import (
|
|||||||
"packets/configs"
|
"packets/configs"
|
||||||
"packets/internal/consts"
|
"packets/internal/consts"
|
||||||
"packets/internal/utils"
|
"packets/internal/utils"
|
||||||
utils_lua "packets/internal/utils/lua"
|
|
||||||
packets "packets/pkg"
|
packets "packets/pkg"
|
||||||
|
|
||||||
"github.com/pelletier/go-toml/v2"
|
"github.com/pelletier/go-toml/v2"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
lua "github.com/yuin/gopher-lua"
|
|
||||||
_ "modernc.org/sqlite"
|
_ "modernc.org/sqlite"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -29,8 +26,8 @@ var publicKey []byte
|
|||||||
|
|
||||||
// init is doing some verifications
|
// init is doing some verifications
|
||||||
func init() {
|
func init() {
|
||||||
log.SetFlags(0)
|
log.SetPrefix("error: ")
|
||||||
|
log.SetFlags(log.Lshortfile)
|
||||||
_, err := os.Stat(consts.DefaultLinux_d)
|
_, err := os.Stat(consts.DefaultLinux_d)
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
err := os.Mkdir(consts.DefaultLinux_d, 0777)
|
err := os.Mkdir(consts.DefaultLinux_d, 0777)
|
||||||
@@ -107,7 +104,7 @@ var syncCmd = &cobra.Command{
|
|||||||
}
|
}
|
||||||
f, err := os.OpenFile(consts.IndexDB, os.O_WRONLY, 0)
|
f, err := os.OpenFile(consts.IndexDB, os.O_WRONLY, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("can't open [ %s ]. Are you running packets as root?\n", consts.IndexDB)
|
log.Fatalf("can't open to write [ %s ]. Are you running packets as root?\n", consts.IndexDB)
|
||||||
}
|
}
|
||||||
f.Close()
|
f.Close()
|
||||||
|
|
||||||
@@ -228,21 +225,22 @@ var installCmd = &cobra.Command{
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
reader := bytes.NewReader(p.PackageF)
|
|
||||||
fmt.Printf(":: Installing (%s) \n", inputName)
|
fmt.Printf(":: Installing (%s) \n", inputName)
|
||||||
packets.InstallPackage(reader, filepath.Join(cfg.Config.Data_d, inputName))
|
if err := packets.InstallPackage(p.PackageF, filepath.Join(cfg.Config.Data_d, inputName)); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
if cfg.Config.StorePackages {
|
if cfg.Config.StorePackages {
|
||||||
pkgPath, err := p.Write()
|
_, err := p.Write()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
err = p.AddToInstalledDB(1, pkgPath)
|
err = p.AddToInstalledDB(1, filepath.Join(cfg.Config.Data_d, inputName))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
err := p.AddToInstalledDB(0, "")
|
err := p.AddToInstalledDB(0, filepath.Join(cfg.Config.Data_d, inputName))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
@@ -322,21 +320,22 @@ var installCmd = &cobra.Command{
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
reader := bytes.NewReader(p.PackageF)
|
|
||||||
fmt.Printf(":: Installing %s \n", pkgs[0].Name)
|
fmt.Printf(":: Installing %s \n", pkgs[0].Name)
|
||||||
packets.InstallPackage(reader, filepath.Join(cfg.Config.Data_d, pkgs[0].Name))
|
if err := packets.InstallPackage(p.PackageF, filepath.Join(cfg.Config.Data_d, pkgs[0].Name)); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
if cfg.Config.StorePackages {
|
if cfg.Config.StorePackages {
|
||||||
pkgPath, err := p.Write()
|
_, err := p.Write()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
err = p.AddToInstalledDB(1, pkgPath)
|
err = p.AddToInstalledDB(1, filepath.Join(cfg.Config.Data_d, pkgs[0].Name))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
err := p.AddToInstalledDB(0, "")
|
err := p.AddToInstalledDB(0, filepath.Join(cfg.Config.Data_d, pkgs[0].Name))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
@@ -405,21 +404,22 @@ var installCmd = &cobra.Command{
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
reader := bytes.NewReader(p.PackageF)
|
|
||||||
fmt.Printf(":: Installing (%s) \n", pkgs[choice].Name)
|
fmt.Printf(":: Installing (%s) \n", pkgs[choice].Name)
|
||||||
packets.InstallPackage(reader, filepath.Join(cfg.Config.Data_d, pkgs[choice].Name))
|
if err := packets.InstallPackage(p.PackageF, filepath.Join(cfg.Config.Data_d, pkgs[choice].Name)); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
if cfg.Config.StorePackages {
|
if cfg.Config.StorePackages {
|
||||||
pkgPath, err := p.Write()
|
_, err := p.Write()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
err = p.AddToInstalledDB(1, pkgPath)
|
err = p.AddToInstalledDB(1, filepath.Join(cfg.Config.Data_d, pkgs[choice].Name))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
err := p.AddToInstalledDB(0, "")
|
err := p.AddToInstalledDB(0, filepath.Join(cfg.Config.Data_d, pkgs[choice].Name))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
@@ -435,7 +435,7 @@ var removeCmd = &cobra.Command{
|
|||||||
Args: cobra.MinimumNArgs(1),
|
Args: cobra.MinimumNArgs(1),
|
||||||
Short: "Remove a package from the given names",
|
Short: "Remove a package from the given names",
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
fmt.Println(":: This command will remove permanently this packages, are you sure? (y/N)")
|
fmt.Println(":: This command will remove permanently this packages, are you sure? (y/N)\n>>")
|
||||||
var a string
|
var a string
|
||||||
fmt.Scanf("%s", &a)
|
fmt.Scanf("%s", &a)
|
||||||
if a != "y" && a != "Y" {
|
if a != "y" && a != "Y" {
|
||||||
@@ -454,11 +454,12 @@ var removeCmd = &cobra.Command{
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
var packageDir string
|
var packageDir string
|
||||||
if err := db.QueryRow("SELECT package_d WHERE name = ?", pkgName).Scan(&packageDir); err != nil {
|
if err := db.QueryRow("SELECT package_d FROM packages WHERE name = ?", pkgName).Scan(&packageDir); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
f, err := os.Open(filepath.Join(packageDir, "config.toml"))
|
fmt.Println(filepath.Join(packageDir, "manifest.toml"))
|
||||||
|
f, err := os.Open(filepath.Join(packageDir, "manifest.toml"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
@@ -468,16 +469,7 @@ var removeCmd = &cobra.Command{
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
L, err := utils_lua.GetSandBox(packageDir)
|
packets.ExecuteRemoveScript(filepath.Join(packageDir, manifest.Hooks.Remove))
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
L.SetGlobal("build", nil)
|
|
||||||
L.SetGlobal("script", lua.LString(manifest.Hooks.Remove))
|
|
||||||
if err := L.DoFile(manifest.Hooks.Remove); err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := os.RemoveAll(packageDir); err != nil {
|
if err := os.RemoveAll(packageDir); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -487,6 +479,8 @@ var removeCmd = &cobra.Command{
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fmt.Println("Sucessifully removed")
|
||||||
|
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -495,6 +489,7 @@ var removeCmd = &cobra.Command{
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
rootCmd.AddCommand(installCmd)
|
rootCmd.AddCommand(installCmd)
|
||||||
|
rootCmd.AddCommand(removeCmd)
|
||||||
rootCmd.AddCommand(syncCmd)
|
rootCmd.AddCommand(syncCmd)
|
||||||
rootCmd.Execute()
|
rootCmd.Execute()
|
||||||
}
|
}
|
||||||
@@ -509,20 +504,21 @@ func AyncFullInstall(dep string, storePackages bool, installPath string, wg *syn
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
reader := bytes.NewReader(p.PackageF)
|
|
||||||
fmt.Printf("Installing %s \n", dep)
|
fmt.Printf("Installing %s \n", dep)
|
||||||
packets.InstallPackage(reader, installPath)
|
if err := packets.InstallPackage(p.PackageF, installPath); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
if storePackages {
|
if storePackages {
|
||||||
pkgPath, err := p.Write()
|
_, err := p.Write()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("--ERROR--\n", err)
|
log.Println(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
mu.Lock()
|
mu.Lock()
|
||||||
defer mu.Unlock()
|
defer mu.Unlock()
|
||||||
|
|
||||||
err = p.AddToInstalledDB(1, pkgPath)
|
err = p.AddToInstalledDB(1, installPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("--ERROR--\n", err)
|
log.Println("--ERROR--\n", err)
|
||||||
return
|
return
|
||||||
@@ -532,9 +528,9 @@ func AyncFullInstall(dep string, storePackages bool, installPath string, wg *syn
|
|||||||
mu.Lock()
|
mu.Lock()
|
||||||
defer mu.Unlock()
|
defer mu.Unlock()
|
||||||
|
|
||||||
err := p.AddToInstalledDB(0, "")
|
err := p.AddToInstalledDB(0, installPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("--ERROR--\n", err)
|
log.Println(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,10 +20,10 @@ func GetSandBox(sandboxdir string) (lua.LState, error) {
|
|||||||
|
|
||||||
L.SetGlobal("package", lua.LNil)
|
L.SetGlobal("package", lua.LNil)
|
||||||
L.SetGlobal("require", lua.LNil)
|
L.SetGlobal("require", lua.LNil)
|
||||||
L.SetGlobal("runningUnsafe", lua.LFalse)
|
L.SetGlobal("SAFE_MODE", lua.LTrue)
|
||||||
|
|
||||||
L.SetGlobal("packets_package_dir", lua.LString(cfg.Config.Data_d))
|
L.SetGlobal("PACKETS_DATADIR", lua.LString(cfg.Config.Data_d))
|
||||||
L.SetGlobal("packets_bin_dir", lua.LString(cfg.Config.Bin_d))
|
L.SetGlobal("PACKETS_BIN_DIR", lua.LString(cfg.Config.Bin_d))
|
||||||
|
|
||||||
L.SetGlobal("path_join", L.NewFunction(Ljoin))
|
L.SetGlobal("path_join", L.NewFunction(Ljoin))
|
||||||
|
|
||||||
|
|||||||
@@ -257,7 +257,7 @@ func CheckIfPackageInstalled(name string) (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetDependencies(name string) ([]string, error) {
|
func GetDependencies(name string) ([]string, error) {
|
||||||
db, err := sql.Open("sqlite", consts.InstalledDB)
|
db, err := sql.Open("sqlite", consts.IndexDB)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return []string{}, err
|
return []string{}, err
|
||||||
}
|
}
|
||||||
|
|||||||
12
pkg/main.go
12
pkg/main.go
@@ -2,6 +2,7 @@ package packets
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"archive/tar"
|
"archive/tar"
|
||||||
|
"bytes"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"packets/internal/utils"
|
"packets/internal/utils"
|
||||||
@@ -16,14 +17,13 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// Install exctract and fully install from a package file ( tar.zst )
|
// Install exctract and fully install from a package file ( tar.zst )
|
||||||
func InstallPackage(file io.Reader, destDir string) error {
|
func InstallPackage(file []byte, destDir string) error {
|
||||||
|
manifest, err := utils.ReadManifest(bytes.NewReader(file))
|
||||||
manifest, err := utils.ReadManifest(file)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
zstdReader, err := zstd.NewReader(file)
|
zstdReader, err := zstd.NewReader(bytes.NewReader(file))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -89,10 +89,10 @@ func InstallPackage(file io.Reader, destDir string) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
L.SetGlobal("data_dir", lua.LString(filepath.Join(destDir, "data")))
|
L.SetGlobal("DATA_DIR", lua.LString(filepath.Join(destDir, "data")))
|
||||||
L.SetGlobal("script", lua.LString(manifest.Hooks.Install))
|
L.SetGlobal("script", lua.LString(manifest.Hooks.Install))
|
||||||
|
|
||||||
if err := L.DoFile(manifest.Hooks.Install); err != nil {
|
if err := L.DoFile(filepath.Join(destDir, manifest.Hooks.Install)); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user