progress doing upgrade all function

This commit is contained in:
2025-10-07 11:56:24 -04:00
parent b89abb31df
commit e4b4d43163

View File

@@ -258,8 +258,7 @@ var installCmd = &cobra.Command{
if installed { if installed {
fmt.Printf(":: Package %s is already installed, searching for upgrades...\n", inputName) fmt.Printf(":: Package %s is already installed, searching for upgrades...\n", inputName)
var wg sync.WaitGroup var wg sync.WaitGroup
var mu sync.Mutex AsyncFullyUpgrade(inputName, cfg.Config.StorePackages, filepath.Join(cfg.Config.Data_d, id), &wg, db)
AsyncFullyUpgrade(inputName, cfg.Config.StorePackages, filepath.Join(cfg.Config.Data_d, id), &wg, &mu, db)
continue continue
} }
@@ -473,6 +472,49 @@ var searchCmd = &cobra.Command{
}, },
} }
var upgradeCmd = &cobra.Command{
Use: "upgrade",
Args: cobra.NoArgs,
Short: "upgrade all installed packages",
Run: func(cmd *cobra.Command, args []string) {
cfg, err := configs.GetConfigTOML()
if err != nil {
log.Fatal(err)
}
db, err := sql.Open("sqlite", consts.InstalledDB)
if err != nil {
log.Fatal(err)
}
defer db.Close()
rows, err := db.Query("SELECT query_name FROM packages")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
var installedPackagesQName []string
for rows.Next() {
var queryName string
if err := rows.Scan(&queryName); err != nil {
log.Fatal(err)
}
installedPackagesQName = append(installedPackagesQName, queryName)
}
var wg sync.WaitGroup
for _, v := range installedPackagesQName {
wg.Add(1)
AsyncFullyUpgrade(v, cfg.Config.StorePackages, cfg.Config.Data_d, &wg, db)
}
wg.Wait()
},
}
func main() { func main() {
rootCmd.AddCommand(installCmd) rootCmd.AddCommand(installCmd)
rootCmd.AddCommand(removeCmd) rootCmd.AddCommand(removeCmd)
@@ -523,7 +565,8 @@ func AyncFullInstall(dep string, storePackages bool, installPath string, wg *syn
} }
} }
func AsyncFullyUpgrade(queryName string, storePackages bool, installPath string, wg *sync.WaitGroup, mu *sync.Mutex, db *sql.DB) { func AsyncFullyUpgrade(queryName string, storePackages bool, installDir string, wg *sync.WaitGroup, db *sql.DB) {
defer wg.Done()
installed, err := utils.CheckIfPackageInstalled(queryName) installed, err := utils.CheckIfPackageInstalled(queryName)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
@@ -547,10 +590,11 @@ func AsyncFullyUpgrade(queryName string, storePackages bool, installPath string,
} }
var newSerial int var newSerial int
var id string var id string
if err := db.QueryRow("SELECT serial, id FROM packages WHERE query_name = ? ORDER BY serial LIMIT 1", queryName).Scan(&newSerial, &id); err != nil { if err := db.QueryRow("SELECT serial, id FROM packages WHERE query_name = ? ORDER BY serial DESC LIMIT 1", queryName).Scan(&newSerial, &id); err != nil {
log.Println(err) log.Println(err)
return return
} }
installPath := filepath.Join(installDir, id)
if oldSerial == newSerial { if oldSerial == newSerial {
log.Println(errors_packets.ErrAlredyUpToDate) log.Println(errors_packets.ErrAlredyUpToDate)
return return