Fix: embed static file not work (introduced in #1107)

embed file system should be declared in main pkg
pull/1217/head
HFO4 2 years ago
parent 6451e4c903
commit 0a18d984ab

@ -1 +1 @@
Subproject commit 3d749b7bbe0657b18be8d8d6a66539378de03008 Subproject commit 907f86550d759afb9b156515f25e60fff5a1d29a

@ -1,6 +1,7 @@
package bootstrap package bootstrap
import ( import (
"embed"
model "github.com/cloudreve/Cloudreve/v3/models" model "github.com/cloudreve/Cloudreve/v3/models"
"github.com/cloudreve/Cloudreve/v3/models/scripts" "github.com/cloudreve/Cloudreve/v3/models/scripts"
"github.com/cloudreve/Cloudreve/v3/pkg/aria2" "github.com/cloudreve/Cloudreve/v3/pkg/aria2"
@ -16,7 +17,7 @@ import (
) )
// Init 初始化启动 // Init 初始化启动
func Init(path string) { func Init(path string, statics embed.FS) {
InitApplication() InitApplication()
conf.Init(path) conf.Init(path)
// Debug 关闭时,切换为生产模式 // Debug 关闭时,切换为生产模式
@ -79,7 +80,7 @@ func Init(path string) {
{ {
"master", "master",
func() { func() {
InitStatic() InitStatic(statics)
}, },
}, },
{ {

@ -19,8 +19,6 @@ import (
const StaticFolder = "statics" const StaticFolder = "statics"
var StaticEmbed embed.FS
type GinFS struct { type GinFS struct {
FS http.FileSystem FS http.FileSystem
} }
@ -47,13 +45,13 @@ func (b *GinFS) Exists(prefix string, filepath string) bool {
} }
// InitStatic 初始化静态资源文件 // InitStatic 初始化静态资源文件
func InitStatic() { func InitStatic(statics embed.FS) {
if util.Exists(util.RelativePath(StaticFolder)) { if util.Exists(util.RelativePath(StaticFolder)) {
util.Log().Info("检测到 statics 目录存在,将使用此目录下的静态资源文件") util.Log().Info("检测到 statics 目录存在,将使用此目录下的静态资源文件")
StaticFS = static.LocalFile(util.RelativePath("statics"), false) StaticFS = static.LocalFile(util.RelativePath("statics"), false)
} else { } else {
// 初始化静态资源 // 初始化静态资源
embedFS, err := fs.Sub(StaticEmbed, "assets/build") embedFS, err := fs.Sub(statics, "assets/build")
if err != nil { if err != nil {
util.Log().Panic("无法初始化静态资源, %s", err) util.Log().Panic("无法初始化静态资源, %s", err)
} }
@ -98,9 +96,9 @@ func InitStatic() {
} }
// Eject 抽离内置静态资源 // Eject 抽离内置静态资源
func Eject() { func Eject(statics embed.FS) {
// 初始化静态资源 // 初始化静态资源
embedFS, err := fs.Sub(StaticEmbed, "assets/build") embedFS, err := fs.Sub(statics, "assets/build")
if err != nil { if err != nil {
util.Log().Panic("无法初始化静态资源, %s", err) util.Log().Panic("无法初始化静态资源, %s", err)
} }

@ -17,20 +17,20 @@ var (
) )
//go:embed assets/build //go:embed assets/build
var StaticEmbed embed.FS var staticEmbed embed.FS
func init() { func init() {
flag.StringVar(&confPath, "c", util.RelativePath("conf.ini"), "配置文件路径") flag.StringVar(&confPath, "c", util.RelativePath("conf.ini"), "配置文件路径")
flag.BoolVar(&isEject, "eject", false, "导出内置静态资源") flag.BoolVar(&isEject, "eject", false, "导出内置静态资源")
flag.StringVar(&scriptName, "database-script", "", "运行内置数据库助手脚本") flag.StringVar(&scriptName, "database-script", "", "运行内置数据库助手脚本")
flag.Parse() flag.Parse()
bootstrap.Init(confPath) bootstrap.Init(confPath, staticEmbed)
} }
func main() { func main() {
if isEject { if isEject {
// 开始导出内置静态资源文件 // 开始导出内置静态资源文件
bootstrap.Eject() bootstrap.Eject(staticEmbed)
return return
} }

Loading…
Cancel
Save