adding -dryrun flag

Signed-off-by: Leonardo Rossetti <lrossett@redhat.com>
This commit is contained in:
Leonardo Rossetti
2022-12-22 15:47:13 -03:00
parent e332a244e3
commit cd3492304e
2 changed files with 104 additions and 11 deletions

View File

@ -26,6 +26,7 @@ var (
verboseFlag bool // True if -v passed
noKmsgFlag bool
isUser bool // True if run as quadlet-user-generator executable
dryRun bool // True if -dryrun is used
)
var (
@ -291,27 +292,32 @@ func warnIfAmbigiousName(container *parser.UnitFile) {
}
func main() {
exitCode := 0
prgname := path.Base(os.Args[0])
isUser = strings.Contains(prgname, "user")
flag.Parse()
if verboseFlag {
if verboseFlag || dryRun {
enableDebug()
}
if noKmsgFlag {
if noKmsgFlag || dryRun {
noKmsg = true
}
if flag.NArg() < 1 {
if !dryRun && flag.NArg() < 1 {
Logf("Missing output directory argument")
os.Exit(1)
}
outputPath := flag.Arg(0)
var outputPath string
Debugf("Starting quadlet-generator, output to: %s", outputPath)
if !dryRun {
outputPath = flag.Arg(0)
Debugf("Starting quadlet-generator, output to: %s", outputPath)
}
sourcePaths := getUnitDirs(isUser)
@ -320,12 +326,19 @@ func main() {
loadUnitsFromDir(d, units)
}
err := os.MkdirAll(outputPath, os.ModePerm)
if err != nil {
Logf("Can't create dir %s: %s", outputPath, err)
if len(units) == 0 {
Debugf("No files to parse from %s", sourcePaths)
os.Exit(1)
}
if !dryRun {
err := os.MkdirAll(outputPath, os.ModePerm)
if err != nil {
Logf("Can't create dir %s: %s", outputPath, err)
os.Exit(1)
}
}
for name, unit := range units {
var service *parser.UnitFile
var err error
@ -350,16 +363,29 @@ func main() {
} else {
service.Path = path.Join(outputPath, service.Filename)
if err := generateServiceFile(service); err != nil {
Logf("Error writing '%s'o: %s", service.Path, err)
if dryRun {
data, err := service.ToString()
if err != nil {
Debugf("Error parsing %s\n---\n", service.Path)
exitCode = 1
} else {
fmt.Printf("---%s---\n%s\n", service.Path, data)
}
} else {
if err := generateServiceFile(service); err != nil {
Logf("Error writing '%s'o: %s", service.Path, err)
}
enableServiceFile(outputPath, service)
}
enableServiceFile(outputPath, service)
}
}
os.Exit(exitCode)
}
func init() {
flag.BoolVar(&verboseFlag, "v", false, "Print debug information")
flag.BoolVar(&noKmsgFlag, "no-kmsg-log", false, "Don't log to kmsg")
flag.BoolVar(&isUser, "user", false, "Run as systemd user")
flag.BoolVar(&dryRun, "dryrun", false, "run in dryrun mode printing debug information")
}