Skip to content

Commit 2e9d0fc

Browse files
committed
依赖检测
1 parent 84d20b9 commit 2e9d0fc

File tree

3 files changed

+109
-130
lines changed

3 files changed

+109
-130
lines changed

controllers/ManagerController.go

Lines changed: 1 addition & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -39,86 +39,6 @@ func (this *ManagerController) Prepare() {
3939
}
4040
}
4141

42-
var (
43-
installed []installedDependency
44-
lastCheckedAt *time.Time
45-
)
46-
47-
type installedDependency struct {
48-
Name string // 依赖名称
49-
IsInstalled bool // 是否已安装
50-
Message string // 相关信息
51-
Error string
52-
CheckedAt string // 上次检测时间
53-
}
54-
55-
func init() {
56-
go checkInstalledDependencyData()
57-
}
58-
59-
func checkInstalledDependencyData() {
60-
var (
61-
err error
62-
dateLayout = "2006-01-02 15:04:05"
63-
checkInstalled []installedDependency
64-
)
65-
66-
if lastCheckedAt != nil && time.Now().Unix()-lastCheckedAt.Unix() <= 60 {
67-
return
68-
}
69-
70-
errCalibre := "-"
71-
if err = utils.IsInstalledCalibre("ebook-convert"); err != nil {
72-
errCalibre = err.Error()
73-
}
74-
checkInstalled = append(checkInstalled, installedDependency{
75-
Name: "calibre",
76-
IsInstalled: err == nil,
77-
Error: errCalibre,
78-
Message: "calibre 用于将书籍转换成PDF、epub和mobi ==> <a class='text-danger' target='_blank' href='https://www.bookstack.cn/read/help/Ubuntu.md'>安装教程</a>",
79-
CheckedAt: time.Now().Format(dateLayout),
80-
})
81-
82-
errGit := "-"
83-
if err = utils.IsInstalledGit(); err != nil {
84-
errGit = err.Error()
85-
}
86-
checkInstalled = append(checkInstalled, installedDependency{
87-
Name: "git",
88-
IsInstalled: err == nil,
89-
Error: errGit,
90-
Message: "git,用于克隆项目",
91-
CheckedAt: time.Now().Format(dateLayout),
92-
})
93-
94-
errChrome := "-"
95-
if err = utils.IsInstalledChrome(beego.AppConfig.DefaultString("chrome", "chrome")); err != nil {
96-
errChrome = err.Error()
97-
}
98-
checkInstalled = append(checkInstalled, installedDependency{
99-
Name: "chrome",
100-
IsInstalled: err == nil,
101-
Error: errChrome,
102-
Message: "chrome浏览器,即谷歌浏览器,或者chromium-browser,用于渲染markdown内容为HTML。",
103-
CheckedAt: time.Now().Format(dateLayout),
104-
})
105-
106-
errPuppeteer := "-"
107-
if err = utils.IsInstalledPuppetter(beego.AppConfig.DefaultInt("httpport", 8181)); err != nil {
108-
errPuppeteer = err.Error()
109-
}
110-
checkInstalled = append(checkInstalled, installedDependency{
111-
Name: "puppeteer",
112-
IsInstalled: err == nil,
113-
Error: errPuppeteer,
114-
Message: "puppeteer, node.js的模块,用于将markdown渲染为HTML以及生成电子书封面。 <a class='text-danger' target='_blank' href='https://www.bookstack.cn/read/help/Ubuntu.md'>安装教程</a>",
115-
CheckedAt: time.Now().Format(dateLayout),
116-
})
117-
installed = checkInstalled
118-
t := time.Now()
119-
lastCheckedAt = &t
120-
}
121-
12242
func (this *ManagerController) Index() {
12343
this.TplName = "manager/index.html"
12444
this.Data["Model"] = models.NewDashboard().Query()
@@ -127,8 +47,7 @@ func (this *ManagerController) Index() {
12747
"keywords": "仪表盘",
12848
"description": this.Sitename + "专注于文档在线写作、协作、分享、阅读与托管,让每个人更方便地发布、分享和获得知识。",
12949
})
130-
go checkInstalledDependencyData()
131-
this.Data["Installed"] = installed
50+
this.Data["Installed"] = utils.GetInstalledDependencies()
13251
this.Data["IsDashboard"] = true
13352
}
13453

utils/checkInstalledDependencies.go

Lines changed: 0 additions & 48 deletions
This file was deleted.

utils/dependency.go

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
package utils
2+
3+
import (
4+
"time"
5+
6+
"github.com/astaxie/beego"
7+
)
8+
9+
var installedDependencies = make(map[string]installedDependency)
10+
11+
type installedDependency struct {
12+
Name string // 依赖名称
13+
IsInstalled bool // 是否已安装
14+
Message string // 相关信息
15+
Error string
16+
CheckedAt string // 上次检测时间
17+
}
18+
19+
func init() {
20+
go checkInstalledDependencyData()
21+
}
22+
23+
func GetInstalledDependencies() map[string]installedDependency {
24+
return installedDependencies
25+
}
26+
27+
func checkInstalledDependencyData() {
28+
var (
29+
err error
30+
dateLayout = "2006-01-02 15:04:05"
31+
)
32+
33+
nameCalibre := "calibre"
34+
errCalibre := "-"
35+
if err = IsInstalledCalibre("ebook-convert"); err != nil {
36+
errCalibre = err.Error()
37+
}
38+
installedDependencies[nameCalibre] = installedDependency{
39+
Name: nameCalibre,
40+
IsInstalled: err == nil,
41+
Error: errCalibre,
42+
Message: "calibre 用于将书籍转换成PDF、epub和mobi ==> <a class='text-danger' target='_blank' href='https://www.bookstack.cn/read/help/Ubuntu.md'>安装教程</a>。如果未安装该模块,则无法生成电子书和提供电子书下载。",
43+
CheckedAt: time.Now().Format(dateLayout),
44+
}
45+
46+
errGit := "-"
47+
nameGit := "git"
48+
if err = IsInstalledGit(); err != nil {
49+
errGit = err.Error()
50+
}
51+
installedDependencies[nameGit] = installedDependency{
52+
Name: nameGit,
53+
IsInstalled: err == nil,
54+
Error: errGit,
55+
Message: "git,用于git clone方式导入项目。如果未安装该模块,则无法使用该方式导入项目。",
56+
CheckedAt: time.Now().Format(dateLayout),
57+
}
58+
59+
errChrome := "-"
60+
nameChrome := "chrome"
61+
if err = IsInstalledChrome(beego.AppConfig.DefaultString("chrome", "chrome")); err != nil {
62+
errChrome = err.Error()
63+
}
64+
installedDependencies[nameChrome] = installedDependency{
65+
Name: nameChrome,
66+
IsInstalled: err == nil,
67+
Error: errChrome,
68+
Message: "chrome浏览器,即谷歌浏览器,或者chromium-browser,用于渲染markdown内容为HTML。",
69+
CheckedAt: time.Now().Format(dateLayout),
70+
}
71+
72+
namePuppeteer := "puppeteer"
73+
errPuppeteer := "-"
74+
if err = IsInstalledPuppetter(); err != nil {
75+
errPuppeteer = err.Error()
76+
}
77+
installedDependencies[namePuppeteer] = installedDependency{
78+
Name: "puppeteer",
79+
IsInstalled: err == nil,
80+
Error: errPuppeteer,
81+
Message: "puppeteer, node.js的模块,用于将markdown渲染为HTML以及生成电子书封面。 <a class='text-danger' target='_blank' href='https://www.bookstack.cn/read/help/Ubuntu.md'>安装教程</a>",
82+
CheckedAt: time.Now().Format(dateLayout),
83+
}
84+
}
85+
86+
// IsInstalledPuppetter 是否安装了puppeteer
87+
func IsInstalledPuppetter() (err error) {
88+
_, err = ExecCommand("npm", []string{"ls", "puppeteer"})
89+
return
90+
}
91+
92+
// IsInstalledGit 是否安装了Git
93+
func IsInstalledGit() (err error) {
94+
_, err = ExecCommand("git", []string{"--version"})
95+
return
96+
}
97+
98+
// IsInstalledChrome 是否安装了Chrome
99+
func IsInstalledChrome(chrome string) (err error) {
100+
_, err = ExecCommand(chrome, []string{"--version"})
101+
return
102+
}
103+
104+
// IsInstalledCalibre 是否安装了calibre
105+
func IsInstalledCalibre(calibre string) (err error) {
106+
_, err = ExecCommand(calibre, []string{"--version"})
107+
return
108+
}

0 commit comments

Comments
 (0)