in order to implement sst for windows and macos the structure of osmanager has been changed. Now osmanager has a new field pm, which contains the specific packagemanager for the os. Linux packagemanagers have been implemented as packagemanagers on their own.
76 lines
1.9 KiB
Go
76 lines
1.9 KiB
Go
package packagemanager
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"strings"
|
|
"system_setup_tool/internal/shell"
|
|
)
|
|
|
|
type DnfManager struct {
|
|
SudoPassword string
|
|
}
|
|
|
|
func (d *DnfManager) Install(packages []string) error {
|
|
if len(packages) == 0 {
|
|
return nil
|
|
}
|
|
err := InstallWithProgress(d, packages)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (d *DnfManager) Name() string {
|
|
return "OS Home Manager"
|
|
}
|
|
|
|
func (d *DnfManager) InstallManager() error {
|
|
return nil
|
|
}
|
|
|
|
func (d *DnfManager) InstallPackage(pkg string) error {
|
|
cmd := "dnf install -y --best"
|
|
fullCmd := fmt.Sprintf("%s %s", cmd, pkg)
|
|
command := shell.ExecCommand("sudo", "-S", "sh", "-c", fullCmd)
|
|
command.Stdin = strings.NewReader(d.SudoPassword + "\n")
|
|
return command.Run()
|
|
}
|
|
|
|
func (d *DnfManager) RemovePackage(pkg string) error {
|
|
cmd := "dnf remove -y"
|
|
fullCmd := fmt.Sprintf("%s %s", cmd, pkg)
|
|
command := shell.ExecCommand("sudo", "-S", "sh", "-c", fullCmd)
|
|
command.Stdin = strings.NewReader(d.SudoPassword + "\n")
|
|
return command.Run()
|
|
}
|
|
|
|
func (d *DnfManager) SearchPackage(pkg string) []string {
|
|
cmd := "dnf search -y"
|
|
fullCmd := fmt.Sprintf("%s %s", cmd, pkg)
|
|
command := shell.ExecCommand("sudo", "-S", "sh", "-c", fullCmd)
|
|
command.Stdin = strings.NewReader(d.SudoPassword + "\n")
|
|
packages, err := command.Output()
|
|
if err != nil {
|
|
log.Printf("error fetching %s packages: %v", d.Name(), err)
|
|
}
|
|
packageList := strings.Split(strings.TrimSpace(string(packages)), "\n")
|
|
return packageList
|
|
}
|
|
|
|
func (d *DnfManager) UpdatePackage(pkg string) error {
|
|
cmd := "dnf update -y"
|
|
fullCmd := fmt.Sprintf("%s %s", cmd, pkg)
|
|
command := shell.ExecCommand("sudo", "-S", "sh", "-c", fullCmd)
|
|
command.Stdin = strings.NewReader(d.SudoPassword + "\n")
|
|
return command.Run()
|
|
}
|
|
|
|
func (d *DnfManager) UpdateAllPackages() error {
|
|
cmd := "dnf update -y"
|
|
fullCmd := fmt.Sprintf("%s", cmd)
|
|
command := shell.ExecCommand("sudo", "-S", "sh", "-c", fullCmd)
|
|
command.Stdin = strings.NewReader(d.SudoPassword + "\n")
|
|
return command.Run()
|
|
}
|