aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaymaekers Luca <raymaekers.luca@gmail.com>2024-09-28 14:19:43 +0200
committerRaymaekers Luca <raymaekers.luca@gmail.com>2024-09-28 14:19:43 +0200
commit3620c94eb181d195be093e357232a91f8acc4978 (patch)
tree47aac6e3bf52a9c91549daeaa10b4ef7ae059f38
parentb96600e2bb06e086282ffc8a2447c682569961b2 (diff)
Added create data file if not exist
-rw-r--r--main.go57
1 files changed, 34 insertions, 23 deletions
diff --git a/main.go b/main.go
index 8bd2d5c..329fc34 100644
--- a/main.go
+++ b/main.go
@@ -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