From 5878b238c74333f1d076fb4d8a09028c7bcef654 Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 17 Nov 2022 12:35:03 +0800 Subject: [PATCH] [change] init application --- data/bindata.go | 106 ++--- setup/install.go | 910 +----------------------------------------- setup/install_test.go | 17 + 3 files changed, 88 insertions(+), 945 deletions(-) diff --git a/data/bindata.go b/data/bindata.go index 4ba244d2..b9c0a5ed 100644 --- a/data/bindata.go +++ b/data/bindata.go @@ -231,7 +231,7 @@ func initAppJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/app.json", size: 325, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "init/app.json", size: 325, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -251,7 +251,7 @@ func initChartsDashboardChartJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/charts/dashboard.chart.json", size: 8471, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "init/charts/dashboard.chart.json", size: 8471, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -271,7 +271,7 @@ func initFlowsAppMenuFlowJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/flows/app/menu.flow.json", size: 1327, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "init/flows/app/menu.flow.json", size: 1327, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -291,7 +291,7 @@ func initFormsPetFormJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/forms/pet.form.json", size: 87, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "init/forms/pet.form.json", size: 87, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -311,7 +311,7 @@ func initLangsZhCnGlobalYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/langs/zh-cn/global.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "init/langs/zh-cn/global.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -331,7 +331,7 @@ func initLangsZhHkLangsGlobalYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/langs/zh-hk/langs/global.yml", size: 88, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "init/langs/zh-hk/langs/global.yml", size: 88, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -351,7 +351,7 @@ func initLoginsAdminLoginJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/logins/admin.login.json", size: 277, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "init/logins/admin.login.json", size: 277, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -371,7 +371,7 @@ func initLoginsUserLoginJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/logins/user.login.json", size: 272, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "init/logins/user.login.json", size: 272, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -391,7 +391,7 @@ func initModelsPetModJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/models/pet.mod.json", size: 1418, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "init/models/pet.mod.json", size: 1418, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -411,7 +411,7 @@ func initPublicIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/index.html", size: 1373, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "init/public/index.html", size: 1373, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -431,7 +431,7 @@ func initScriptsDemoJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/demo.js", size: 334, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "init/scripts/demo.js", size: 334, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -451,7 +451,7 @@ func initScriptsStatJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/stat.js", size: 2235, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "init/scripts/stat.js", size: 2235, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -471,7 +471,7 @@ func initTablesPetTabJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/tables/pet.tab.json", size: 118, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "init/tables/pet.tab.json", size: 118, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -491,7 +491,7 @@ func publicIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "public/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "public/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -511,7 +511,7 @@ func uiIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "ui/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "ui/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -531,7 +531,7 @@ func xgenSetupIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "xgen/setup/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "xgen/setup/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -551,7 +551,7 @@ func xgenV09IndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "xgen/v0.9/index.html", size: 14, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "xgen/v0.9/index.html", size: 14, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -571,7 +571,7 @@ func xgenV10IndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "xgen/v1.0/index.html", size: 50, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "xgen/v1.0/index.html", size: 50, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -591,7 +591,7 @@ func xgenV10Layouts__indexAsyncJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "xgen/v1.0/layouts__index.async.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "xgen/v1.0/layouts__index.async.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -611,7 +611,7 @@ func xgenV10UmiJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "xgen/v1.0/umi.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "xgen/v1.0/umi.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -631,7 +631,7 @@ func yaoApisReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/apis/README.md", size: 13, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/apis/README.md", size: 13, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -651,7 +651,7 @@ func yaoApisChartHttpJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/apis/chart.http.json", size: 624, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/apis/chart.http.json", size: 624, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -671,7 +671,7 @@ func yaoApisImportHttpJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/apis/import.http.json", size: 1676, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/apis/import.http.json", size: 1676, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -691,7 +691,7 @@ func yaoApisPageHttpJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/apis/page.http.json", size: 609, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/apis/page.http.json", size: 609, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -711,7 +711,7 @@ func yaoApisStorageHttpJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/apis/storage.http.json", size: 1026, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/apis/storage.http.json", size: 1026, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -731,7 +731,7 @@ func yaoApisTableHttpJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/apis/table.http.json", size: 3213, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/apis/table.http.json", size: 3213, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -751,7 +751,7 @@ func yaoApisUserHttpJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/apis/user.http.json", size: 1453, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/apis/user.http.json", size: 1453, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -771,7 +771,7 @@ func yaoApisXiangHttpJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/apis/xiang.http.json", size: 1239, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/apis/xiang.http.json", size: 1239, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -791,7 +791,7 @@ func yaoDataAppJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/app.json", size: 277, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/data/app.json", size: 277, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -811,7 +811,7 @@ func yaoDataIcons404Png() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/icons/404.png", size: 9342, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/data/icons/404.png", size: 9342, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -831,7 +831,7 @@ func yaoDataIconsIconIcns() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/icons/icon.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -851,7 +851,7 @@ func yaoDataIconsIconIco() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/icons/icon.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -871,7 +871,7 @@ func yaoDataIconsIconPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/icons/icon.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -891,7 +891,7 @@ func yaoDataIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/index.html", size: 282, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/data/index.html", size: 282, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -911,7 +911,7 @@ func yaoFieldsModelTransJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/fields/model.trans.json", size: 14959, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/fields/model.trans.json", size: 14959, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -931,7 +931,7 @@ func yaoFlowsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/flows/README.md", size: 12, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/flows/README.md", size: 12, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -951,7 +951,7 @@ func yaoFlowsAdminGuardFlowJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/flows/admin/guard.flow.json", size: 559, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/flows/admin/guard.flow.json", size: 559, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -971,7 +971,7 @@ func yaoFlowsMenuFlowJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/flows/menu.flow.json", size: 1045, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/flows/menu.flow.json", size: 1045, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -991,7 +991,7 @@ func yaoFlowsUserFindFlowJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/flows/user/find.flow.json", size: 328, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/flows/user/find.flow.json", size: 328, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1011,7 +1011,7 @@ func yaoLangsEnUsJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/en-US.json", size: 66, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/langs/en-US.json", size: 66, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1031,7 +1031,7 @@ func yaoLangsZhCnGlobalYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-cn/global.yml", size: 1629, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/global.yml", size: 1629, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1051,7 +1051,7 @@ func yaoLangsZhCnLoginsAdminLoginYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-cn/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1071,7 +1071,7 @@ func yaoLangsZhCnLoginsUserLoginYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-cn/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1091,7 +1091,7 @@ func yaoLangsZhHkGlobalYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-hk/global.yml", size: 1629, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/global.yml", size: 1629, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1111,7 +1111,7 @@ func yaoLangsZhHkLoginsAdminLoginYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-hk/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1131,7 +1131,7 @@ func yaoLangsZhHkLoginsUserLoginYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-hk/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1151,7 +1151,7 @@ func yaoModelsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/README.md", size: 15, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/models/README.md", size: 15, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1171,7 +1171,7 @@ func yaoModelsMenuModJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/menu.mod.json", size: 2378, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/models/menu.mod.json", size: 2378, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1191,7 +1191,7 @@ func yaoModelsUserModJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/user.mod.json", size: 8826, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/models/user.mod.json", size: 8826, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1211,7 +1211,7 @@ func yaoModelsWorkflowModJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/workflow.mod.json", size: 3333, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/models/workflow.mod.json", size: 3333, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1231,7 +1231,7 @@ func yaoTablesReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/tables/README.md", size: 15, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/tables/README.md", size: 15, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1251,7 +1251,7 @@ func yaoTablesMenuTabJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/tables/menu.tab.json", size: 10471, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/tables/menu.tab.json", size: 10471, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1271,7 +1271,7 @@ func yaoTablesUserTabJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/tables/user.tab.json", size: 2357, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)} + info := bindataFileInfo{name: "yao/tables/user.tab.json", size: 2357, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/setup/install.go b/setup/install.go index b5c13fc3..ab6780b4 100644 --- a/setup/install.go +++ b/setup/install.go @@ -7,12 +7,9 @@ import ( "strings" "github.com/yaoapp/gou" - "github.com/yaoapp/gou/fs" - "github.com/yaoapp/gou/fs/dsl" - "github.com/yaoapp/gou/fs/system" "github.com/yaoapp/kun/log" + "github.com/yaoapp/yao/data" "github.com/yaoapp/yao/engine" - "github.com/yaoapp/yao/share" "github.com/yaoapp/yao/widgets/app" ) @@ -95,7 +92,7 @@ func Install(payload map[string]map[string]string) error { return err } - err = makeDemoWidgets(root) + err = makeInit(root) if err != nil { return err } @@ -231,897 +228,26 @@ func makeDirs(root string) error { return nil } -func makeDemoWidgets(root string) error { - - dsl := dsl.New(root) - - // make app - ok, err := makeAppWidget(dsl, root) - if err != nil || !ok { - return err - } - - // make flows - err = makeMenuFlowWidget(dsl, root) - if err != nil { - return err - } - - // make logins - err = makeLoginWidget(dsl, root) - if err != nil { - return err - } - - // make models - err = makeModelWidget(dsl, root) - if err != nil { - return err - } - - // make tables & forms - err = makeTableFormWidget(dsl, root) - if err != nil { - return err - } - - // make chart - err = makeChartWidget(dsl, root) - if err != nil { - return err - } - - // make scripts - err = makeScript(root) - if err != nil { - return err - } - - // make scripts - err = makeLang(root) - if err != nil { - return err - } - - // make index page - err = makeIndexPage(root) - if err != nil { - return err - } - - return nil -} - -func makeAppWidget(dsl fs.FileSystem, root string) (bool, error) { - - file := filepath.Join("app.json") - if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists - return false, nil - } - - _, err := dsl.WriteFile(file, []byte(fmt.Sprintf(` - { - "xgen": "1.0", - "name": "::Demo Application", - "short": "::Demo", - "description": "::Another yao application", - "version": "%s", - "adminRoot": "admin", - "setup": "scripts.demo.Data", - "menu": { - "process": "flows.app.menu", - "args": ["demo"] - }, - "optional": { - "hideNotification": true, - "hideSetting": false - } - } - `, share.VERSION)), 0644) - - if err != nil { - return false, err - } - - return true, nil -} - -func makeMenuFlowWidget(dsl fs.FileSystem, root string) error { - - file := filepath.Join("flows", "app", "menu.flow.json") - if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists - return nil - } - - _, err := dsl.WriteFile(file, []byte(` - { - "name": "APP Menu", - "nodes": [], - "output": [ - { - "blocks": 0, - "icon": "icon-activity", - "id": 1, - "name": "图表", - "parent": null, - "path": "/x/Chart/dashboard", - "visible_menu": 0 - }, - { - "blocks": 0, - "icon": "icon-book", - "id": 2, - "name": "表格", - "parent": null, - "path": "/x/Table/pet", - "visible_menu": 1, - "children": [ - { - "blocks": 0, - "icon": "icon-book", - "name": "宠物列表", - "id": 2010, - "parent": 2, - "path": "/x/Table/pet", - "visible_menu": 1 - } - ] - }, - { - "blocks": 0, - "icon": "icon-clipboard", - "id": 2, - "name": "表单", - "parent": null, - "path": "/x/Form/pet/1/edit", - "visible_menu": 1, - "children": [ - { - "blocks": 0, - "icon": "icon-clipboard", - "name": "编辑模式", - "id": 2010, - "parent": 2, - "path": "/x/Form/pet/1/edit", - "visible_menu": 1 - }, - { - "blocks": 0, - "icon": "icon-clipboard", - "name": "查看模式", - "id": 2010, - "parent": 2, - "path": "/x/Form/pet/1/view", - "visible_menu": 1 - } - ] - } - ] - } - `), 0644) - - if err != nil { - return err - } - - return nil -} - -func makeLoginWidget(dsl fs.FileSystem, root string) error { - file := filepath.Join("logins", "admin.login.json") - if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists - return nil - } - _, err := dsl.WriteFile(file, []byte(` - { - "name": "::Admin Login", - "action": { - "process": "yao.login.Admin", - "args": [":payload"] - }, - "layout": { - "entry": "/x/Chart/dashboard", - "slogan": "::Make Your Dream With Yao App Engine", - "site": "https://yaoapps.com?from=instance-admin-login" - } - } - `), 0644) - - if err != nil { - return err - } - - file = filepath.Join("logins", "user.login.json") - if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists - return nil - } - _, err = dsl.WriteFile(file, []byte(` - { - "name": "::User Login", - "action": { - "process": "scripts.user.Login", - "args": [":payload"] - }, - "layout": { - "entry": "/x/Table/pet", - "slogan": "::Make Your Dream With Yao App Engine", - "site": "https://yaoapps.com/from=instance-user-login" - } - } - `), 0644) - if err != nil { - return err - } - - return nil -} - -func makeModelWidget(dsl fs.FileSystem, root string) error { - file := filepath.Join("models", "pet.mod.json") - if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists - return nil - } - _, err := dsl.WriteFile(file, []byte(` - { - "name": "Pet", - "table": { "name": "pet", "comment": "宠物表" }, - "columns": [ - { "name": "id", "comment": "ID", "type": "ID" }, - { - "name": "name", - "comment": "昵称", - "type": "string", - "length": 80, - "index": true, - "nullable": true - }, - { - "name": "type", - "comment": "类型", - "type": "enum", - "option": ["cat", "dog", "others"], - "index": true - }, - { - "name": "status", - "comment": "入院状态", - "type": "enum", - "option": ["checked", "curing", "cured"], - "index": true - }, - { - "name": "mode", - "comment": "状态", - "type": "enum", - "option": ["enabled", "disabled"], - "index": true - }, - { - "name": "online", - "comment": "是否在线", - "type": "boolean", - "default": false, - "index": true - }, - { - "name": "curing_status", - "comment": "治疗状态", - "type": "enum", - "default": "0", - "option": ["0", "1", "2"], - "index": true - }, - { - "name": "stay", - "comment": "入院时间", - "type": "integer" - }, - { - "name": "cost", - "comment": "花费", - "type": "integer" - }, - { - "name": "doctor_id", - "type": "integer", - "comment": "相关职工", - "nullable": true - }, - { - "name": "images", - "type": "json", - "comment": "相关图片", - "nullable": true - }, - { - "name": "test_string", - "comment": "测试字段(字符串)", - "type": "string", - "nullable": true - }, - { - "name": "test_number", - "comment": "测试字段(数字)", - "type": "integer", - "nullable": true - }, - { - "name": "test_array", - "comment": "测试字段(数组)", - "type": "json", - "nullable": true - } - ], - "relations": {}, - "values": [], - "indexes": [], - "option": { "timestamps": true,"soft_deletes": true } - } - `), 0644) - - if err != nil { - return err - } - - return nil -} - -func makeTableFormWidget(dsl fs.FileSystem, root string) error { - file := filepath.Join("tables", "pet.tab.json") - if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists - return nil - } - _, err := dsl.WriteFile(file, []byte(` - { - "name": "::Pet Admin Bind Model", - "action": { - "bind": { "model": "pet", "option": {} } - } - } - `), 0644) - - if err != nil { - return err - } - - file = filepath.Join("forms", "pet.form.json") - if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists - return nil - } - _, err = dsl.WriteFile(file, []byte(` - { - "name": "::Pet Admin Bind Table", - "action": { - "bind": { "table": "pet", "option": {} } - } - } - `), 0644) - if err != nil { - return err - } - - return nil -} - -func makeChartWidget(dsl fs.FileSystem, root string) error { - - file := filepath.Join("charts", "dashboard.chart.json") - if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists - return nil - } - - _, err := dsl.WriteFile(file, []byte(` - { - "name": "宠物医院数据图表", - - "config":{"full":false}, - - "action": { - "before:data": "scripts.stat.BeforeData", - "data": { "process": "scripts.stat.Data", "default": ["2022-09-20"] }, - "after:data": "scripts.stat.AfterData" - }, - - "layout": { - "operation": { - "actions": [ - { - "title": "跳转至大屏", - "icon": "icon-airplay", - "action": { "Common.historyPush": { "pathname": "/x/Cool/demo" } } - } - ] - }, - - "filter": { - "columns": [{ "name": "时间区间", "width": 6 }] - }, - - "chart": { - "columns": [ - { "name": "宠物数量", "width": 6 }, - { "name": "宠物类型", "width": 6 }, - { "name": "当月收入", "width": 6 }, - { "name": "医师数量", "width": 6 }, - { "name": "宠物数量_上月", "width": 6 }, - { "name": "宠物类型_上月", "width": 6 }, - { "name": "当月收入_上月", "width": 6 }, - { "name": "医师数量_上月", "width": 6 }, - { "name": "收入", "width": 8 }, - { "name": "支出", "width": 8 }, - { "name": "综合评分", "width": 8 }, - { "name": "收入_折线图", "width": 8 }, - { "name": "支出_折线图", "width": 8 }, - { "name": "综合评分_折线图", "width": 8 }, - { "name": "类型排布", "width": 12 }, - { "name": "状态分布", "width": 12 }, - { "name": "综合消费", "width": 24 } - ] - } - }, - - "fields": { - "filter": { - "时间区间": { - "bind": "range", - "edit": { "type": "RangePicker", "props": {} } - }, - "状态": { - "bind": "status", - "edit": { - "type": "Select", - "props": { - "xProps": { - "$remote": { - "process": "models.pet.Get", - "query": { "select": "name,status", "limit": 2 } - } - } - } - } +func makeInit(root string) error { + files := data.AssetNames() + for _, file := range files { + if strings.HasPrefix(file, "init/") { + dst := filepath.Join(root, strings.TrimPrefix(file, "init/")) + content, err := data.Read(file) + if err != nil { + return err } - }, - "chart": { - "收入": { - "bind": "income", - "link": "/x/Table/pet", - "out": "scripts.stat.Income", - "view": { - "type": "NumberChart", - "props": { - "chartHeight": 150, - "prefix": "¥", - "decimals": 2, - "nameKey": "date", - "valueKey": "value" - } - } - }, - "支出": { - "bind": "cost", - "link": "/x/Table/pet", - "view": { - "type": "NumberChart", - "props": { - "chartHeight": 150, - "color": "red", - "prefix": "¥", - "decimals": 2, - "nameKey": "date", - "valueKey": "value" - } - } - }, - "综合评分": { - "bind": "rate", - "link": "/x/Table/pet", - "view": { - "type": "NumberChart", - "props": { - "chartHeight": 150, - "color": "orange", - "unit": "分", - "decimals": 1, - "nameKey": "date", - "valueKey": "value" - } - } - }, - "收入_折线图": { - "bind": "income", - "link": "/x/Table/pet", - "view": { - "type": "NumberChart", - "props": { - "cardStyle": { "padding": 0 }, - "type": "line", - "chartHeight": 120, - "prefix": "¥", - "decimals": 2, - "nameKey": "date", - "valueKey": "value" - } - } - }, - "支出_折线图": { - "bind": "cost", - "link": "/x/Table/pet", - "view": { - "type": "NumberChart", - "props": { - "cardStyle": { "padding": 0 }, - "type": "line", - "chartHeight": 120, - "color": "red", - "prefix": "¥", - "decimals": 2, - "nameKey": "date", - "valueKey": "value" - } - } - }, - "综合评分_折线图": { - "bind": "rate", - "link": "/x/Table/pet", - "view": { - "type": "NumberChart", - "props": { - "cardStyle": { "padding": 0 }, - "type": "line", - "chartHeight": 120, - "color": "orange", - "unit": "分", - "decimals": 1, - "nameKey": "date", - "valueKey": "value" - } - } - }, - "宠物数量": { - "bind": "pet_count", - "link": "/x/Table/pet", - "view": { "type": "Number", "props": { "unit": "个" } } - }, - "宠物类型": { - "bind": "pet_type", - "view": { "type": "Number", "props": { "unit": "种" } } - }, - "当月收入": { - "bind": "income_monthly", - "view": { "type": "Number", "props": { "unit": "元" } } - }, - "医师数量": { - "bind": "doctor_count", - "view": { "type": "Number", "props": { "unit": "个" } } - }, - "宠物数量_上月": { - "bind": "prev_pet_count", - "link": "/x/Table/pet", - "view": { - "type": "Number", - "props": { - "cardStyle": { "padding": 0 }, - "unit": "个", - "prev_title": "上月数据" - } - } - }, - "宠物类型_上月": { - "bind": "prev_pet_type", - "link": "/x/Table/pet", - "view": { - "type": "Number", - "props": { - "cardStyle": { "padding": 0 }, - "unit": "种", - "prev_title": "上月数据" - } - } - }, - "当月收入_上月": { - "bind": "prev_income_monthly", - "link": "/x/Table/pet", - "view": { - "type": "Number", - "props": { - "cardStyle": { "padding": 0 }, - "unit": "元", - "prev_title": "上月数据" - } - } - }, - "医师数量_上月": { - "bind": "prev_doctor_count", - "link": "/x/Table/pet", - "view": { - "type": "Number", - "props": { - "cardStyle": { "padding": 0 }, - "unit": "个", - "prev_title": "上月数据" - } - } - }, - "类型排布": { - "bind": "datasource_type", - "link": "/x/Table/pet", - "view": { - "type": "Pie", - "props": { - "height": 240, - "nameKey": "type", - "series": [ - { - "valueKey": "count", - "roseType": "area", - "radius": [10, 100], - "center": ["60%", "50%"], - "itemStyle": { "borderRadius": 6 } - } - ] - } - }, - "refer": { - "type": "Table", - "props": { - "columns": [ - { "title": "类型", "dataIndex": "type" }, - { "title": "数量", "dataIndex": "count" } - ] - } - } - }, - "状态分布": { - "bind": "datasource_status", - "view": { - "type": "Bar", - "props": { - "height": 240, - "nameKey": "status", - "axisLabel": { "interval": 0, "fontSize": 12 }, - "series": [ - { - "valueKey": "count", - "type": "bar", - "colorBy": "data", - "itemStyle": { "borderRadius": 6 }, - "splitLine": { "show": false }, - "axisLabel": { "show": false } - } - ] - } - }, - "refer": { - "type": "Table", - "props": { - "columns": [ - { "title": "状态", "dataIndex": "status" }, - { "title": "数量", "dataIndex": "count" } - ] - } - } - }, - "综合消费": { - "bind": "datasource_cost", - "view": { - "type": "LineBar", - "props": { - "height": 240, - "nameKey": "name", - "axisLabel": { "interval": 0, "fontSize": 12 }, - "series": [ - { - "valueKey": "stay", - "type": "line", - "smooth": true, - "symbolSize": 8, - "itemStyle": { "borderRadius": 6 }, - "splitLine": { "show": false }, - "axisLabel": { "show": false } - }, - { - "valueKey": "cost", - "type": "bar", - "itemStyle": { "borderRadius": 6 }, - "splitLine": { "show": false }, - "axisLabel": { "show": false } - } - ] - } - } + + dir := filepath.Dir(dst) + if err := os.MkdirAll(dir, os.ModePerm); err != nil { + return err + } + + if err = os.WriteFile(dst, content, 0644); err != nil { + return err } - } } - } - `), 0644) - - if err != nil { - return err } - - return nil -} - -func makeScript(root string) error { - - fs := system.New(filepath.Join(root, "scripts")) - file := "demo.js" - if _, err := os.Stat(filepath.Join(root, "scripts", file)); err == nil { // exists - return nil - } - _, err := fs.WriteFile(file, []byte(` -/** - * Demo Data - */ -function Data() { - return Process( - "yao.table.Insert", - "pet", - ["name", "type", "status", "mode", "stay", "cost", "doctor_id"], - [ - ["Cookie", "cat", "checked", "enabled", 200, 105, 1], - ["Baby", "dog", "checked", "enabled", 186, 24, 1], - ["Poo", "others", "checked", "enabled", 199, 66, 1], - ] - ); -} - `), 0644) - - if err != nil { - return err - } - - file = filepath.Join("stat.js") - if _, err := os.Stat(filepath.Join(root, "scripts", file)); err == nil { // exists - return nil - } - _, err = fs.WriteFile(file, []byte(` -/** - * before:data hook - * @param {*} params - * @returns - */ -function BeforeData(params) { - log.Info("[chart] before data hook: %s", JSON.stringify(params)); - return [params]; -} - -/** - * after:data hook - * @param {*} data - * @returns - */ -function AfterData(data) { - log.Info("[chart] after data hook: %s", JSON.stringify(data)); - return data; -} - -/** - * Get Data - * @param {*} params - */ -function Data(params) { - log.Info("[chart] process data query: %s", JSON.stringify(params)); - return { - income: [ - { value: 40300, date: "2022-1-1" }, - { value: 50800, date: "2022-2-1" }, - { value: 31300, date: "2022-3-1" }, - { value: 48800, date: "2022-4-1" }, - { value: 69900, date: "2022-5-1" }, - { value: 37800, date: "2022-6-1" }, - ], - cost: [ - { value: 28100, date: "2022-1-1" }, - { value: 23000, date: "2022-2-1" }, - { value: 29300, date: "2022-3-1" }, - { value: 26700, date: "2022-4-1" }, - { value: 26400, date: "2022-5-1" }, - { value: 31200, date: "2022-6-1" }, - ], - rate: [ - { value: 8.0, date: "2022-1-1" }, - { value: 7.6, date: "2022-2-1" }, - { value: 9.1, date: "2022-3-1" }, - { value: 8.4, date: "2022-4-1" }, - { value: 6.9, date: "2022-5-1" }, - { value: 9.0, date: "2022-6-1" }, - ], - pet_count: 54, - pet_type: 8, - income_monthly: 68900, - doctor_count: 23, - prev_pet_count: { current: 54, prev: 45 }, - prev_pet_type: { current: 8, prev: 13 }, - prev_income_monthly: { current: 68900, prev: 92000 }, - prev_doctor_count: { current: 23, prev: 27 }, - datasource_type: [ - { type: "猫猫", count: 18 }, - { type: "狗狗", count: 6 }, - { type: "其他", count: 3 }, - ], - datasource_status: [ - { status: "已查看", count: 3 }, - { status: "治疗中", count: 12 }, - { status: "已治愈", count: 9 }, - ], - datasource_cost: [ - { name: "毛毛", stay: 3, cost: 2000 }, - { name: "阿布", stay: 6, cost: 4200 }, - { name: "咪咪", stay: 7, cost: 6000 }, - { name: "狗蛋", stay: 1, cost: 1000 }, - ], - }; -} - -/** - * Compute out - * @param {*} field - * @param {*} value - * @param {*} data - * @returns - */ -function Income(field, value, data) { - log.Info( - "[chart] Income Compute: %s", - JSON.stringify({ field: field, value: value, data: data }) - ); - return value; -} - `), 0644) - if err != nil { - return err - } - - return nil -} - -func makeLang(root string) error { - fs := system.New(filepath.Join(root, "langs")) - file := filepath.Join("zh-cn", "global.yml") - if _, err := os.Stat(filepath.Join(root, "langs", file)); err == nil { // exists - return nil - } - - _, err := fs.WriteFile(file, []byte(` -Demo: 演示 -Demo Application: 示例应用 -Another yao application: 又一个 YAO 应用`), 0644) - - if err != nil { - return err - } - - file = filepath.Join("zh-hk", "langs", "global.yml") - if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists - return nil - } - _, err = fs.WriteFile(file, []byte(` -Demo: 演示 -Demo Application: 示例應用 -Another yao application: 又一個YAO應用`), 0644) - - if err != nil { - return err - } - - return nil -} - -func makeIndexPage(root string) error { - fs := system.New(filepath.Join(root, "public")) - file := "index.html" - if _, err := os.Stat(filepath.Join(root, "public", file)); err == nil { // exists - return nil - } - - _, err := fs.WriteFile(file, []byte(` -It works!`), 0644) - - if err != nil { - return err - } - return nil } diff --git a/setup/install_test.go b/setup/install_test.go index 2d96ecb6..c4a24e3a 100644 --- a/setup/install_test.go +++ b/setup/install_test.go @@ -1,6 +1,7 @@ package setup import ( + "os" "testing" ) @@ -10,3 +11,19 @@ func TestInstall(t *testing.T) { // t.Fatal(err) // } } + +func TestMakeInit(t *testing.T) { + root := prepare(t) + err := makeInit(root) + if err != nil { + t.Fatal(err) + } +} + +func prepare(t *testing.T) string { + dir, err := os.MkdirTemp("", "-install") + if err != nil { + t.Fatal(err) + } + return dir +}