summaryrefslogtreecommitdiff
path: root/src/cmd/export/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/export/main.go')
-rw-r--r--src/cmd/export/main.go75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/cmd/export/main.go b/src/cmd/export/main.go
new file mode 100644
index 0000000..1d39bc7
--- /dev/null
+++ b/src/cmd/export/main.go
@@ -0,0 +1,75 @@
+package main
+
+import (
+ "context"
+
+ cfgpkg "dev.mediocregopher.com/mediocre-blog.git/src/cfg"
+ "dev.mediocregopher.com/mediocre-blog.git/src/gmi"
+ "dev.mediocregopher.com/mediocre-blog.git/src/http"
+ "dev.mediocregopher.com/mediocre-blog.git/src/post"
+ "dev.mediocregopher.com/mediocre-blog.git/src/render"
+ "dev.mediocregopher.com/mediocre-go-lib.git/mlog"
+)
+
+func main() {
+ var (
+ ctx = context.Background()
+ cfg = cfgpkg.NewBlogCfg(cfgpkg.Params{})
+ dataDir cfgpkg.DataDir
+ httpParams http.Params
+ gmiParams gmi.Params
+ )
+
+ dataDir.SetupCfg(cfg)
+ defer dataDir.Close()
+
+ httpParams.SetupCfg(cfg)
+ gmiParams.SetupCfg(cfg)
+
+ exportDirPath := cfg.String("export-dir-path", "", "Directory to export into")
+
+ // initialization
+ err := cfg.Init(ctx)
+
+ logger := mlog.NewLogger(nil)
+ defer logger.Close()
+
+ logger.Info(ctx, "process started")
+ defer logger.Info(ctx, "process exiting")
+
+ if err != nil {
+ logger.Fatal(ctx, "initializing", err)
+ }
+
+ if *exportDirPath == "" {
+ logger.FatalString(ctx, "--export-dir-path is required")
+ }
+
+ postSQLDB, err := post.NewSQLDB(dataDir)
+ if err != nil {
+ logger.Fatal(ctx, "initializing sql db for post data", err)
+ }
+ defer postSQLDB.Close()
+
+ var (
+ urlBuilder = render.NewURLBuilder(
+ gmiParams.PublicURL,
+ httpParams.PublicURL,
+ gmiParams.PublicURL,
+ )
+ postStore = post.NewStore(postSQLDB)
+ //postAssetStore = asset.NewStore(postSQLDB)
+ //postDraftStore = post.NewDraftStore(postSQLDB)
+ )
+
+ err = exportPosts(
+ ctx,
+ logger.WithNamespace("posts"),
+ postStore,
+ urlBuilder,
+ *exportDirPath,
+ )
+ if err != nil {
+ logger.Fatal(ctx, "Failed to export post data", err)
+ }
+}