Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var Command = &cobra.Command{ Use: "rong", Short: "A material you color generator from image or video.", SilenceUsage: true, PersistentPostRun: func(_ *cobra.Command, _ []string) { slog.Info("Exiting rong") if logfile != nil { logfile.Close() } }, PersistentPreRunE: func(cmd *cobra.Command, _ []string) error { if cmd.Name() == "_carapace" { return nil } level := slog.LevelInfo if verbose, err := cmd.Flags().GetCount("verbose"); err == nil { if verbose == 0 { level = slog.LevelError } else if verbose == 1 { level = slog.LevelWarn } else if verbose == 2 { level = slog.LevelInfo } else if verbose >= 3 { level = slog.Level(math.MinInt) } } quiet := should(cmd.Flags().GetBool("quiet")) if quiet { level = slog.Level(math.MaxInt) } stderrHandler := log.NewWithOptions(os.Stderr, log.Options{ ReportTimestamp: false, Level: log.Level(level), }) if cmd.Flags().Changed("log-file") { logFilePath := should(cmd.Flags().GetString("log-file")) if err := os.MkdirAll( filepath.Dir(logFilePath), 0o755, ); err != nil { slog.Error( "Failed to create parent directory for log file", "error", err, ) } file, err := os.OpenFile( logFilePath, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0o666, ) if err != nil { logger := slog.New(stderrHandler) slog.SetDefault(logger) viper.SetOptions(viper.WithLogger(logger)) slog.Error("Failed to open log-file", "error", err) } else { fileHanlder := slog.NewJSONHandler(file, &slog.HandlerOptions{ AddSource: true, Level: slog.LevelDebug, }) handler := slogmulti.Fanout(stderrHandler, fileHanlder) logger := slog.New(handler) slog.SetDefault(logger) viper.SetOptions(viper.WithLogger(logger)) logfile = file } } else { logger := slog.New(stderrHandler) slog.SetDefault(logger) viper.SetOptions(viper.WithLogger(logger)) } viper.AddConfigPath("/etc/rong") viper.AddConfigPath(pathutil.ConfigDir) viper.SetConfigType("yaml") viper.SetConfigName("config") viper.SetEnvPrefix("rong") viper.SetDefault("dark", true) viper.SetDefault("variant", dynamic.VariantTonalSpot) viper.SetDefault("platform", dynamic.PlatformPhone) cfgFlag := cmd.Flags().Lookup("config") if cfgFlag != nil && cfgFlag.Changed { viper.SetConfigFile(cfgFlag.Value.String()) } return viper.ReadInConfig() }, }
Command is root command of the cli
Functions ¶
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.