refactor and checking for root
This commit is contained in:
parent
81e9d345c3
commit
c97d79e289
3 changed files with 82 additions and 38 deletions
42
add/add.go
42
add/add.go
|
@ -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
26
main.go
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue