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