mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-04 03:40:45 +08:00
Merge pull request #36 from wailsapp/Improve-build/serve
Improve build/serve
This commit is contained in:
commit
fe2a20f92a
11
app.go
11
app.go
@ -1,6 +1,8 @@
|
|||||||
package wails
|
package wails
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"github.com/wailsapp/wails/cmd"
|
"github.com/wailsapp/wails/cmd"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -9,6 +11,9 @@ import (
|
|||||||
// DebugMode indicates if we are in debug Mode
|
// DebugMode indicates if we are in debug Mode
|
||||||
var DebugMode = "true"
|
var DebugMode = "true"
|
||||||
|
|
||||||
|
// BackendRenderer indicates which renderer to use for the backend
|
||||||
|
var BackendRenderer = "webview"
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------
|
||||||
|
|
||||||
// App defines the main application struct
|
// App defines the main application struct
|
||||||
@ -60,6 +65,8 @@ func CreateApp(optionalConfig ...*AppConfig) *App {
|
|||||||
result.config.DisableInspector = true
|
result.config.DisableInspector = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fmt.Println("Debug mode = " + DebugMode)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,7 +89,9 @@ func (a *App) start() error {
|
|||||||
a.log.Info("Starting")
|
a.log.Info("Starting")
|
||||||
|
|
||||||
// Check if we are to run in headless mode
|
// Check if we are to run in headless mode
|
||||||
if DebugMode == "true" {
|
fmt.Printf("Backend Renderer = %s\n", BackendRenderer)
|
||||||
|
a.log.Info("Backend Renderer = " + BackendRenderer)
|
||||||
|
if BackendRenderer == "headless" {
|
||||||
a.renderer = &Headless{}
|
a.renderer = &Headless{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,6 +116,7 @@ func (p *ProgramHelper) RunCommandArray(args []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
args = args[1:]
|
args = args[1:]
|
||||||
|
// fmt.Printf("RunCommandArray = %s %+v\n", program, args)
|
||||||
_, stderr, err := p.shell.Run(program, args...)
|
_, stderr, err := p.shell.Run(program, args...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(stderr)
|
fmt.Println(stderr)
|
||||||
|
@ -2,4 +2,4 @@ package cmd
|
|||||||
|
|
||||||
// Version - Wails version
|
// Version - Wails version
|
||||||
// ...oO(There must be a better way)
|
// ...oO(There must be a better way)
|
||||||
const Version = "v0.5.0"
|
const Version = "v0.7.0"
|
||||||
|
@ -17,6 +17,7 @@ func init() {
|
|||||||
|
|
||||||
var packageApp = false
|
var packageApp = false
|
||||||
var forceRebuild = false
|
var forceRebuild = false
|
||||||
|
var debugMode = false
|
||||||
buildSpinner := spinner.NewSpinner()
|
buildSpinner := spinner.NewSpinner()
|
||||||
buildSpinner.SetSpinSpeed(50)
|
buildSpinner.SetSpinSpeed(50)
|
||||||
|
|
||||||
@ -24,7 +25,9 @@ func init() {
|
|||||||
initCmd := app.Command("build", "Builds your Wails project").
|
initCmd := app.Command("build", "Builds your Wails project").
|
||||||
LongDescription(commandDescription).
|
LongDescription(commandDescription).
|
||||||
BoolFlag("p", "Package application on successful build", &packageApp).
|
BoolFlag("p", "Package application on successful build", &packageApp).
|
||||||
BoolFlag("f", "Force rebuild of application components", &forceRebuild)
|
BoolFlag("f", "Force rebuild of application components", &forceRebuild).
|
||||||
|
BoolFlag("d", "Build in Debug mode", &debugMode)
|
||||||
|
|
||||||
initCmd.Action(func() error {
|
initCmd.Action(func() error {
|
||||||
log := cmd.NewLogger()
|
log := cmd.NewLogger()
|
||||||
message := "Building Application"
|
message := "Building Application"
|
||||||
@ -141,7 +144,6 @@ func init() {
|
|||||||
ioutil.WriteFile(md5sumFile, []byte(packageJSONMD5), 0644)
|
ioutil.WriteFile(md5sumFile, []byte(packageJSONMD5), 0644)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Determine which wails bridge to install
|
|
||||||
bridgeFile := "wailsbridge.prod.js"
|
bridgeFile := "wailsbridge.prod.js"
|
||||||
|
|
||||||
// Copy bridge to project
|
// Copy bridge to project
|
||||||
@ -186,6 +188,9 @@ func init() {
|
|||||||
depSpinner.Success()
|
depSpinner.Success()
|
||||||
|
|
||||||
compileMessage := "Packing + Compiling project"
|
compileMessage := "Packing + Compiling project"
|
||||||
|
if debugMode {
|
||||||
|
compileMessage += " (Debug Mode)"
|
||||||
|
}
|
||||||
|
|
||||||
packSpinner := spinner.New(compileMessage + "...")
|
packSpinner := spinner.New(compileMessage + "...")
|
||||||
packSpinner.SetSpinSpeed(50)
|
packSpinner.SetSpinSpeed(50)
|
||||||
@ -212,8 +217,10 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Release mode
|
// Release mode
|
||||||
buildCommand.AddSlice([]string{"-ldflags", "-X github.com/wailsapp/wails.DebugMode=false"})
|
logger.Red("debugMode = %t", debugMode)
|
||||||
|
if !debugMode {
|
||||||
|
buildCommand.AddSlice([]string{"-ldflags", "-X github.com/wailsapp/wails.DebugMode=false"})
|
||||||
|
}
|
||||||
err = program.RunCommandArray(buildCommand.AsSlice())
|
err = program.RunCommandArray(buildCommand.AsSlice())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
packSpinner.Error()
|
packSpinner.Error()
|
||||||
|
@ -43,36 +43,9 @@ func init() {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// // Validate config
|
|
||||||
// // Check if we have a frontend
|
|
||||||
// if projectOptions.FrontEnd != nil {
|
|
||||||
// if projectOptions.FrontEnd.Dir == "" {
|
|
||||||
// return fmt.Errorf("Frontend directory not set in project.json")
|
|
||||||
// }
|
|
||||||
// if projectOptions.FrontEnd.Build == "" {
|
|
||||||
// return fmt.Errorf("Frontend build command not set in project.json")
|
|
||||||
// }
|
|
||||||
// if projectOptions.FrontEnd.Install == "" {
|
|
||||||
// return fmt.Errorf("Frontend install command not set in project.json")
|
|
||||||
// }
|
|
||||||
// if projectOptions.FrontEnd.Bridge == "" {
|
|
||||||
// return fmt.Errorf("Frontend bridge config not set in project.json")
|
|
||||||
// }
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Check pre-requisites are installed
|
|
||||||
|
|
||||||
// Program checker
|
// Program checker
|
||||||
program := cmd.NewProgramHelper()
|
program := cmd.NewProgramHelper()
|
||||||
|
|
||||||
// if projectOptions.FrontEnd != nil {
|
|
||||||
// // npm
|
|
||||||
// if !program.IsInstalled("npm") {
|
|
||||||
// return fmt.Errorf("it appears npm is not installed. Please install and run again")
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// packr
|
// packr
|
||||||
if !program.IsInstalled("packr") {
|
if !program.IsInstalled("packr") {
|
||||||
buildSpinner.Start("Installing packr...")
|
buildSpinner.Start("Installing packr...")
|
||||||
@ -87,59 +60,6 @@ func init() {
|
|||||||
// Save project directory
|
// Save project directory
|
||||||
projectDir := fs.Cwd()
|
projectDir := fs.Cwd()
|
||||||
|
|
||||||
// Install backend deps - needed?
|
|
||||||
// if projectOptions.FrontEnd != nil {
|
|
||||||
// // Install frontend deps
|
|
||||||
// err = os.Chdir(projectOptions.FrontEnd.Dir)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Check if frontend deps have been updated
|
|
||||||
// feSpinner := spinner.New("Installing frontend dependencies (This may take a while)...")
|
|
||||||
// feSpinner.SetSpinSpeed(50)
|
|
||||||
// feSpinner.Start()
|
|
||||||
|
|
||||||
// requiresNPMInstall := true
|
|
||||||
|
|
||||||
// // Read in package.json MD5
|
|
||||||
// packageJSONMD5, err := fs.FileMD5("package.json")
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// const md5sumFile = "package.json.md5"
|
|
||||||
|
|
||||||
// // If we aren't forcing the install and the md5sum file exists
|
|
||||||
// if !forceRebuild && fs.FileExists(md5sumFile) {
|
|
||||||
// // Yes - read contents
|
|
||||||
// savedMD5sum, err := fs.LoadAsString(md5sumFile)
|
|
||||||
// // File exists
|
|
||||||
// if err == nil {
|
|
||||||
// // Compare md5
|
|
||||||
// if savedMD5sum == packageJSONMD5 {
|
|
||||||
// // Same - no need for reinstall
|
|
||||||
// requiresNPMInstall = false
|
|
||||||
// feSpinner.Success("Skipped frontend dependencies (-f to force rebuild)")
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Md5 sum package.json
|
|
||||||
// // Different? Build
|
|
||||||
// if requiresNPMInstall || forceRebuild {
|
|
||||||
// // Install dependencies
|
|
||||||
// err = program.RunCommand(projectOptions.FrontEnd.Install)
|
|
||||||
// if err != nil {
|
|
||||||
// feSpinner.Error()
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// feSpinner.Success()
|
|
||||||
|
|
||||||
// // Update md5sum file
|
|
||||||
// ioutil.WriteFile(md5sumFile, []byte(packageJSONMD5), 0644)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Copy bridge to project
|
// Copy bridge to project
|
||||||
var bridgeFile = "wailsbridge.js"
|
var bridgeFile = "wailsbridge.js"
|
||||||
_, filename, _, _ := runtime.Caller(1)
|
_, filename, _, _ := runtime.Caller(1)
|
||||||
@ -150,18 +70,6 @@ func init() {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// // Build frontend
|
|
||||||
// buildFESpinner := spinner.New("Building frontend...")
|
|
||||||
// buildFESpinner.SetSpinSpeed(50)
|
|
||||||
// buildFESpinner.Start()
|
|
||||||
// err = program.RunCommand(projectOptions.FrontEnd.Build)
|
|
||||||
// if err != nil {
|
|
||||||
// buildFESpinner.Error()
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// buildFESpinner.Success()
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Run packr in project directory
|
// Run packr in project directory
|
||||||
err = os.Chdir(projectDir)
|
err = os.Chdir(projectDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -208,6 +116,8 @@ func init() {
|
|||||||
buildCommand.Add("-a")
|
buildCommand.Add("-a")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buildCommand.AddSlice([]string{"-ldflags", "-X github.com/wailsapp/wails.BackendRenderer=headless"})
|
||||||
|
// logger.Green("buildCommand = %+v", buildCommand)
|
||||||
err = program.RunCommandArray(buildCommand.AsSlice())
|
err = program.RunCommandArray(buildCommand.AsSlice())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
packSpinner.Error()
|
packSpinner.Error()
|
||||||
|
Loading…
Reference in New Issue
Block a user