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