forked from YaoApp/yao
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
236 additions
and
241 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,246 +1,12 @@ | ||
package share | ||
|
||
import ( | ||
"io/ioutil" | ||
"os" | ||
"path" | ||
"path/filepath" | ||
"strings" | ||
|
||
"github.com/yaoapp/kun/exception" | ||
"github.com/yaoapp/kun/maps" | ||
"github.com/yaoapp/xiang/data" | ||
) | ||
|
||
// App 应用信息 | ||
var App AppInfo | ||
|
||
// AppInfo 应用信息 | ||
type AppInfo struct { | ||
Name string `json:"name,omitempty"` | ||
Short string `json:"short,omitempty"` | ||
Version string `json:"version,omitempty"` | ||
Description string `json:"description,omitempty"` | ||
Icons maps.MapStrSync `json:"icons,omitempty"` | ||
Storage AppStorage `json:"storage,omitempty"` | ||
Option map[string]interface{} `json:"option,omitempty"` | ||
} | ||
|
||
// AppStorage 应用存储 | ||
type AppStorage struct { | ||
Default string `json:"default"` | ||
Buckets map[string]string `json:"buckets,omitempty"` | ||
S3 map[string]interface{} `json:"s3,omitempty"` | ||
OSS *AppStorageOSS `json:"oss,omitempty"` | ||
COS map[string]interface{} `json:"cos,omitempty"` | ||
} | ||
|
||
// AppStorageOSS 阿里云存储 | ||
type AppStorageOSS struct { | ||
Endpoint string `json:"endpoint,omitempty"` | ||
ID string `json:"id,omitempty"` | ||
Secret string `json:"secret,omitempty"` | ||
RoleArn string `json:"roleArn,omitempty"` | ||
SessionName string `json:"sessionName,omitempty"` | ||
} | ||
|
||
// Script 脚本文件类型 | ||
type Script struct { | ||
Name string | ||
Type string | ||
Content []byte | ||
File string | ||
} | ||
|
||
// AppRoot 应用目录 | ||
type AppRoot struct { | ||
APIs string | ||
Flows string | ||
Models string | ||
Plugins string | ||
Tables string | ||
Charts string | ||
Screens string | ||
Data string | ||
} | ||
|
||
// Public 输出公共信息 | ||
func (app AppInfo) Public() AppInfo { | ||
app.Storage.COS = nil | ||
app.Storage.OSS = nil | ||
app.Storage.S3 = nil | ||
return app | ||
} | ||
|
||
// GetAppPlugins 遍历应用目录,读取文件列表 | ||
func GetAppPlugins(root string, typ string) []Script { | ||
files := []Script{} | ||
root = path.Join(root, "/") | ||
filepath.Walk(root, func(file string, info os.FileInfo, err error) error { | ||
if err != nil { | ||
exception.Err(err, 500).Throw() | ||
return err | ||
} | ||
if strings.HasSuffix(file, typ) { | ||
files = append(files, GetAppPluginFile(root, file)) | ||
} | ||
return nil | ||
}) | ||
return files | ||
} | ||
|
||
// GetAppPluginFile 读取文件 | ||
func GetAppPluginFile(root string, file string) Script { | ||
name := GetAppPluginFileName(root, file) | ||
return Script{ | ||
Name: name, | ||
Type: "plugin", | ||
File: file, | ||
} | ||
} | ||
|
||
// GetAppPluginFileName 读取文件 | ||
func GetAppPluginFileName(root string, file string) string { | ||
filename := strings.TrimPrefix(file, root+"/") | ||
namer := strings.Split(filename, ".") | ||
nametypes := strings.Split(namer[0], "/") | ||
name := strings.Join(nametypes, ".") | ||
return name | ||
} | ||
|
||
// GetAppFilesFS 遍历应用目录,读取文件列表 | ||
func GetAppFilesFS(root string, typ string) []Script { | ||
files := []Script{} | ||
root = path.Join(root, "/") | ||
filepath.Walk(root, func(filepath string, info os.FileInfo, err error) error { | ||
if err != nil { | ||
exception.Err(err, 500).Throw() | ||
return err | ||
} | ||
if strings.HasSuffix(filepath, typ) { | ||
files = append(files, GetAppFile(root, filepath)) | ||
} | ||
|
||
return nil | ||
}) | ||
return files | ||
} | ||
|
||
// GetAppFile 读取文件 | ||
func GetAppFile(root string, filepath string) Script { | ||
name := GetAppFileName(root, filepath) | ||
file, err := os.Open(filepath) | ||
if err != nil { | ||
exception.Err(err, 500).Throw() | ||
} | ||
|
||
defer file.Close() | ||
content, err := ioutil.ReadAll(file) | ||
if err != nil { | ||
exception.Err(err, 500).Throw() | ||
} | ||
return Script{ | ||
Name: name, | ||
Type: "app", | ||
Content: content, | ||
} | ||
} | ||
|
||
// GetAppFileName 读取文件 | ||
func GetAppFileName(root string, file string) string { | ||
filename := strings.TrimPrefix(file, root+"/") | ||
namer := strings.Split(filename, ".") | ||
nametypes := strings.Split(namer[0], "/") | ||
name := strings.Join(nametypes, ".") | ||
return name | ||
} | ||
|
||
// GetAppFileBaseName 读取文件base | ||
func GetAppFileBaseName(root string, file string) string { | ||
filename := strings.TrimPrefix(file, root+"/") | ||
namer := strings.Split(filename, ".") | ||
return filepath.Join(root, namer[0]) | ||
} | ||
|
||
// GetFilesFS 遍历目录,读取文件列表 | ||
func GetFilesFS(root string, typ string) []Script { | ||
files := []Script{} | ||
root = path.Join(root, "/") | ||
filepath.Walk(root, func(path string, info os.FileInfo, err error) error { | ||
if err != nil { | ||
exception.Err(err, 500).Throw() | ||
return err | ||
} | ||
if strings.HasSuffix(path, typ) { | ||
files = append(files, GetFile(root, path)) | ||
} | ||
return nil | ||
}) | ||
return files | ||
} | ||
|
||
// GetFile 读取文件 | ||
func GetFile(root string, path string) Script { | ||
filename := strings.TrimPrefix(path, root+"/") | ||
name, typ := GetTypeName(filename) | ||
file, err := os.Open(path) | ||
if err != nil { | ||
exception.Err(err, 500).Throw() | ||
} | ||
|
||
defer file.Close() | ||
content, err := ioutil.ReadAll(file) | ||
if err != nil { | ||
exception.Err(err, 500).Throw() | ||
} | ||
return Script{ | ||
Name: name, | ||
Type: typ, | ||
Content: content, | ||
} | ||
} | ||
|
||
// GetFileName 读取文件 | ||
func GetFileName(root string, file string) string { | ||
filename := strings.TrimPrefix(file, root+"/") | ||
name, _ := GetTypeName(filename) | ||
return name | ||
} | ||
|
||
// GetFileBaseName 读取文件base | ||
func GetFileBaseName(root string, file string) string { | ||
filename := strings.TrimPrefix(file, root+"/") | ||
namer := strings.Split(filename, ".") | ||
return filepath.Join(root, namer[0]) | ||
} | ||
|
||
// GetFilesBin 从 bindata 中读取文件列表 | ||
func GetFilesBin(root string, typ string) []Script { | ||
files := []Script{} | ||
binfiles := data.AssetNames() | ||
for _, path := range binfiles { | ||
if strings.HasSuffix(path, typ) { | ||
file := strings.TrimPrefix(path, root+"/") | ||
name, typ := GetTypeName(file) | ||
content, err := data.Asset(path) | ||
if err != nil { | ||
exception.Err(err, 500).Throw() | ||
} | ||
files = append(files, Script{ | ||
Name: name, | ||
Type: typ, | ||
Content: content, | ||
}) | ||
} | ||
} | ||
return files | ||
} | ||
|
||
// GetTypeName 读取类型 | ||
func GetTypeName(path string) (name string, typ string) { | ||
namer := strings.Split(path, ".") | ||
nametypes := strings.Split(namer[0], "/") | ||
name = strings.Join(nametypes[1:], ".") | ||
typ = nametypes[0] | ||
return name, typ | ||
} |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.