63
package main
import (
"encoding/json"
"fmt"
"os"
"path/filepath"
)
var DBPATH, SOCK, LOG string
func init() {
home, err := os.UserHomeDir()
FtlLog(err)
if home == "" {
os.Exit(1)
}
if _, err := os.Stat(filepath.Join(home, ".mailbox")); os.IsNotExist(err) {
os.Mkdir(filepath.Join(home, ".mailbox"), 0755)
}
DBPATH = filepath.Join(home, ".mailbox", "mail.storm")
SOCK = filepath.Join(home, ".mailbox", "mail.sock")
LOG = filepath.Join(home, ".mailbox", "box.log")
}
func FtlLog(e error) {
if e == nil {
return
}
log, _ := os.OpenFile(LOG, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0664)
fmt.Fprintln(log, "Fatal: ", e)
log.Close()
os.Exit(1)
}
func main() {
if (len(os.Args) > 0 && os.Args[0] == "mailbox-parser") || (len(os.Args) > 1 && os.Args[1] == "parse") {
meta, filebr := Parse()
var put PUT
put.M = meta
put.D = filebr.Bytes()
b, err := json.Marshal(put)
FtlLog(err)
var r Req
r.CMD = "PUT"
r.Data = b
FtlLog(err)
b = sendToSock(r)
fmt.Println(string(b))
}
if (len(os.Args) > 0 && os.Args[0] == "mailbox-db") || (len(os.Args) > 1 && os.Args[1] == "db") {
Listen()
return
} else if len(os.Args) > 1 && os.Args[1] == "search" {
var r Req
r.CMD = "SEARCH"
b, _ := json.Marshal(os.Args[2])
r.Data = b
fmt.Println(string(sendToSock(r)))
}
}