Merge pull request #377 from trheyi/main

[add]  load application from bin data
This commit is contained in:
Max 2023-04-24 11:59:20 +08:00 committed by GitHub
commit bc68f53c0d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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 (
"bytes"
"compress/gzip"
"io"
"os"
"strings"
@ -65,6 +66,21 @@ func Read(name string) ([]byte, error) {
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
func replaceXGenIndex(search, replace string) error {

View file

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

View file

@ -21,7 +21,6 @@ import (
"github.com/yaoapp/yao/config"
"github.com/yaoapp/yao/fs"
"github.com/yaoapp/yao/helper"
"github.com/yaoapp/yao/pack"
"github.com/yaoapp/yao/runtime"
"github.com/yaoapp/yao/share"
)
@ -34,14 +33,34 @@ func Prepare(t *testing.T, cfg config.Config) {
var app application.Application
var err error
if root == "bin:application.pkg" {
app, err = application.OpenFromBin(root, pack.Cipher) // Load app from Bin
if err != nil {
t.Fatal(err)
}
application.Load(app)
return
}
// if share.BUILDIN {
// file, err := os.Executable()
// if err != nil {
// t.Fatal(err)
// }
// // 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
if err != nil {

BIN
yao/release/app.yaz Normal file

Binary file not shown.