@@ 29,7 29,7 @@ func main() {
)
env.DirBase = `testdata/example`
- env.DirPublic = `testdata`
+ env.DirPublic = `testdata/public`
env.Secret = `s3cret`
env.IsDevelopment = true
@@ 68,48 68,63 @@ func Sign(payload, secret []byte) (sign string) {
func New(env *Environment) (k *Karajo, err error) {
var logp = `New`
+ err = env.init()
+ if err != nil {
+ return nil, fmt.Errorf(`%s: %w`, logp, err)
+ }
+
k = &Karajo{
env: env,
}
- err = env.init()
+ mlog.SetPrefix(env.Name + `:`)
+
+ err = k.initMemfs()
if err != nil {
return nil, fmt.Errorf(`%s: %w`, logp, err)
}
- mlog.SetPrefix(env.Name + `:`)
+ err = k.initHttpd()
+ if err != nil {
+ return nil, fmt.Errorf(`%s: %w`, logp, err)
+ }
+
+ return k, nil
+}
+
+// initMemfs initialize the memory file system for serving the WUI and public
+// directory.
+func (k *Karajo) initMemfs() (err error) {
+ var logp = `initMemfs`
if memfsWww == nil {
- return nil, fmt.Errorf(`%s: empty embedded www`, logp)
+ return fmt.Errorf(`%s: empty embedded www`, logp)
}
- memfsWww.Opts.TryDirect = env.IsDevelopment
+ memfsWww.Opts.TryDirect = k.env.IsDevelopment
- if len(env.DirPublic) != 0 {
- var (
- opts = memfs.Options{
- Root: env.DirPublic,
- TryDirect: true,
- }
- memfsPublic *memfs.MemFS
- )
+ if len(k.env.DirPublic) == 0 {
+ return nil
+ }
- memfsPublic, err = memfs.New(&opts)
- if err != nil {
- return nil, fmt.Errorf(`%s: %w`, logp, err)
+ var (
+ opts = memfs.Options{
+ Root: k.env.DirPublic,
+ TryDirect: true,
}
+ memfsPublic *memfs.MemFS
+ )
- memfsWww = memfs.Merge(memfsWww, memfsPublic)
- memfsWww.Root.SysPath = env.DirPublic
- memfsWww.Opts.TryDirect = true
- }
-
- err = k.initHttpd()
+ memfsPublic, err = memfs.New(&opts)
if err != nil {
- return nil, fmt.Errorf(`%s: %w`, logp, err)
+ return fmt.Errorf(`%s: %w`, logp, err)
}
- return k, nil
+ memfsWww = memfs.Merge(memfsWww, memfsPublic)
+ memfsWww.Root.SysPath = k.env.DirPublic
+ memfsWww.Opts.TryDirect = true
+
+ return nil
}
// Start all the jobs and the HTTP server.