refactor and checking for root

This commit is contained in:
Paul Fey 2025-07-25 23:40:25 +02:00
parent 81e9d345c3
commit c97d79e289
3 changed files with 82 additions and 38 deletions

View file

@ -17,7 +17,7 @@ func AddFromCli(arguments []string) {
printHelp()
}
resultingPackageList, err := GetOverlayList(arguments...)
resultingPackageList, err := resolver.GetOverlayList(arguments...)
if err != nil {
fail(err.Error())
}
@ -27,44 +27,12 @@ func AddFromCli(arguments []string) {
fmt.Printf("- %v@%v\n", installedPackage.Name, installedPackage.Version)
}
}
func GetOverlayList(packages ...string) ([]resolver.Package, error) {
installedPackageList := []resolver.Package{}
for _, packageName := range packages {
resultedPackage, err := resolver.GetPackage(packageName)
if err != nil {
return nil, err
}
resultedDependencies, err := resolver.GetDependencyList(resultedPackage)
if err != nil {
return nil, err
}
installedPackageList = append(installedPackageList, resultedPackage)
installedPackageList = append(installedPackageList, resultedDependencies...)
overlayConfiguration, err := resolver.GenerateOverlayConfig(resultingPackageList...)
if err != nil {
fail(err.Error())
}
fmt.Println(overlayConfiguration)
resultingPackageList := []resolver.Package{}
for _, installedPackage := range installedPackageList {
alreadyExists := false
for _, resultedPackage := range resultingPackageList {
if installedPackage.Name == resultedPackage.Name {
alreadyExists = true
}
}
if !alreadyExists {
resultingPackageList = append(resultingPackageList, installedPackage)
}
}
return resultingPackageList, nil
}
func printHelp() {

26
main.go
View file

@ -2,8 +2,10 @@ package main
import (
"fmt"
"git.pauljako.de/rodeo/rodeo-pkg/add"
"os"
"os/user"
"git.pauljako.de/rodeo/rodeo-pkg/add"
)
func main() {
@ -14,9 +16,21 @@ func main() {
switch os.Args[1] {
case "install":
if !make_sure_root() {
fail("This subcommand requires root")
}
case "uninstall":
if !make_sure_root() {
fail("This subcommand requires root")
}
case "remove":
if !make_sure_root() {
fail("This subcommand requires root")
}
case "add":
if !make_sure_root() {
fail("This subcommand requires root")
}
add.AddFromCli(os.Args[2:])
case "help":
printHelp()
@ -31,6 +45,16 @@ func fail(reason string) {
os.Exit(1)
}
func make_sure_root() bool {
currentUser, err := user.Current()
if err != nil {
fmt.Println("An Error occured while checking for root: " + err.Error())
return true
}
return currentUser.Uid == "0"
}
func printHelp() {
help_text := `%v: The Package Manager for the rodeo-overlay system

View file

@ -1,6 +1,7 @@
package resolver
import (
"errors"
"os"
"strings"
)
@ -48,3 +49,54 @@ func GetDependencyList(sourcePackage Package) ([]Package, error) {
return finalList, nil
}
func GetOverlayList(packages ...string) ([]Package, error) {
installedPackageList := []Package{}
for _, packageName := range packages {
resultedPackage, err := GetPackage(packageName)
if err != nil {
return nil, err
}
resultedDependencies, err := GetDependencyList(resultedPackage)
if err != nil {
return nil, err
}
installedPackageList = append(installedPackageList, resultedPackage)
installedPackageList = append(installedPackageList, resultedDependencies...)
}
resultingPackageList := []Package{}
for _, installedPackage := range installedPackageList {
alreadyExists := false
for _, resultedPackage := range resultingPackageList {
if installedPackage.Name == resultedPackage.Name {
alreadyExists = true
}
}
if !alreadyExists {
resultingPackageList = append(resultingPackageList, installedPackage)
}
}
return resultingPackageList, nil
}
func GenerateOverlayConfig(packages ...Package) (string, error) {
finalString := ""
for _, packageStruct := range packages {
if packageStruct.OverlayName == "" {
return "", errors.New("The package's overlayName is not set")
}
finalString = finalString + packageStruct.OverlayName + "\n"
}
return finalString, nil
}