81 lines
2.2 KiB
Go
81 lines
2.2 KiB
Go
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
|