agru/main.go

56 lines
1.4 KiB
Go
Raw Normal View History

2023-03-16 22:50:02 +02:00
package main
import (
"flag"
"log"
"os/exec"
"strings"
)
var (
rolesPath string
requirementsPath string
updateRequirementsFile bool
2023-03-25 16:43:50 +02:00
verbose bool
)
2023-03-16 22:50:02 +02:00
func main() {
flag.StringVar(&requirementsPath, "r", "requirements.yml", "ansible-galaxy requirements file")
flag.StringVar(&rolesPath, "p", "roles/galaxy/", "path to install roles")
flag.BoolVar(&updateRequirementsFile, "u", false, "update requirements file if newer versions are available")
2023-03-25 16:43:50 +02:00
flag.BoolVar(&verbose, "v", false, "verbose output")
2023-03-16 22:50:02 +02:00
flag.Parse()
log.Println("parsing", requirementsPath)
entries, installOnly := parseRequirements(requirementsPath)
if updateRequirementsFile {
log.Println("updating", requirementsPath)
updateRequirements(entries)
2023-03-16 22:50:02 +02:00
}
log.Println("installing/updating roles (if any)")
installMissingRoles(append(entries, installOnly...))
log.Println("done")
2023-03-16 22:50:02 +02:00
}
func execute(command string, dir string) (string, error) {
2023-03-16 22:50:02 +02:00
slice := strings.Split(command, " ")
cmd := exec.Command(slice[0], slice[1:]...)
cmd.Dir = dir
out, err := cmd.CombinedOutput()
2023-03-25 16:43:50 +02:00
if verbose {
log.Println("DEBUG: execute")
log.Println(" command:", command)
log.Println(" chdir:", dir)
if out != nil {
log.Println(" output:", strings.TrimSuffix(string(out), "\n"))
}
}
2023-03-16 22:50:02 +02:00
if out == nil {
return "", err
}
2023-03-16 23:29:28 +02:00
2023-03-16 22:50:02 +02:00
return strings.TrimSuffix(string(out), "\n"), err
}