forked from Mxmilu666/AnythingAtHome-Golang
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
107 lines (90 loc) · 2.76 KB
/
main.go
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package main
import (
"context"
"fmt"
"os"
"open93athome-golang/source"
"open93athome-golang/source/Helper"
"open93athome-golang/source/logger"
)
func main() {
fmt.Printf("Open93AtHome-Golang v0.0.1 \n")
logger.InitLogger(logger.DEBUG, "[93@home-Go] ")
logger.Info("Starting...")
configFile := "config.yml"
// 检查配置文件是否存在,如果不存在则创建默认配置文件
if _, err := os.Stat(configFile); os.IsNotExist(err) {
err := source.CreateDefaultConfig(configFile)
if err != nil {
logger.Error("Error creating default config file: %v", err)
return
}
logger.Info("Created default config file. Please edit it with your configuration.")
return
}
// 读取配置文件
config, err := source.ReadConfig(configFile)
if err != nil {
logger.Error("Error reading config file: %v", err)
return
}
// 初始化数据库
uri := fmt.Sprintf("mongodb://%s:%s@%s:%d",
config.Database.Username,
config.Database.Password,
config.Database.Address,
config.Database.Port,
)
database, err := source.SetupDatabase(uri)
if err != nil {
logger.Error("Error setting up database: %v", err)
return
}
defer func() {
if err = database.Disconnect(context.TODO()); err != nil {
logger.Error("Error disconnecting from database: %v", err)
}
}()
// 确保需要的集合存在
err = source.EnsureCollection(database, "93athome", "cluster")
if err != nil {
logger.Error("Error ensuring clusters collection: %v", err)
return
}
err = source.EnsureCollection(database, "93athome", "files")
if err != nil {
logger.Error("Error ensuring files collection: %v", err)
return
}
// 输出同步源的数量和详细信息
logger.Info("Number of sync sources: %d", len(config.SyncSources))
for i, syncSource := range config.SyncSources {
logger.Info("Sync Source %d [%s]: URL=%s, Branch=%s, DestDir=%s", i+1, syncSource.NAME, syncSource.URL, syncSource.Branch, syncSource.DestDir)
// Clone or pull the Git repo
err := source.CloneOrPullRepo(syncSource.URL, syncSource.Branch, syncSource.DestDir)
if err != nil {
logger.Error("Error syncing repository %s: %v", syncSource.URL, err)
return
}
// 同步文件并将文件信息写入 MongoDB
err = source.SyncFiles(database, syncSource)
if err != nil {
logger.Error("Error syncing files: %v", err)
return
}
}
// 获取 clusters 和 files 数据
clusters, err := source.GetDocuments[source.Cluster](database, "93athome", "cluster", nil, 0)
if err != nil {
logger.Error("Error getting cluster: %v", err)
return
}
// 输出 clusters 信息
for _, cluster := range clusters {
logger.Info("Cluster: %+v", cluster)
}
// 初始化 JWT
Helper.GetInstance()
// 启动服务器
source.SetupServer(config.Server.Address, fmt.Sprintf("%d", config.Server.Port), database)
}