Sybren A. Stüvel 4b0cdfb735 Take release cycle from makefile instead of parsing the version
Take the release cycle from the `RELEASE_CYCLE` variable in the Makefile,
instead of parsing `VERSION`.

For alpha/beta/rc/release this doesn't matter, it was parsed correctly.
But other suffixes were all marked as "release", which wasn't correct.
2025-07-29 17:11:56 +02:00

90 lines
2.3 KiB
Go

package main
// SPDX-License-Identifier: GPL-3.0-or-later
import (
"flag"
"fmt"
"os"
"time"
"github.com/mattn/go-colorable"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
)
// Global variables used by the updateXXX() functions.
var (
cliArgs struct {
// Logging level flags.
quiet, debug, trace bool
newVersion string
updateMakefile bool
releaseCycle string
}
)
func main() {
parseCliArgs()
output := zerolog.ConsoleWriter{Out: colorable.NewColorableStdout(), TimeFormat: time.RFC3339}
log.Logger = log.Output(output)
configLogLevel()
log.Info().Str("version", cliArgs.newVersion).Msg("updating Flamenco version")
var anyFileWasChanged bool
if cliArgs.updateMakefile {
anyFileWasChanged = updateMakefile() || anyFileWasChanged
}
anyFileWasChanged = updateAddon() || anyFileWasChanged
anyFileWasChanged = updateMagefiles() || anyFileWasChanged
if !anyFileWasChanged {
log.Warn().Msg("nothing changed")
os.Exit(42)
return
}
log.Info().Msg("file replacement done")
}
func parseCliArgs() {
flag.BoolVar(&cliArgs.quiet, "quiet", false, "Only log warning-level and worse.")
flag.BoolVar(&cliArgs.debug, "debug", false, "Enable debug-level logging.")
flag.BoolVar(&cliArgs.trace, "trace", false, "Enable trace-level logging.")
flag.BoolVar(&cliArgs.updateMakefile, "makefile", false,
"Also update the Makefile. Normally this application is invoked from the Makefile itself, "+
"and thus it does not change that file without this CLI argument.")
flag.Parse()
cliArgs.newVersion = flag.Arg(0)
cliArgs.releaseCycle = flag.Arg(1)
if cliArgs.newVersion == "" || cliArgs.releaseCycle == "" {
os.Stderr.WriteString(fmt.Sprintf("Usage: %s [-quiet|-debug|-trace] {new Flamenco version number} {release cycle}\n", os.Args[0]))
os.Stderr.WriteString("\n")
flag.PrintDefaults()
os.Stderr.WriteString("\n")
os.Stderr.WriteString("This program updates Makefile and some other files to set the new Flamenco version.\n")
os.Stderr.WriteString("\n")
os.Exit(47)
}
}
func configLogLevel() {
var logLevel zerolog.Level
switch {
case cliArgs.trace:
logLevel = zerolog.TraceLevel
case cliArgs.debug:
logLevel = zerolog.DebugLevel
case cliArgs.quiet:
logLevel = zerolog.WarnLevel
default:
logLevel = zerolog.InfoLevel
}
zerolog.SetGlobalLevel(logLevel)
}