about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--internal/config/config.go9
-rw-r--r--searchix.go27
2 files changed, 32 insertions, 4 deletions
diff --git a/internal/config/config.go b/internal/config/config.go
index 6837ea7..939d7b1 100644
--- a/internal/config/config.go
+++ b/internal/config/config.go
@@ -180,6 +180,15 @@ var defaultConfig = Config{
 	},
 }
 
+func GetDefaultConfig() string {
+	out, err := toml.Marshal(&defaultConfig)
+	if err != nil {
+		panic("could not read default configuration")
+	}
+
+	return string(out)
+}
+
 func GetConfig(filename string) (*Config, error) {
 	config := defaultConfig
 	if filename != "" {
diff --git a/searchix.go b/searchix.go
index c2cd19d..605db55 100644
--- a/searchix.go
+++ b/searchix.go
@@ -23,10 +23,19 @@ import (
 var buildVersion string
 
 var (
-	configFile = flag.String("config", "config.toml", "config `file` to use")
+	configFile         = flag.String("config", "config.toml", "config `file` to use")
+	printDefaultConfig = flag.Bool(
+		"print-default-config",
+		false,
+		"print default configuration and exit",
+	)
 	liveReload = flag.Bool("live", false, "whether to enable live reloading (development)")
-	replace    = flag.Bool("replace", false, "whether to replace existing database, if it exists")
-	version    = flag.Bool("version", false, "print version information")
+	replace    = flag.Bool(
+		"replace",
+		false,
+		"whether to replace existing database, if it exists",
+	)
+	version = flag.Bool("version", false, "print version information")
 )
 
 func nextOccurrenceOfLocalTime(t toml.LocalTime) time.Time {
@@ -56,7 +65,17 @@ func main() {
 		if buildVersion != config.CommitSHA && buildVersion != config.ShortSHA {
 			fmt.Fprintf(os.Stderr, " %s", config.CommitSHA)
 		}
-		fmt.Fprint(os.Stderr, "\n")
+		_, err := fmt.Fprint(os.Stderr, "\n")
+		if err != nil {
+			panic("can't write to standard error?!")
+		}
+		os.Exit(0)
+	}
+	if *printDefaultConfig {
+		_, err := fmt.Print(config.GetDefaultConfig())
+		if err != nil {
+			panic("can't write to standard output?!")
+		}
 		os.Exit(0)
 	}