parent
6220e55559
commit
b1686b1d46
10
README.md
10
README.md
|
@ -49,12 +49,12 @@ Now extract the files from the archive, change into the directory, and do the fo
|
||||||
# 1) Log into MySQL and run:
|
# 1) Log into MySQL and run:
|
||||||
# CREATE DATABASE writefreely;
|
# CREATE DATABASE writefreely;
|
||||||
#
|
#
|
||||||
# 2) Import the schema with:
|
# 2) Configure your blog
|
||||||
mysql -u YOURUSERNAME -p writefreely < schema.sql
|
|
||||||
|
|
||||||
# 3) Configure your blog
|
|
||||||
./writefreely --config
|
./writefreely --config
|
||||||
|
|
||||||
|
# 3) Import the schema with:
|
||||||
|
./writefreely --init-db
|
||||||
|
|
||||||
# 4) Generate data encryption keys
|
# 4) Generate data encryption keys
|
||||||
./writefreely --gen-keys
|
./writefreely --gen-keys
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ Ready to hack on your site? Here's a quick overview.
|
||||||
go get github.com/writeas/writefreely/cmd/writefreely
|
go get github.com/writeas/writefreely/cmd/writefreely
|
||||||
```
|
```
|
||||||
|
|
||||||
Create your database, import the schema, and configure your site [as shown above](#quick-start). Then generate the remaining files you'll need:
|
Configure your site, create your database, and import the schema [as shown above](#quick-start). Then generate the remaining files you'll need:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make install # Generates encryption keys; installs LESS compiler
|
make install # Generates encryption keys; installs LESS compiler
|
||||||
|
|
41
app.go
41
app.go
|
@ -6,10 +6,12 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
_ "github.com/go-sql-driver/mysql"
|
_ "github.com/go-sql-driver/mysql"
|
||||||
"html/template"
|
"html/template"
|
||||||
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -126,6 +128,7 @@ func Serve() {
|
||||||
createConfig := flag.Bool("create-config", false, "Creates a basic configuration and exits")
|
createConfig := flag.Bool("create-config", false, "Creates a basic configuration and exits")
|
||||||
doConfig := flag.Bool("config", false, "Run the configuration process")
|
doConfig := flag.Bool("config", false, "Run the configuration process")
|
||||||
genKeys := flag.Bool("gen-keys", false, "Generate encryption and authentication keys")
|
genKeys := flag.Bool("gen-keys", false, "Generate encryption and authentication keys")
|
||||||
|
createSchema := flag.Bool("init-db", false, "Initialize app database")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
debugging = *debugPtr
|
debugging = *debugPtr
|
||||||
|
@ -186,6 +189,44 @@ func Serve() {
|
||||||
}
|
}
|
||||||
|
|
||||||
os.Exit(errStatus)
|
os.Exit(errStatus)
|
||||||
|
} else if *createSchema {
|
||||||
|
log.Info("Loading configuration...")
|
||||||
|
cfg, err := config.Load()
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Unable to load configuration: %v", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
app.cfg = cfg
|
||||||
|
connectToDatabase(app)
|
||||||
|
defer shutdown(app)
|
||||||
|
|
||||||
|
schema, err := ioutil.ReadFile("schema.sql")
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Unable to load schema.sql: %v", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
tblReg := regexp.MustCompile("CREATE TABLE (IF NOT EXISTS )?`([a-z_]+)`")
|
||||||
|
|
||||||
|
queries := strings.Split(string(schema), ";\n")
|
||||||
|
for _, q := range queries {
|
||||||
|
if strings.TrimSpace(q) == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
parts := tblReg.FindStringSubmatch(q)
|
||||||
|
if len(parts) >= 3 {
|
||||||
|
log.Info("Creating table %s...", parts[2])
|
||||||
|
} else {
|
||||||
|
log.Info("Creating table ??? (Weird query) No match in: %v", parts)
|
||||||
|
}
|
||||||
|
_, err = app.db.Exec(q)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("%s", err)
|
||||||
|
} else {
|
||||||
|
log.Info("Created.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Info("Initializing...")
|
log.Info("Initializing...")
|
||||||
|
|
Loading…
Reference in New Issue