setting data_dir variable to a string with the package data folder

This commit is contained in:
2025-09-23 19:08:21 -03:00
parent ff986ef943
commit 2cfe78721a

View File

@@ -9,15 +9,18 @@ import (
"fmt" "fmt"
"log" "log"
"os" "os"
"packets/configs"
"packets/internal/consts"
"packets/internal/utils"
packets "packets/pkg"
"path/filepath" "path/filepath"
"sync" "sync"
"packets/configs"
"packets/internal/consts"
"packets/internal/utils"
utils_lua "packets/internal/utils/lua"
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"
) )
@@ -26,12 +29,11 @@ var publicKey []byte
// init is doing some verifications // init is doing some verifications
func init() { func init() {
log.SetFlags(0) log.SetFlags(0)
_, 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, 0o777)
if err != nil { if err != nil {
if os.IsPermission(err) { if os.IsPermission(err) {
log.Fatal("can't create packets root directory, please run as root") log.Fatal("can't create packets root directory, please run as root")
@@ -43,7 +45,6 @@ func init() {
_, err = os.Stat(filepath.Join(consts.DefaultLinux_d, "index.db")) _, err = os.Stat(filepath.Join(consts.DefaultLinux_d, "index.db"))
if err != nil { if err != nil {
if os.IsNotExist(err) { if os.IsNotExist(err) {
if len(os.Args) > 1 && os.Args[0] != "sync" { if len(os.Args) > 1 && os.Args[0] != "sync" {
} else { } else {
@@ -62,6 +63,7 @@ func init() {
log.Fatal(db) log.Fatal(db)
} }
defer db.Close() defer db.Close()
db.Exec("CREATE TABLE IF NOT EXISTS packages (query_name TEXT NOT NULL,name TEXT NOT NULL UNIQUE PRIMARY KEY, version TEXT NOT NULL, dependencies TEXT NOT NULL DEFAULT '', description TEXT NOT NULL, family TEXT NOT NULL, package_d TEXT NOT NULL, filename TEXT NOT NULL, os TEXT NOT NULL, arch TEXT NOT NULL, in_cache INTEGER NOT NULL DEFAULT 1, serial INTEGER NOT NULL)") db.Exec("CREATE TABLE IF NOT EXISTS packages (query_name TEXT NOT NULL,name TEXT NOT NULL UNIQUE PRIMARY KEY, version TEXT NOT NULL, dependencies TEXT NOT NULL DEFAULT '', description TEXT NOT NULL, family TEXT NOT NULL, package_d TEXT NOT NULL, filename TEXT NOT NULL, os TEXT NOT NULL, arch TEXT NOT NULL, in_cache INTEGER NOT NULL DEFAULT 1, serial INTEGER NOT NULL)")
} else { } else {
log.Fatal(err) log.Fatal(err)
@@ -98,7 +100,6 @@ var syncCmd = &cobra.Command{
Args: cobra.MaximumNArgs(1), Args: cobra.MaximumNArgs(1),
Short: "Syncronizes with an remote index.db, and check if the data dir is changed", Short: "Syncronizes with an remote index.db, and check if the data dir is changed",
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
_, err := os.Stat(consts.IndexDB) _, err := os.Stat(consts.IndexDB)
if err != nil { if err != nil {
if !os.IsNotExist(err) { if !os.IsNotExist(err) {
@@ -136,7 +137,7 @@ var syncCmd = &cobra.Command{
} }
} }
if err := os.WriteFile(consts.IndexDB, DBB, 0774); err != nil { if err := os.WriteFile(consts.IndexDB, DBB, 0o774); err != nil {
log.Fatal(err) log.Fatal(err)
} }
@@ -156,7 +157,6 @@ var installCmd = &cobra.Command{
Short: "Install a package", Short: "Install a package",
Args: cobra.MinimumNArgs(1), Args: cobra.MinimumNArgs(1),
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
_, err := os.Stat(consts.IndexDB) _, err := os.Stat(consts.IndexDB)
if err != nil { if err != nil {
if !os.IsNotExist(err) { if !os.IsNotExist(err) {
@@ -429,7 +429,57 @@ var installCmd = &cobra.Command{
continue continue
} }
} }
},
}
var removeCmd = &cobra.Command{
Use: "remove {package name}[package name...] ",
Args: cobra.MinimumNArgs(1),
Short: "Remove a package from the given names",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println(":: This command will remove permanently this packages, are you sure? (y/N)")
var a string
fmt.Scanf("%s", &a)
if a != "y" && a != "Y" {
os.Exit(1)
}
for _, pkgName := range args {
installed, err := utils.CheckIfPackageInstalled(pkgName)
if err != nil {
log.Fatal(err)
}
if installed {
db, err := sql.Open("sqlite", consts.InstalledDB)
if err != nil {
log.Fatal(err)
}
var packageDir string
if err := db.QueryRow("SELECT package_d WHERE name = ?", pkgName).Scan(&packageDir); err != nil {
log.Fatal(err)
}
f, err := os.Open(filepath.Join(packageDir, "config.toml"))
if err != nil {
log.Fatal(err)
}
manifest, err := utils.ManifestFileRead(f)
if err != nil {
log.Fatal(err)
}
L, err := utils_lua.GetSandBox(packageDir)
if err != nil {
log.Fatal(err)
}
L.SetGlobal("build", nil)
L.SetGlobal("script", lua.LString(manifest.Hooks.Remove))
}
}
}, },
} }