
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.
90 lines
2.3 KiB
Go
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)
|
|
}
|