9c533a7ff8
- redirect `/pay/checkout-counter/:trade_id` to `/cashier/:trade_id` - add `/pay/checkout-counter-resp/:trade_id` for checkout JSON payload - remove embedded `static` release and keep `www` as the web bundle source - regenerate PWA/www assets and move chain icons to `/www/images/chains`
108 lines
1.9 KiB
Go
108 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"embed"
|
|
"fmt"
|
|
"io"
|
|
"io/fs"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/GMWalletApp/epusdt/command"
|
|
"github.com/gookit/color"
|
|
)
|
|
|
|
//go:embed all:www
|
|
var wwwDir embed.FS
|
|
|
|
func executableDir() (string, error) {
|
|
exePath, err := os.Executable()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
exePath, err = filepath.EvalSymlinks(exePath)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return filepath.Dir(exePath), nil
|
|
}
|
|
|
|
func extractEmbeddedDir(src embed.FS, embeddedRoot, dstRoot string) error {
|
|
sub, err := fs.Sub(src, embeddedRoot)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return fs.WalkDir(sub, ".", func(path string, d fs.DirEntry, err error) error {
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
dstPath := filepath.Join(dstRoot, path)
|
|
|
|
if d.IsDir() {
|
|
return os.MkdirAll(dstPath, 0o755)
|
|
}
|
|
|
|
if err := os.MkdirAll(filepath.Dir(dstPath), 0o755); err != nil {
|
|
return err
|
|
}
|
|
|
|
in, err := sub.Open(path)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer in.Close()
|
|
|
|
out, err := os.OpenFile(dstPath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0o644)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer out.Close()
|
|
|
|
_, err = io.Copy(out, in)
|
|
return err
|
|
})
|
|
}
|
|
|
|
func releaseStatic(fs embed.FS, target string) (string, error) {
|
|
baseDir, err := executableDir()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
targetDir := filepath.Join(baseDir, target)
|
|
|
|
if err := os.RemoveAll(targetDir); err != nil {
|
|
return "", err
|
|
}
|
|
|
|
if err := os.MkdirAll(targetDir, 0o755); err != nil {
|
|
return "", err
|
|
}
|
|
|
|
if err := extractEmbeddedDir(fs, target, targetDir); err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return targetDir, nil
|
|
}
|
|
|
|
func main() {
|
|
wwwwPath, err := releaseStatic(wwwDir, "www")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
fmt.Println("www released to:", wwwwPath)
|
|
|
|
defer func() {
|
|
if err := recover(); err != nil {
|
|
color.Error.Println("[Start Server Err!!!] ", err)
|
|
}
|
|
}()
|
|
if err := command.Execute(); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|