diff options
author | Raymaekers Luca <raymaekers.luca@gmail.com> | 2024-09-28 14:19:43 +0200 |
---|---|---|
committer | Raymaekers Luca <raymaekers.luca@gmail.com> | 2024-09-28 14:19:43 +0200 |
commit | 3620c94eb181d195be093e357232a91f8acc4978 (patch) | |
tree | 47aac6e3bf52a9c91549daeaa10b4ef7ae059f38 /main.go | |
parent | b96600e2bb06e086282ffc8a2447c682569961b2 (diff) |
Added create data file if not exist
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 57 |
1 files changed, 34 insertions, 23 deletions
@@ -3,6 +3,7 @@ package main import ( _ "embed" "encoding/gob" + "errors" "html/template" "io" "log" @@ -77,39 +78,49 @@ func main() { // If the .data file does not exist, create it in the cache directory { p := os.Getenv("XDG_CACHE_HOME") - // TODO: remove for testing - p = "" if p == "" { p = "." } DataFilename = p + "/" + DataFilename - f, err := os.OpenFile(DataFilename, os.O_RDONLY|os.O_CREATE, 0666) - if err != nil { - log.Fatalln("Error while opening data file:", err) - } - - // Decode the data and import it into Ideas + f, err := os.Open(DataFilename) + if errors.Is(err, os.ErrNotExist) { + // The file does not exist, so create one with only Version encoded + log.Println("File does not exist, creating", DataFilename) + f, err = os.Create(DataFilename) + if err != nil { + log.Fatalln("Error while creating data file:", err) + } - dec := gob.NewDecoder(f) - var v string - if err := dec.Decode(&v); err != io.EOF && err != nil { - log.Fatalln("Error while decoding version:", err) - } + enc := gob.NewEncoder(f) + if err := enc.Encode(Version); err != nil { + log.Fatalln("Error while encoding Version:", err) + } + } else if err != nil { + log.Fatalln("Error while opening data file:", err) + } else { + dec := gob.NewDecoder(f) - if v != Version { - log.Fatalf("Version mismatch for datafile@%s != package@%s\n", v, Version) - } + // Check the version + var v string + if err := dec.Decode(&v); err != io.EOF && err != nil { + log.Fatalln("Error while decoding version:", err) + } + if v != Version { + log.Fatalf("Version mismatch for datafile@%s != package@%s\n", v, Version) + } - err = dec.Decode(&Ideas) - if err != nil && err != io.EOF { - log.Fatalln("Error while decoding ideas:", err) + // Decode the data and import it into Ideas + err = dec.Decode(&Ideas) + if err != nil && err != io.EOF { + log.Fatalln("Error while decoding ideas:", err) + } + log.Printf("Imported @%s: %d ideas\n", v, len(Ideas)) + if err := f.Close(); err != nil { + log.Fatalln("Error while closing file:", err) + } } - log.Printf("Imported @%s: %d ideas\n", v, len(Ideas)) - if err := f.Close(); err != nil { - log.Fatalln("Error while closing file:", err) - } } // Handle SIGINT |