added dump/restore and fixed title stuff

This commit is contained in:
ston1th 2018-10-16 21:26:39 +02:00
commit 8d3187b160
13 changed files with 200627 additions and 189988 deletions

View file

@ -5,6 +5,7 @@ package cmd
import (
"git.giftfish.de/ston1th/godrop/v2"
"git.giftfish.de/ston1th/gowiki/pkg/core"
"git.giftfish.de/ston1th/gowiki/pkg/db"
"git.giftfish.de/ston1th/gowiki/pkg/log"
"git.giftfish.de/ston1th/gowiki/pkg/server"
"github.com/urfave/cli"
@ -18,13 +19,18 @@ import (
const (
defDataDir = "/var/lib/gowiki"
defListen = "127.0.0.1:8090"
defListen = "127.0.0.1:8080"
defLogFile = "gowiki.log"
defRunUser = "wiki"
defRunGroup = "wiki"
)
var (
conf core.Config
dumpFile string
)
func initServer(conf core.Config) (err error) {
dropCfg := godrop.Config{
User: conf.User,
@ -70,11 +76,6 @@ func initServer(conf core.Config) (err error) {
return
}
var (
verbose bool
conf core.Config
)
func Run(version string) {
app := cli.NewApp()
app.Name = "gowiki"
@ -95,31 +96,67 @@ func Run(version string) {
},
{
Name: "dump",
Usage: "create a json dump of all articles in the data directory (dump is written to stdout) gowiki needs to be stopped",
Usage: "create a json dump of all articles in the data directory (gowiki needs to be stopped)",
Flags: defaultFlags(dumpRestoreFlags()),
Action: func(c *cli.Context) error {
if err := os.Chdir(conf.DataDir); err != nil {
var (
file = os.Stdout
err error
)
if dumpFile != "-" {
file, err = os.OpenFile(dumpFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0640)
if err != nil {
stdlog.Fatal("dump: ", err)
}
}
if err = os.Chdir(conf.DataDir); err != nil {
stdlog.Fatal("dump: ", err)
}
DB, err := db.New(conf.DataDir)
if err != nil {
stdlog.Fatal("dump: ", err)
}
if err = DB.Dump(file); err != nil {
stdlog.Fatal("dump: ", err)
}
file.Close()
err = DB.Close()
if err != nil {
stdlog.Fatal("dump: ", err)
}
//TODO
//if err := db.Dump(blevePath, verbose); err != nil {
// stdlog.Fatal("dump: ", err)
//}
return nil
},
},
{
Name: "restore",
Usage: "restore a json dump to the data directory (dump is read from stdin) gowiki needs to be stopped",
Usage: "restore a json dump to the data directory (gowiki needs to be stopped)",
Flags: defaultFlags(dumpRestoreFlags()),
Action: func(c *cli.Context) error {
if err := os.Chdir(conf.DataDir); err != nil {
var (
file = os.Stdin
err error
)
if dumpFile != "-" {
file, err = os.Open(dumpFile)
if err != nil {
stdlog.Fatal("dump: ", err)
}
}
if err = os.Chdir(conf.DataDir); err != nil {
stdlog.Fatal("restore: ", err)
}
DB, err := db.New(conf.DataDir)
if err != nil {
stdlog.Fatal("restore: ", err)
}
if err = DB.Restore(file); err != nil {
stdlog.Fatal("restore: ", err)
}
file.Close()
err = DB.Close()
if err != nil {
stdlog.Fatal("restore: ", err)
}
//TODO
//if err := db.Restore(blevePath, verbose); err != nil {
// stdlog.Fatal("restore: ", err)
//}
return nil
},
},
@ -178,10 +215,11 @@ func serverFlags() []cli.Flag {
func dumpRestoreFlags() []cli.Flag {
return []cli.Flag{
cli.BoolFlag{
Name: "verbose, v",
Usage: "enable verbose mode",
Destination: &verbose,
cli.StringFlag{
Name: "file, f",
Value: "-",
Usage: "file to read/write dump (default stdin/stdout)",
Destination: &dumpFile,
},
}
}