2016-12-06 18:58:31 +01:00
// Copyright 2016 The Gitea Authors. All rights reserved.
2022-11-27 13:20:29 -05:00
// SPDX-License-Identifier: MIT
2016-12-06 18:58:31 +01:00
2021-08-24 11:47:09 -05:00
//go:build !bindata
2016-12-06 18:58:31 +01:00
package templates
import (
"html/template"
2022-08-28 10:43:25 +01:00
"io/fs"
2021-01-05 21:05:40 +08:00
"os"
"path/filepath"
2019-11-07 10:34:28 -03:00
texttmpl "text/template"
2016-12-06 18:58:31 +01:00
"code.gitea.io/gitea/modules/setting"
)
var (
2019-11-07 10:34:28 -03:00
subjectTemplates = texttmpl . New ( "" )
bodyTemplates = template . New ( "" )
2016-12-06 18:58:31 +01:00
)
2021-01-05 21:05:40 +08:00
// GetAsset returns asset content via name
func GetAsset ( name string ) ( [ ] byte , error ) {
2021-09-22 13:38:34 +08:00
bs , err := os . ReadFile ( filepath . Join ( setting . CustomPath , name ) )
2021-01-05 21:05:40 +08:00
if err != nil && ! os . IsNotExist ( err ) {
return nil , err
} else if err == nil {
return bs , nil
}
2021-09-22 13:38:34 +08:00
return os . ReadFile ( filepath . Join ( setting . StaticRootPath , name ) )
2021-01-05 21:05:40 +08:00
}
2022-10-07 22:02:24 +01:00
// GetAssetFilename returns the filename of the provided asset
func GetAssetFilename ( name string ) ( string , error ) {
filename := filepath . Join ( setting . CustomPath , name )
_ , err := os . Stat ( filename )
if err != nil && ! os . IsNotExist ( err ) {
return filename , err
} else if err == nil {
return filename , nil
}
filename = filepath . Join ( setting . StaticRootPath , name )
_ , err = os . Stat ( filename )
return filename , err
}
2022-08-28 10:43:25 +01:00
// walkTemplateFiles calls a callback for each template asset
func walkTemplateFiles ( callback func ( path , name string , d fs . DirEntry , err error ) error ) error {
if err := walkAssetDir ( filepath . Join ( setting . CustomPath , "templates" ) , true , callback ) ; err != nil && ! os . IsNotExist ( err ) {
return err
2019-11-07 10:34:28 -03:00
}
2022-08-28 10:43:25 +01:00
if err := walkAssetDir ( filepath . Join ( setting . StaticRootPath , "templates" ) , true , callback ) ; err != nil && ! os . IsNotExist ( err ) {
return err
2016-12-06 18:58:31 +01:00
}
2022-08-28 10:43:25 +01:00
return nil
}
2016-12-06 18:58:31 +01:00
2022-08-28 10:43:25 +01:00
// GetTemplateAssetNames returns list of template names
func GetTemplateAssetNames ( ) [ ] string {
tmpls := getDirTemplateAssetNames ( filepath . Join ( setting . CustomPath , "templates" ) )
tmpls2 := getDirTemplateAssetNames ( filepath . Join ( setting . StaticRootPath , "templates" ) )
return append ( tmpls , tmpls2 ... )
}
2016-12-06 18:58:31 +01:00
2022-08-28 10:43:25 +01:00
func walkMailerTemplates ( callback func ( path , name string , d fs . DirEntry , err error ) error ) error {
if err := walkAssetDir ( filepath . Join ( setting . StaticRootPath , "templates" , "mail" ) , false , callback ) ; err != nil && ! os . IsNotExist ( err ) {
return err
2016-12-06 18:58:31 +01:00
}
2022-08-28 10:43:25 +01:00
if err := walkAssetDir ( filepath . Join ( setting . CustomPath , "templates" , "mail" ) , false , callback ) ; err != nil && ! os . IsNotExist ( err ) {
return err
2020-11-28 02:42:08 +00:00
}
2022-08-28 10:43:25 +01:00
return nil
}
2016-12-06 18:58:31 +01:00
2022-08-28 10:43:25 +01:00
// BuiltinAsset will read the provided asset from the embedded assets
// (This always returns os.ErrNotExist)
func BuiltinAsset ( name string ) ( [ ] byte , error ) {
return nil , os . ErrNotExist
}
2016-12-06 18:58:31 +01:00
2022-08-28 10:43:25 +01:00
// BuiltinAssetNames returns the names of the embedded assets
// (This always returns nil)
func BuiltinAssetNames ( ) [ ] string {
return nil
2016-12-06 18:58:31 +01:00
}