marknotes-go/MarkNotes.go

82 lines
2.2 KiB
Go
Raw Permalink Normal View History

2015-09-28 22:38:17 +00:00
package main
import (
"os/user"
"fmt"
"log"
"flag"
"bytes"
"database/sql"
_ "github.com/go-sql-driver/mysql"
_ "github.com/mattn/go-sqlite3"
)
var err error
var db *sql.DB
// Start main thread
func main() {
// Set up some command line flags.
var server bool
flag.BoolVar(&server, "server", false, "Run as a server")
flag.BoolVar(&server, "s", false, "Run as a server")
DBString := "marknotes:iuLUwNjwZaYJ78@tcp(127.0.0.1:3306)/marknotes"
flag.StringVar(&DBString, "database", DBString, "A database string to use in server mode")
flag.StringVar(&DBString, "db", DBString, "A database string to use in server mode")
flag.Parse()
// End setting up flags.
// Are we a server? If so, open up a database connection
if server == true {
fmt.Println("Running as server.")
db, err := sql.Open("mysql", DBString)
if err != nil {
fmt.Println("DB failed to open: ", err)
return
} // if err not nil
defer db.Close()
err = db.Ping()
if err != nil {
fmt.Println("DB failed to ping: ", err)
return
} // if err not nil
} else {
fmt.Println("Running as client.")
usr, err := user.Current()
if err != nil {
log.Fatal(err)
} // if err not nil
DBString = usr.HomeDir + "/MarkNotes.db"
DBString = "MarkNotes.db"
fmt.Println("Database: " + DBString)
db, err = sql.Open("sqlite3", DBString)
if err != nil {
fmt.Println("DB failed to open: ", err)
return
} // if err not nil
defer db.Close()
err = db.Ping()
if err != nil {
fmt.Println("DB failed to ping: ", err)
return
} // if err not nil
} // if server == true
if len(flag.Args()) > 0 {
var buffer bytes.Buffer
for c, arg := range flag.Args() {
buffer.WriteString(arg)
if c < (len(flag.Args())-1) {
buffer.WriteString(" ")
} // if c < args
} // end for arg in flag.Args()
cmd := CommandParse(buffer.String())
CommandDo(cmd)
LogNew(cmd.action, cmd.object, cmd.extra)
} // end if CommandString not nil
return
} // End main thread