aboutsummaryrefslogtreecommitdiff
path: root/converter/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'converter/main.go')
-rw-r--r--converter/main.go127
1 files changed, 127 insertions, 0 deletions
diff --git a/converter/main.go b/converter/main.go
new file mode 100644
index 0000000..a863b2c
--- /dev/null
+++ b/converter/main.go
@@ -0,0 +1,127 @@
+/*
+Sample code to convert an old tasks.gob file to a newer format
+This is scrpited and dangerous, keep backups!!!
+*/
+package main
+
+import (
+ "encoding/gob"
+ "fmt"
+ "os"
+ "time"
+
+ ws "git.spacehb.net/ws.git"
+)
+
+func main() {
+
+ TasksDoneConv := []ws.TaskDone{}
+ TasksConv := []ws.Task{}
+ TagsConv := []ws.Tag{}
+
+ // Get old gobdata
+ f, err := os.Open("tasks.gob")
+ if err != nil {
+ panic(err)
+ }
+
+ dec := gob.NewDecoder(f)
+ // old data format
+ Tasks := []string{}
+ TasksDone := []struct {
+ Text string
+ Date time.Time
+ }{}
+ err = dec.Decode(&TasksDone)
+ if err != nil {
+ panic(err)
+ }
+ err = dec.Decode(&Tasks)
+ if err != nil {
+ panic(err)
+ }
+
+ // Get current gobdata
+ f, err = os.Open(ws.GetGobdataPath())
+ if err != nil {
+ panic(err)
+ }
+ dec = gob.NewDecoder(f)
+ err = dec.Decode(&TasksConv)
+ if err != nil {
+ panic(err)
+ }
+ err = dec.Decode(&TasksDoneConv)
+ if err != nil {
+ panic(err)
+ }
+ err = dec.Decode(&TagsConv)
+ if err != nil {
+ panic(err)
+ }
+
+ for _, v := range Tasks {
+ start := false
+ var tag []byte
+ var text []byte
+ for i := 0; i < len(v); i++ {
+ if v[i] == '{' {
+ start = true
+ i++
+ }
+ if v[i] == '}' {
+ start = false
+ i++
+ }
+ if start == true {
+ tag = append(tag, v[i])
+ }
+ if start == false {
+ text = append(text, v[i])
+ }
+ }
+
+ tagstr := ws.Tag(tag)
+ if len(TagsConv) == 0 {
+ TagsConv = append(TagsConv, tagstr)
+ }
+ found := false
+ for _, v := range TagsConv {
+ if tagstr == v {
+ found = true
+ break
+ }
+ }
+ if !found {
+ TagsConv = append(TagsConv, ws.Tag(tag))
+ }
+
+ textstr := string(text[1:])
+
+ TasksConv = append(TasksConv, ws.Task{Text: textstr, Tag: tagstr})
+ // fmt.Printf("tag: '%s' | text: '%s'\n", tag, text)
+ }
+ fmt.Printf("TagsConv: %#v\n", TagsConv)
+ for i, v := range TasksConv {
+ fmt.Printf("%2d. %s\n", i+1, v)
+ }
+
+ // Save data to gobdata
+ f, err = os.Create(ws.GetGobdataPath())
+ if err != nil {
+ panic(err)
+ }
+ enc := gob.NewEncoder(f)
+ err = enc.Encode(TasksConv)
+ if err != nil {
+ panic(err)
+ }
+ err = enc.Encode(TasksDoneConv)
+ if err != nil {
+ panic(err)
+ }
+ err = enc.Encode(TagsConv)
+ if err != nil {
+ panic(err)
+ }
+}