[add] pack & start command support license
This commit is contained in:
parent
95ff65d625
commit
082bcf57ff
7 changed files with 61 additions and 36 deletions
13
cmd/pack.go
13
cmd/pack.go
|
|
@ -11,9 +11,12 @@ import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"github.com/yaoapp/gou/application/yaz"
|
"github.com/yaoapp/gou/application/yaz"
|
||||||
"github.com/yaoapp/yao/config"
|
"github.com/yaoapp/yao/config"
|
||||||
|
"github.com/yaoapp/yao/pack"
|
||||||
)
|
)
|
||||||
|
|
||||||
var packOutput = ""
|
var packOutput = ""
|
||||||
|
var packLicense = ""
|
||||||
|
|
||||||
var packCmd = &cobra.Command{
|
var packCmd = &cobra.Command{
|
||||||
Use: "pack",
|
Use: "pack",
|
||||||
Short: L("Package the application"),
|
Short: L("Package the application"),
|
||||||
|
|
@ -65,7 +68,14 @@ var packCmd = &cobra.Command{
|
||||||
}
|
}
|
||||||
|
|
||||||
os.Remove(outputFile)
|
os.Remove(outputFile)
|
||||||
err = yaz.CompressTo(cfg.Root, outputFile)
|
if packLicense != "" {
|
||||||
|
pack.SetCipher(packLicense)
|
||||||
|
err = yaz.PackTo(cfg.Root, outputFile, pack.Cipher)
|
||||||
|
|
||||||
|
} else {
|
||||||
|
err = yaz.CompressTo(cfg.Root, outputFile)
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
color.Red(err.Error())
|
color.Red(err.Error())
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
|
@ -77,4 +87,5 @@ var packCmd = &cobra.Command{
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
packCmd.PersistentFlags().StringVarP(&packOutput, "output", "o", "", L("Output Directory"))
|
packCmd.PersistentFlags().StringVarP(&packOutput, "output", "o", "", L("Output Directory"))
|
||||||
|
packCmd.PersistentFlags().StringVarP(&packLicense, "license", "l", "", L("Pack with the license"))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
16
cmd/root.go
16
cmd/root.go
|
|
@ -9,12 +9,13 @@ import (
|
||||||
"github.com/yaoapp/kun/exception"
|
"github.com/yaoapp/kun/exception"
|
||||||
"github.com/yaoapp/yao/cmd/studio"
|
"github.com/yaoapp/yao/cmd/studio"
|
||||||
"github.com/yaoapp/yao/config"
|
"github.com/yaoapp/yao/config"
|
||||||
|
"github.com/yaoapp/yao/pack"
|
||||||
"github.com/yaoapp/yao/share"
|
"github.com/yaoapp/yao/share"
|
||||||
)
|
)
|
||||||
|
|
||||||
var appPath string
|
var appPath string
|
||||||
var envFile string
|
|
||||||
var yazFile string
|
var yazFile string
|
||||||
|
var licenseKey string
|
||||||
|
|
||||||
var lang = os.Getenv("YAO_LANG")
|
var lang = os.Getenv("YAO_LANG")
|
||||||
var langs = map[string]string{
|
var langs = map[string]string{
|
||||||
|
|
@ -130,7 +131,7 @@ func init() {
|
||||||
// rootCmd.SetHelpCommand(helpCmd)
|
// rootCmd.SetHelpCommand(helpCmd)
|
||||||
rootCmd.PersistentFlags().StringVarP(&appPath, "app", "a", "", L("Application directory"))
|
rootCmd.PersistentFlags().StringVarP(&appPath, "app", "a", "", L("Application directory"))
|
||||||
rootCmd.PersistentFlags().StringVarP(&yazFile, "file", "f", "", L("Application package file"))
|
rootCmd.PersistentFlags().StringVarP(&yazFile, "file", "f", "", L("Application package file"))
|
||||||
rootCmd.PersistentFlags().StringVarP(&envFile, "env", "e", "", L("Environment file"))
|
rootCmd.PersistentFlags().StringVarP(&licenseKey, "key", "k", "", L("Application license key"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execute 运行Root
|
// Execute 运行Root
|
||||||
|
|
@ -153,11 +154,7 @@ func Boot() {
|
||||||
root = r
|
root = r
|
||||||
}
|
}
|
||||||
|
|
||||||
if envFile != "" {
|
config.Conf = config.LoadFrom(filepath.Join(root, ".env"))
|
||||||
config.Conf = config.LoadFrom(envFile)
|
|
||||||
} else {
|
|
||||||
config.Conf = config.LoadFrom(filepath.Join(root, ".env"))
|
|
||||||
}
|
|
||||||
|
|
||||||
if yazFile != "" {
|
if yazFile != "" {
|
||||||
config.Conf.AppSource = yazFile
|
config.Conf.AppSource = yazFile
|
||||||
|
|
@ -168,4 +165,9 @@ func Boot() {
|
||||||
} else if config.Conf.Mode == "development" {
|
} else if config.Conf.Mode == "development" {
|
||||||
config.Development()
|
config.Development()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set license
|
||||||
|
if licenseKey != "" {
|
||||||
|
pack.SetCipher(licenseKey)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ import (
|
||||||
"github.com/yaoapp/yao/i18n"
|
"github.com/yaoapp/yao/i18n"
|
||||||
"github.com/yaoapp/yao/importer"
|
"github.com/yaoapp/yao/importer"
|
||||||
"github.com/yaoapp/yao/model"
|
"github.com/yaoapp/yao/model"
|
||||||
|
"github.com/yaoapp/yao/pack"
|
||||||
"github.com/yaoapp/yao/plugin"
|
"github.com/yaoapp/yao/plugin"
|
||||||
"github.com/yaoapp/yao/query"
|
"github.com/yaoapp/yao/query"
|
||||||
"github.com/yaoapp/yao/runtime"
|
"github.com/yaoapp/yao/runtime"
|
||||||
|
|
@ -226,14 +227,14 @@ func loadApp(root string) error {
|
||||||
var app application.Application
|
var app application.Application
|
||||||
|
|
||||||
if root == "bin:application.yaz" {
|
if root == "bin:application.yaz" {
|
||||||
app, err = application.OpenFromYaz(root, &share.Pack{}) // Load app from Bin
|
app, err = application.OpenFromYaz(root, pack.Cipher) // Load app from Bin
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
application.Load(app)
|
application.Load(app)
|
||||||
|
|
||||||
} else if strings.HasSuffix(root, ".yaz") {
|
} else if strings.HasSuffix(root, ".yaz") {
|
||||||
app, err = application.OpenFromYaz(root, &share.Pack{}) // Load app from .yaz file
|
app, err = application.OpenFromYaz(root, pack.Cipher) // Load app from .yaz file
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"github.com/yaoapp/gou/api"
|
"github.com/yaoapp/gou/api"
|
||||||
"github.com/yaoapp/gou/application/yaz"
|
"github.com/yaoapp/gou/application/yaz"
|
||||||
"github.com/yaoapp/yao/config"
|
"github.com/yaoapp/yao/config"
|
||||||
"github.com/yaoapp/yao/share"
|
"github.com/yaoapp/yao/pack"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestLoad(t *testing.T) {
|
func TestLoad(t *testing.T) {
|
||||||
|
|
@ -33,7 +33,7 @@ func TestLoadYaz(t *testing.T) {
|
||||||
defer Unload()
|
defer Unload()
|
||||||
|
|
||||||
// package yaz
|
// package yaz
|
||||||
file, err := yaz.Pack(config.Conf.Root, &share.Pack{})
|
file, err := yaz.Pack(config.Conf.Root,pack.Cipher)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
@ -54,7 +54,7 @@ func TestReoadYaz(t *testing.T) {
|
||||||
defer Unload()
|
defer Unload()
|
||||||
|
|
||||||
// package yaz
|
// package yaz
|
||||||
file, err := yaz.Pack(config.Conf.Root, &share.Pack{})
|
file, err := yaz.Pack(config.Conf.Root, pack.Cipher)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
32
pack/pack.go
Normal file
32
pack/pack.go
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
package pack
|
||||||
|
|
||||||
|
// ********************************************************************************
|
||||||
|
// WARNING: DO NOT MODIFY THIS FILE. IT WILL BE REPLACED BY THE APPLICATION CODE.
|
||||||
|
// *********************************************************************************
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
|
||||||
|
"github.com/yaoapp/gou/application/yaz/ciphers"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Pack the yao app package
|
||||||
|
type Pack struct{ aes ciphers.AES }
|
||||||
|
|
||||||
|
// Cipher the cipher
|
||||||
|
var Cipher *Pack
|
||||||
|
|
||||||
|
// SetCipher set the cipher
|
||||||
|
func SetCipher(license string) {
|
||||||
|
Cipher = &Pack{aes: ciphers.NewAES([]byte(license))}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Encrypt encrypt
|
||||||
|
func (pack *Pack) Encrypt(reader io.Reader, writer io.Writer) error {
|
||||||
|
return pack.aes.Encrypt(reader, writer)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Decrypt decrypt
|
||||||
|
func (pack *Pack) Decrypt(reader io.Reader, writer io.Writer) error {
|
||||||
|
return pack.aes.Decrypt(reader, writer)
|
||||||
|
}
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
package share
|
|
||||||
|
|
||||||
import "io"
|
|
||||||
|
|
||||||
// ********************************************************************************
|
|
||||||
// WARNING: DO NOT MODIFY THIS FILE. IT WILL BE REPLACED BY THE APPLICATION CODE.
|
|
||||||
// *********************************************************************************
|
|
||||||
|
|
||||||
// Pack the yao app package
|
|
||||||
type Pack struct{}
|
|
||||||
|
|
||||||
// Encrypt encrypt
|
|
||||||
func (pkg *Pack) Encrypt(reader io.Reader, writer io.Writer) error {
|
|
||||||
_, err := io.Copy(writer, reader)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Decrypt decrypt
|
|
||||||
func (pkg *Pack) Decrypt(reader io.Reader, writer io.Writer) error {
|
|
||||||
_, err := io.Copy(writer, reader)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
@ -21,6 +21,7 @@ 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,7 +35,7 @@ func Prepare(t *testing.T, cfg config.Config) {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
if root == "bin:application.pkg" {
|
if root == "bin:application.pkg" {
|
||||||
app, err = application.OpenFromBin(root, &share.Pack{}) // Load app from Bin
|
app, err = application.OpenFromBin(root, pack.Cipher) // Load app from Bin
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue