提交 c1db1a6f 编写于 作者: yanghye's avatar yanghye

command-line tools: linux arm add, run.sh, startup.sh

上级 2fba3d3b
......@@ -91,7 +91,7 @@ func generaProject(c *command.Config) error {
}
// 读取assets内的文件
var createFile = func(readFilePath, outFilePath string, data map[string]any) error {
var createFile = func(readFilePath, outFilePath string, data map[string]any, perm fs.FileMode) error {
// 创建 energy.json template
if fileData, err := assets.ReadFile(nil, "", readFilePath); err != nil {
return err
......@@ -102,12 +102,19 @@ func generaProject(c *command.Config) error {
}
}
path := filepath.Join(projectPath, outFilePath)
if err = ioutil.WriteFile(path, fileData, 0666); err != nil {
if err = ioutil.WriteFile(path, fileData, perm); err != nil {
return err
}
}
return nil
}
if consts.IsLinux /* && consts.IsARM64*/ {
if err := createFile("assets/initialize/run.sh", "run.sh", nil, 0755); err != nil {
return err
}
}
// 创建 energy.json template
// 默认配置
data := make(map[string]any)
......@@ -118,12 +125,12 @@ func generaProject(c *command.Config) error {
data["CompanyName"] = c.Init.Name
data["ProductName"] = c.Init.Name
energyJSON := fmt.Sprintf("assets/energy_%s.json", runtime.GOOS)
if err := createFile(energyJSON, consts.EnergyProjectConfig, data); err != nil {
if err := createFile(energyJSON, consts.EnergyProjectConfig, data, 0666); err != nil {
return err
}
// 创建 main.go
if err := createFile(fmt.Sprintf("assets/initialize/main.go.%s", c.Init.ResLoad), "main.go", nil); err != nil {
if err := createFile(fmt.Sprintf("assets/initialize/main.go.%s", c.Init.ResLoad), "main.go", nil, 0666); err != nil {
return err
}
......@@ -132,7 +139,7 @@ func generaProject(c *command.Config) error {
data["Name"] = c.Init.Name
data["GoVersion"] = "1.18"
data["EnergyVersion"] = "latest"
if err := createFile("assets/initialize/go.mod.t", "go.mod", data); err != nil {
if err := createFile("assets/initialize/go.mod.t", "go.mod", data, 0666); err != nil {
return err
}
......@@ -140,20 +147,20 @@ func generaProject(c *command.Config) error {
if err := os.MkdirAll(filepath.Join(projectPath, "resources"), fs.ModePerm); err != nil {
return err
}
if err := createFile("assets/initialize/index.html", filepath.Join("resources", "index.html"), nil); err != nil {
if err := createFile("assets/initialize/index.html", filepath.Join("resources", "index.html"), nil, 0666); err != nil {
return err
}
if err := createFile("assets/icon.ico", filepath.Join("resources", "icon.ico"), nil); err != nil {
if err := createFile("assets/icon.ico", filepath.Join("resources", "icon.ico"), nil, 0666); err != nil {
return err
}
if err := createFile("assets/icon.png", filepath.Join("resources", "icon.png"), nil); err != nil {
if err := createFile("assets/icon.png", filepath.Join("resources", "icon.png"), nil, 0666); err != nil {
return err
}
// 创建 README.md
data = make(map[string]any)
data["Name"] = c.Init.Name
if err := createFile("assets/initialize/README.md", "README.md", data); err != nil {
if err := createFile("assets/initialize/README.md", "README.md", data, 0666); err != nil {
return err
}
......
......@@ -44,6 +44,7 @@ const (
const (
linuxDebControl = "linux/control"
linuxAppDesktop = "linux/app.desktop"
linuxARMStartup = "linux/startup.sh"
)
func GeneraInstaller(proj *project.Project) error {
......@@ -76,6 +77,10 @@ func GeneraInstaller(proj *project.Project) error {
if err = linuxOptCopy(proj, appRoot); err != nil {
return err
}
// copy linux arm startup.sh
if err = linuxARMStartupSH(proj, appRoot); err != nil {
return err
}
// 7zz 压缩 CEF
comper := proj.NSIS.Compress
switch comper {
......@@ -230,6 +235,35 @@ func linuxOptCopy(proj *project.Project, appRoot string) error {
return nil
}
func linuxARMStartupSH(proj *project.Project, appRoot string) error {
if consts.IsLinux /* && consts.IsARM64*/ {
term.Logger.Info("Generate dpkg startup.sh")
buildOutDir := assets.BuildOutPath(proj)
appDir := filepath.Join(buildOutDir, appRoot)
if startupshData, err := assets.ReadFile(proj, assetsFSPath, linuxARMStartup); err != nil {
return err
} else {
data := make(map[string]any)
data["CEFPATH"] = opt(proj)
data["EXECUTE"] = proj.Name
if content, err := tools.RenderTemplate(string(startupshData), data); err != nil {
return err
} else {
optDir := opt(proj)
outFilePath := filepath.Join(appDir, optDir, fmt.Sprintf("%s.sh", proj.Name))
outFile, err := os.OpenFile(outFilePath, os.O_CREATE|os.O_WRONLY, 0755)
if err != nil {
return err
}
defer outFile.Close()
outFile.Write(content)
}
}
}
return nil
}
func linuxDesktop(proj *project.Project, appRoot string) error {
term.Logger.Info("Generate dpkg desktop")
buildOutDir := assets.BuildOutPath(proj)
......@@ -244,9 +278,13 @@ func linuxDesktop(proj *project.Project, appRoot string) error {
} else {
optDir := opt(proj)
_, icon := filepath.Split(proj.Info.Icon)
startup := proj.Name
if consts.IsLinux /* && consts.IsARM64*/ {
startup += ".sh"
}
data := make(map[string]any)
data["Name"] = proj.Name
data["Exec"] = filepath.Join(optDir, proj.Name)
data["Exec"] = filepath.Join(optDir, startup)
data["Icon"] = filepath.Join(optDir, icon)
data["Comments"] = proj.Info.Comments
if content, err := tools.RenderTemplate(string(desktopData), data); err != nil {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册