* generalize admins and email info with store interface * lint: missing group comment * fix admin group with shared substruct
65 lines
1.4 KiB
Go
65 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/hashicorp/logutils"
|
|
"github.com/jessevdk/go-flags"
|
|
|
|
"github.com/umputun/remark/backend/app/cmd"
|
|
)
|
|
|
|
// Opts with all cli commands and flags
|
|
type Opts struct {
|
|
ServerCmd cmd.ServerCommand `command:"server"`
|
|
ImportCmd cmd.ImportCommand `command:"import"`
|
|
BackupCmd cmd.BackupCommand `command:"backup"`
|
|
RestoreCmd cmd.RestoreCommand `command:"restore"`
|
|
|
|
Dbg bool `long:"dbg" env:"DEBUG" description:"debug mode"`
|
|
}
|
|
|
|
var revision = "unknown"
|
|
|
|
func main() {
|
|
fmt.Printf("remark42 %s\n", revision)
|
|
cmd.Revision = revision
|
|
|
|
var opts Opts
|
|
p := flags.NewParser(&opts, flags.Default)
|
|
p.CommandHandler = func(command flags.Commander, args []string) error {
|
|
setupLog(opts.Dbg)
|
|
err := command.Execute(args)
|
|
if err != nil {
|
|
log.Printf("[ERROR] failed with %+v", err)
|
|
}
|
|
return err
|
|
}
|
|
|
|
if _, err := p.Parse(); err != nil {
|
|
if flagsErr, ok := err.(*flags.Error); ok && flagsErr.Type == flags.ErrHelp {
|
|
os.Exit(0)
|
|
} else {
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
}
|
|
|
|
func setupLog(dbg bool) {
|
|
filter := &logutils.LevelFilter{
|
|
Levels: []logutils.LogLevel{"DEBUG", "INFO", "WARN", "ERROR"},
|
|
MinLevel: logutils.LogLevel("INFO"),
|
|
Writer: os.Stdout,
|
|
}
|
|
|
|
log.SetFlags(log.Ldate | log.Ltime)
|
|
|
|
if dbg {
|
|
log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds | log.Lshortfile)
|
|
filter.MinLevel = logutils.LogLevel("DEBUG")
|
|
}
|
|
log.SetOutput(filter)
|
|
}
|