feat: write default config to disk

Amolith created

Implements: https://todo.sr.ht/~amolith/public-tracker/8

Change summary

config.go | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)

Detailed changes

config.go 🔗

@@ -15,12 +15,29 @@ func (m *model) parseConfig(configFile *string) {
 	configBytes, err := os.ReadFile(*configFile)
 	if err != nil {
 		log.Println("Config file not found, writing default values to", *flagConfig)
-		writeDefaultConfig()
+		err = writeDefaultConfig(*flagConfig)
+		if err != nil {
+			log.Fatal("Error creating default config:", err)
+		}
 		os.Exit(0)
 	}
 	err = yaml.Unmarshal(configBytes, m)
 }
 
-// TODO
-func writeDefaultConfig() {
+// writeDefaultConfig takes a config file path as its argument and writes the
+// default config to that path
+func writeDefaultConfig(configFile string) error {
+	file, err := os.Create(configFile)
+	if err != nil {
+		return err
+	}
+	defer file.Close()
+
+	_, err = file.Write([]byte(`listen: 127.0.0.1:1313
+accessToken: CHANGEME
+databasePath: badger_db`))
+	if err != nil {
+		return err
+	}
+	return nil
 }