Use a general approach to access custom/static/builtin assets (#24022)
The idea is to use a Layered Asset File-system (modules/assetfs/layered.go) For example: when there are 2 layers: "custom", "builtin", when access to asset "my/page.tmpl", the Layered Asset File-system will first try to use "custom" assets, if not found, then use "builtin" assets. This approach will hugely simplify a lot of code, make them testable. Other changes: * Simplify the AssetsHandlerFunc code * Simplify the `gitea embedded` sub-command code --------- Co-authored-by: Jason Song <i@wolfogre.com> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
parent
42919ccb7c
commit
50a72e7a83
36 changed files with 689 additions and 1055 deletions
|
@ -13,7 +13,6 @@ import (
|
|||
"code.gitea.io/gitea/modules/options"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/translation/i18n"
|
||||
"code.gitea.io/gitea/modules/watcher"
|
||||
|
||||
"golang.org/x/text/language"
|
||||
)
|
||||
|
@ -58,7 +57,7 @@ func InitLocales(ctx context.Context) {
|
|||
|
||||
refreshLocales := func() {
|
||||
i18n.ResetDefaultLocales()
|
||||
localeNames, err := options.Dir("locale")
|
||||
localeNames, err := options.AssetFS().ListFiles("locale", true)
|
||||
if err != nil {
|
||||
log.Fatal("Failed to list locale files: %v", err)
|
||||
}
|
||||
|
@ -118,13 +117,10 @@ func InitLocales(ctx context.Context) {
|
|||
})
|
||||
|
||||
if !setting.IsProd {
|
||||
watcher.CreateWatcher(ctx, "Locales", &watcher.CreateWatcherOpts{
|
||||
PathsCallback: options.WalkLocales,
|
||||
BetweenCallback: func() {
|
||||
lock.Lock()
|
||||
defer lock.Unlock()
|
||||
refreshLocales()
|
||||
},
|
||||
go options.AssetFS().WatchLocalChanges(ctx, func() {
|
||||
lock.Lock()
|
||||
defer lock.Unlock()
|
||||
refreshLocales()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue