Now you can't install two packages from the same family
This commit is contained in:
		@@ -8,6 +8,7 @@ import (
 | 
			
		||||
	"crypto/sha256"
 | 
			
		||||
	"database/sql"
 | 
			
		||||
	"encoding/hex"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"io/fs"
 | 
			
		||||
@@ -98,6 +99,10 @@ type Manifest struct {
 | 
			
		||||
	} `toml:"Hooks"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// errors
 | 
			
		||||
 | 
			
		||||
var ErrNotInstalled = errors.New("this package isn't installed")
 | 
			
		||||
 | 
			
		||||
var serialPass uint
 | 
			
		||||
var cfg ConfigTOML
 | 
			
		||||
var PacketsDir string
 | 
			
		||||
@@ -270,7 +275,11 @@ var removeCmd = &cobra.Command{
 | 
			
		||||
 | 
			
		||||
			err := Unninstall(realname)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				log.Fatal(err)
 | 
			
		||||
				if err == ErrNotInstalled {
 | 
			
		||||
					fmt.Println(err.Error())
 | 
			
		||||
				} else {
 | 
			
		||||
					log.Fatal(err)
 | 
			
		||||
				}
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
@@ -862,37 +871,45 @@ func QueryInstall(realname string) {
 | 
			
		||||
	defer db.Close()
 | 
			
		||||
 | 
			
		||||
	simplecheck, err := sql.Open("sqlite", filepath.Join(PacketsDir, "installed.db"))
 | 
			
		||||
	if err == nil {
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 | 
			
		||||
		var exist bool
 | 
			
		||||
		simplecheck.QueryRow("SELECT EXISTS(SELECT 1 FROM packages WHERE realname = ?  LIMIT 1)", realname).Scan(&exist)
 | 
			
		||||
 | 
			
		||||
		if exist {
 | 
			
		||||
			fmt.Println("Alredy installed!")
 | 
			
		||||
			simplecheck.Close()
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		simplecheck.Close()
 | 
			
		||||
	} else {
 | 
			
		||||
		simplecheck.Close()
 | 
			
		||||
		log.Fatal(err)
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	var exist bool
 | 
			
		||||
	simplecheck.QueryRow("SELECT EXISTS(SELECT 1 FROM packages WHERE realname = ?  LIMIT 1)", realname).Scan(&exist)
 | 
			
		||||
	if exist {
 | 
			
		||||
		fmt.Println("Alredy installed!")
 | 
			
		||||
		simplecheck.Close()
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	defer simplecheck.Close()
 | 
			
		||||
 | 
			
		||||
	var mirrors string
 | 
			
		||||
	var serial uint
 | 
			
		||||
	var family string
 | 
			
		||||
 | 
			
		||||
	ResolvDependencies(realname)
 | 
			
		||||
 | 
			
		||||
	err = db.QueryRow("SELECT mirrors FROM packages WHERE realname = ?", realname).Scan(&mirrors)
 | 
			
		||||
	err = db.QueryRow("SELECT mirrors, serial, family FROM packages WHERE realname = ?", realname).Scan(&mirrors, &serial, &family)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Panic(err)
 | 
			
		||||
		return
 | 
			
		||||
		log.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	var serial uint
 | 
			
		||||
	err = db.QueryRow("SELECT serial FROM packages WHERE realname = ?", realname).Scan(&serial)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Panic(err)
 | 
			
		||||
		return
 | 
			
		||||
 | 
			
		||||
	if !isUpgrade {
 | 
			
		||||
 | 
			
		||||
		var recognize string
 | 
			
		||||
 | 
			
		||||
		err = simplecheck.QueryRow("SELECT realname FROM packages WHERE family = ?", family).Scan(&recognize)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			if err == sql.ErrNoRows {
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if err == nil {
 | 
			
		||||
			fmt.Println(":: Older package found, upgrading.")
 | 
			
		||||
			isUpgrade = true
 | 
			
		||||
			upgradeHelper = recognize
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if !strings.Contains(mirrors, " ") {
 | 
			
		||||
@@ -1304,7 +1321,7 @@ func Unninstall(realname string) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if !exist {
 | 
			
		||||
		return fmt.Errorf("this package isn't installed")
 | 
			
		||||
		return ErrNotInstalled
 | 
			
		||||
	}
 | 
			
		||||
	fmt.Printf(":: Sure you will remove %s ? [Y/n] ", realname)
 | 
			
		||||
	var answer string
 | 
			
		||||
@@ -1438,7 +1455,7 @@ func Upgrade(packagepath string, og_realname string, serial uint) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if !exist {
 | 
			
		||||
		return fmt.Errorf("this package isn't installed")
 | 
			
		||||
		return ErrNotInstalled
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if cfg.Config.LastDataDir != cfg.Config.DataDir {
 | 
			
		||||
@@ -1670,7 +1687,7 @@ func Upgrade(packagepath string, og_realname string, serial uint) error {
 | 
			
		||||
		log.Panic(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fmt.Printf("\nPackage %s fully installed", name)
 | 
			
		||||
	fmt.Printf("\nPackage %s fully installed\n", name)
 | 
			
		||||
 | 
			
		||||
	var insert = Installed{
 | 
			
		||||
		Realname:     manifest.Info.Name,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user