1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
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/post/asset"
"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)
}
err = exportAssets(
ctx,
logger.WithNamespace("assets"),
postAssetStore,
*exportDirPath,
)
if err != nil {
logger.Fatal(ctx, "Failed to export asset data", err)
}
}
|