[add] load application from bin data

This commit is contained in:
Max 2023-04-24 11:58:10 +08:00
parent afa55d98cd
commit 0c438d088a
5 changed files with 288 additions and 111 deletions

File diff suppressed because one or more lines are too long

View file

@ -3,6 +3,7 @@ package data
import ( import (
"bytes" "bytes"
"compress/gzip" "compress/gzip"
"io"
"os" "os"
"strings" "strings"
@ -65,6 +66,21 @@ func Read(name string) ([]byte, error) {
return Asset(name) return Asset(name)
} }
// ReadApp read app from bin
func ReadApp() (io.Reader, error) {
asset, err := yaoReleaseAppYazBytes()
if err != nil {
return nil, err
}
return bytes.NewBuffer(asset), nil
}
// RemoveApp remove app from bin
func RemoveApp() {
_yaoReleaseAppYaz = []byte{}
delete(_bindata, "yao/release/app.yaz")
}
// ReplaceXGenIndex bindata file // ReplaceXGenIndex bindata file
func replaceXGenIndex(search, replace string) error { func replaceXGenIndex(search, replace string) error {

View file

@ -13,6 +13,7 @@ import (
"github.com/yaoapp/yao/cert" "github.com/yaoapp/yao/cert"
"github.com/yaoapp/yao/config" "github.com/yaoapp/yao/config"
"github.com/yaoapp/yao/connector" "github.com/yaoapp/yao/connector"
"github.com/yaoapp/yao/data"
"github.com/yaoapp/yao/flow" "github.com/yaoapp/yao/flow"
"github.com/yaoapp/yao/fs" "github.com/yaoapp/yao/fs"
"github.com/yaoapp/yao/i18n" "github.com/yaoapp/yao/i18n"
@ -226,15 +227,35 @@ func loadApp(root string) error {
var err error var err error
var app application.Application var app application.Application
if root == "bin:application.yaz" { if share.BUILDIN {
app, err = application.OpenFromYaz(root, pack.Cipher) // Load app from Bin
file, err := os.Executable()
if err != nil { if err != nil {
return err return err
} }
// Load from cache
app, err := application.OpenFromYazCache(file, pack.Cipher)
if err != nil {
// load from bin
reader, err := data.ReadApp()
if err != nil {
return err
}
app, err = application.OpenFromYaz(reader, file, pack.Cipher) // Load app from Bin
if err != nil {
return err
}
}
application.Load(app) application.Load(app)
data.RemoveApp()
} else if strings.HasSuffix(root, ".yaz") { } else if strings.HasSuffix(root, ".yaz") {
app, err = application.OpenFromYaz(root, pack.Cipher) // Load app from .yaz file app, err = application.OpenFromYazFile(root, pack.Cipher) // Load app from .yaz file
if err != nil { if err != nil {
return err return err
} }

View file

@ -21,7 +21,6 @@ import (
"github.com/yaoapp/yao/config" "github.com/yaoapp/yao/config"
"github.com/yaoapp/yao/fs" "github.com/yaoapp/yao/fs"
"github.com/yaoapp/yao/helper" "github.com/yaoapp/yao/helper"
"github.com/yaoapp/yao/pack"
"github.com/yaoapp/yao/runtime" "github.com/yaoapp/yao/runtime"
"github.com/yaoapp/yao/share" "github.com/yaoapp/yao/share"
) )
@ -34,14 +33,34 @@ func Prepare(t *testing.T, cfg config.Config) {
var app application.Application var app application.Application
var err error var err error
if root == "bin:application.pkg" { // if share.BUILDIN {
app, err = application.OpenFromBin(root, pack.Cipher) // Load app from Bin
if err != nil { // file, err := os.Executable()
t.Fatal(err) // if err != nil {
} // t.Fatal(err)
application.Load(app) // }
return
} // // Load from cache
// app, err := application.OpenFromYazCache(file, pack.Cipher)
// if err != nil {
// // load from bin
// reader, err := data.ReadApp()
// if err != nil {
// t.Fatal(err)
// }
// app, err = application.OpenFromYaz(reader, file, pack.Cipher) // Load app from Bin
// if err != nil {
// t.Fatal(err)
// }
// }
// application.Load(app)
// data.RemoveApp()
// return
// }
app, err = application.OpenFromDisk(root) // Load app from Disk app, err = application.OpenFromDisk(root) // Load app from Disk
if err != nil { if err != nil {

BIN
yao/release/app.yaz Normal file

Binary file not shown.