mirror of
https://github.com/taigrr/wails.git
synced 2026-04-14 02:48:21 -07:00
Compare commits
7 Commits
cross-comp
...
update-dep
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
38cb1f3869 | ||
|
|
172c480a49 | ||
|
|
f64b530b16 | ||
|
|
d8c1bdd0de | ||
|
|
5ca94086a5 | ||
|
|
71a4ec19ad | ||
|
|
a3cc1de0a2 |
17
cmd/fs.go
17
cmd/fs.go
@@ -12,7 +12,6 @@ import (
|
|||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/leaanthony/slicer"
|
"github.com/leaanthony/slicer"
|
||||||
)
|
)
|
||||||
@@ -48,22 +47,6 @@ func (fs *FSHelper) FileExists(path string) bool {
|
|||||||
return fi.Mode().IsRegular()
|
return fi.Mode().IsRegular()
|
||||||
}
|
}
|
||||||
|
|
||||||
// FindFile returns the first occurrence of match inside path.
|
|
||||||
func (fs *FSHelper) FindFile(path, match string) (string, error) {
|
|
||||||
files, err := ioutil.ReadDir(path)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, f := range files {
|
|
||||||
if !f.IsDir() && strings.Contains(f.Name(), match) {
|
|
||||||
return f.Name(), nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return "", fmt.Errorf("file not found")
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateFile creates a file at the given filename location with the contents
|
// CreateFile creates a file at the given filename location with the contents
|
||||||
// set to the given data. It will create intermediary directories if needed.
|
// set to the given data. It will create intermediary directories if needed.
|
||||||
func (fs *FSHelper) CreateFile(filename string, data []byte) error {
|
func (fs *FSHelper) CreateFile(filename string, data []byte) error {
|
||||||
|
|||||||
103
cmd/helpers.go
103
cmd/helpers.go
@@ -11,7 +11,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/leaanthony/mewn"
|
"github.com/leaanthony/mewn"
|
||||||
"github.com/leaanthony/mewn/lib"
|
|
||||||
"github.com/leaanthony/slicer"
|
"github.com/leaanthony/slicer"
|
||||||
"github.com/leaanthony/spinner"
|
"github.com/leaanthony/spinner"
|
||||||
)
|
)
|
||||||
@@ -57,69 +56,23 @@ func InstallGoDependencies(verbose bool) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// EmbedAssets will embed the built frontend assets via mewn.
|
|
||||||
func EmbedAssets() ([]string, error) {
|
|
||||||
mewnFiles := lib.GetMewnFiles([]string{}, false)
|
|
||||||
|
|
||||||
referencedAssets, err := lib.GetReferencedAssets(mewnFiles)
|
|
||||||
if err != nil {
|
|
||||||
return []string{}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
targetFiles := []string{}
|
|
||||||
|
|
||||||
for _, referencedAsset := range referencedAssets {
|
|
||||||
packfileData, err := lib.GeneratePackFileString(referencedAsset, false)
|
|
||||||
if err != nil {
|
|
||||||
return []string{}, err
|
|
||||||
}
|
|
||||||
targetFile := filepath.Join(referencedAsset.BaseDir, referencedAsset.PackageName+"-mewn.go")
|
|
||||||
targetFiles = append(targetFiles, targetFile)
|
|
||||||
ioutil.WriteFile(targetFile, []byte(packfileData), 0644)
|
|
||||||
}
|
|
||||||
|
|
||||||
return targetFiles, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// BuildApplication will attempt to build the project based on the given inputs
|
// BuildApplication will attempt to build the project based on the given inputs
|
||||||
func BuildApplication(binaryName string, forceRebuild bool, buildMode string, packageApp bool, projectOptions *ProjectOptions) error {
|
func BuildApplication(binaryName string, forceRebuild bool, buildMode string, packageApp bool, projectOptions *ProjectOptions) error {
|
||||||
|
|
||||||
if buildMode == BuildModeBridge && projectOptions.CrossCompile {
|
|
||||||
return fmt.Errorf("you cant serve the application in cross-compilation")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Generate Windows assets if needed
|
// Generate Windows assets if needed
|
||||||
if projectOptions.Platform == "windows" {
|
if runtime.GOOS == "windows" {
|
||||||
cleanUp := !packageApp
|
cleanUp := !packageApp
|
||||||
err := NewPackageHelper(projectOptions.Platform).PackageWindows(projectOptions, cleanUp)
|
err := NewPackageHelper().PackageWindows(projectOptions, cleanUp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if projectOptions.CrossCompile {
|
|
||||||
// Check build directory
|
|
||||||
buildDirectory := filepath.Join(fs.Cwd(), "build")
|
|
||||||
if !fs.DirExists(buildDirectory) {
|
|
||||||
fs.MkDir(buildDirectory)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check Docker
|
|
||||||
if err := CheckIfInstalled("docker"); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check xgo
|
|
||||||
if err := CheckIfInstalled("xgo"); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Check Mewn is installed
|
// Check Mewn is installed
|
||||||
err := CheckMewn(projectOptions.Verbose)
|
err := CheckMewn(projectOptions.Verbose)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
compileMessage := "Packing + Compiling project"
|
compileMessage := "Packing + Compiling project"
|
||||||
|
|
||||||
@@ -136,38 +89,17 @@ func BuildApplication(binaryName string, forceRebuild bool, buildMode string, pa
|
|||||||
println(compileMessage)
|
println(compileMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
// embed resources
|
|
||||||
targetFiles, err := EmbedAssets()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// cleanup temporary embedded assets
|
|
||||||
defer func() {
|
|
||||||
for _, filename := range targetFiles {
|
|
||||||
if err := os.Remove(filename); err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
buildCommand := slicer.String()
|
buildCommand := slicer.String()
|
||||||
if projectOptions.CrossCompile {
|
|
||||||
buildCommand.Add("xgo")
|
|
||||||
} else {
|
|
||||||
buildCommand.Add("mewn")
|
buildCommand.Add("mewn")
|
||||||
}
|
|
||||||
|
|
||||||
if buildMode == BuildModeBridge {
|
if buildMode == BuildModeBridge {
|
||||||
// Ignore errors
|
// Ignore errors
|
||||||
buildCommand.Add("-i")
|
buildCommand.Add("-i")
|
||||||
}
|
}
|
||||||
|
|
||||||
if !projectOptions.CrossCompile {
|
|
||||||
buildCommand.Add("build")
|
buildCommand.Add("build")
|
||||||
}
|
|
||||||
|
|
||||||
if binaryName != "" && !projectOptions.CrossCompile {
|
if binaryName != "" {
|
||||||
// Alter binary name based on OS
|
// Alter binary name based on OS
|
||||||
switch runtime.GOOS {
|
switch runtime.GOOS {
|
||||||
case "windows":
|
case "windows":
|
||||||
@@ -183,7 +115,7 @@ func BuildApplication(binaryName string, forceRebuild bool, buildMode string, pa
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If we are forcing a rebuild
|
// If we are forcing a rebuild
|
||||||
if forceRebuild && !projectOptions.CrossCompile {
|
if forceRebuild {
|
||||||
buildCommand.Add("-a")
|
buildCommand.Add("-a")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -194,7 +126,7 @@ func BuildApplication(binaryName string, forceRebuild bool, buildMode string, pa
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add windows flags
|
// Add windows flags
|
||||||
if projectOptions.Platform == "windows" && buildMode == BuildModeProd {
|
if runtime.GOOS == "windows" && buildMode == BuildModeProd {
|
||||||
ldflags += "-H windowsgui "
|
ldflags += "-H windowsgui "
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,13 +143,6 @@ func BuildApplication(binaryName string, forceRebuild bool, buildMode string, pa
|
|||||||
}
|
}
|
||||||
|
|
||||||
buildCommand.AddSlice([]string{"-ldflags", ldflags})
|
buildCommand.AddSlice([]string{"-ldflags", ldflags})
|
||||||
|
|
||||||
if projectOptions.CrossCompile {
|
|
||||||
buildCommand.Add("-targets", projectOptions.Platform+"/"+projectOptions.Architecture)
|
|
||||||
buildCommand.Add("-out", "build/"+binaryName)
|
|
||||||
buildCommand.Add("./")
|
|
||||||
}
|
|
||||||
|
|
||||||
err = NewProgramHelper(projectOptions.Verbose).RunCommandArray(buildCommand.AsSlice())
|
err = NewProgramHelper(projectOptions.Verbose).RunCommandArray(buildCommand.AsSlice())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if packSpinner != nil {
|
if packSpinner != nil {
|
||||||
@@ -244,7 +169,7 @@ func BuildApplication(binaryName string, forceRebuild bool, buildMode string, pa
|
|||||||
func PackageApplication(projectOptions *ProjectOptions) error {
|
func PackageApplication(projectOptions *ProjectOptions) error {
|
||||||
// Package app
|
// Package app
|
||||||
message := "Generating .app"
|
message := "Generating .app"
|
||||||
if projectOptions.Platform == "windows" {
|
if runtime.GOOS == "windows" {
|
||||||
err := CheckWindres()
|
err := CheckWindres()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -252,15 +177,12 @@ func PackageApplication(projectOptions *ProjectOptions) error {
|
|||||||
message = "Generating resource bundle"
|
message = "Generating resource bundle"
|
||||||
}
|
}
|
||||||
var packageSpinner *spinner.Spinner
|
var packageSpinner *spinner.Spinner
|
||||||
if !projectOptions.Verbose {
|
if projectOptions.Verbose {
|
||||||
packageSpinner = spinner.New(message)
|
packageSpinner = spinner.New(message)
|
||||||
packageSpinner.SetSpinSpeed(50)
|
packageSpinner.SetSpinSpeed(50)
|
||||||
packageSpinner.Start()
|
packageSpinner.Start()
|
||||||
} else {
|
|
||||||
println(message)
|
|
||||||
}
|
}
|
||||||
|
err := NewPackageHelper().Package(projectOptions)
|
||||||
err := NewPackageHelper(projectOptions.Platform).Package(projectOptions)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if packageSpinner != nil {
|
if packageSpinner != nil {
|
||||||
packageSpinner.Error()
|
packageSpinner.Error()
|
||||||
@@ -332,15 +254,6 @@ func CheckWindres() (err error) {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// CheckIfInstalled returns if application is installed
|
|
||||||
func CheckIfInstalled(application string) (err error) {
|
|
||||||
programHelper := NewProgramHelper()
|
|
||||||
if !programHelper.IsInstalled(application) {
|
|
||||||
return fmt.Errorf("%s not installed. Ensure you have installed %s correctly", application, application)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// InstallFrontendDeps attempts to install the frontend dependencies based on the given options
|
// InstallFrontendDeps attempts to install the frontend dependencies based on the given options
|
||||||
func InstallFrontendDeps(projectDir string, projectOptions *ProjectOptions, forceRebuild bool, caller string) error {
|
func InstallFrontendDeps(projectDir string, projectOptions *ProjectOptions, forceRebuild bool, caller string) error {
|
||||||
|
|
||||||
|
|||||||
@@ -18,16 +18,14 @@ import (
|
|||||||
|
|
||||||
// PackageHelper helps with the 'wails package' command
|
// PackageHelper helps with the 'wails package' command
|
||||||
type PackageHelper struct {
|
type PackageHelper struct {
|
||||||
platform string
|
|
||||||
fs *FSHelper
|
fs *FSHelper
|
||||||
log *Logger
|
log *Logger
|
||||||
system *SystemHelper
|
system *SystemHelper
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewPackageHelper creates a new PackageHelper!
|
// NewPackageHelper creates a new PackageHelper!
|
||||||
func NewPackageHelper(platform string) *PackageHelper {
|
func NewPackageHelper() *PackageHelper {
|
||||||
return &PackageHelper{
|
return &PackageHelper{
|
||||||
platform: platform,
|
|
||||||
fs: NewFSHelper(),
|
fs: NewFSHelper(),
|
||||||
log: NewLogger(),
|
log: NewLogger(),
|
||||||
system: NewSystemHelper(),
|
system: NewSystemHelper(),
|
||||||
@@ -65,31 +63,24 @@ func defaultString(val string, defaultVal string) string {
|
|||||||
func (b *PackageHelper) getPackageFileBaseDir() string {
|
func (b *PackageHelper) getPackageFileBaseDir() string {
|
||||||
// Calculate template base dir
|
// Calculate template base dir
|
||||||
_, filename, _, _ := runtime.Caller(1)
|
_, filename, _, _ := runtime.Caller(1)
|
||||||
return filepath.Join(path.Dir(filename), "packages", b.platform)
|
return filepath.Join(path.Dir(filename), "packages", runtime.GOOS)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Package the application into a platform specific package
|
// Package the application into a platform specific package
|
||||||
func (b *PackageHelper) Package(po *ProjectOptions) error {
|
func (b *PackageHelper) Package(po *ProjectOptions) error {
|
||||||
switch b.platform {
|
switch runtime.GOOS {
|
||||||
case "darwin":
|
case "darwin":
|
||||||
// Check we have the exe
|
// Check we have the exe
|
||||||
if !b.fs.FileExists(po.BinaryName) {
|
if !b.fs.FileExists(po.BinaryName) {
|
||||||
// Check cross-compiled application
|
|
||||||
if b.platform == runtime.GOOS {
|
|
||||||
return fmt.Errorf("cannot bundle non-existent binary file '%s'. Please build with 'wails build' first", po.BinaryName)
|
return fmt.Errorf("cannot bundle non-existent binary file '%s'. Please build with 'wails build' first", po.BinaryName)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := b.fs.FindFile(path.Join(b.fs.Cwd(), "build"), "darwin"); err != nil {
|
|
||||||
return fmt.Errorf("cannot bundle non-existent cross-compiled binary file '%s'. Please build with 'wails build -x darwin' first", po.BinaryName)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return b.packageOSX(po)
|
return b.packageOSX(po)
|
||||||
case "windows":
|
case "windows":
|
||||||
return b.PackageWindows(po, false)
|
return b.PackageWindows(po, false)
|
||||||
case "linux":
|
case "linux":
|
||||||
return fmt.Errorf("linux is not supported at this time. Please see https://github.com/wailsapp/wails/issues/2")
|
return fmt.Errorf("linux is not supported at this time. Please see https://github.com/wailsapp/wails/issues/2")
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("platform '%s' not supported for bundling yet", b.platform)
|
return fmt.Errorf("platform '%s' not supported for bundling yet", runtime.GOOS)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,22 +103,6 @@ func (b *PackageHelper) packageOSX(po *ProjectOptions) error {
|
|||||||
|
|
||||||
// Check binary exists
|
// Check binary exists
|
||||||
source := path.Join(b.fs.Cwd(), exe)
|
source := path.Join(b.fs.Cwd(), exe)
|
||||||
|
|
||||||
if b.platform != runtime.GOOS {
|
|
||||||
|
|
||||||
file, err := b.fs.FindFile(path.Join(b.fs.Cwd(), "build"), "darwin")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// rename to exe
|
|
||||||
if err := os.Rename(path.Join(b.fs.Cwd(), "build", file), path.Join(b.fs.Cwd(), "build", exe)); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
source = path.Join(b.fs.Cwd(), "build", exe)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !b.fs.FileExists(source) {
|
if !b.fs.FileExists(source) {
|
||||||
// We need to build!
|
// We need to build!
|
||||||
return fmt.Errorf("Target '%s' not available. Has it been compiled yet?", exe)
|
return fmt.Errorf("Target '%s' not available. Has it been compiled yet?", exe)
|
||||||
@@ -217,25 +192,6 @@ func (b *PackageHelper) PackageWindows(po *ProjectOptions, cleanUp bool) error {
|
|||||||
// Build syso
|
// Build syso
|
||||||
sysofile := filepath.Join(b.fs.Cwd(), basename+"-res.syso")
|
sysofile := filepath.Join(b.fs.Cwd(), basename+"-res.syso")
|
||||||
|
|
||||||
// cross-compile
|
|
||||||
if b.platform != runtime.GOOS {
|
|
||||||
folder, err := os.Getwd()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
args := []string{
|
|
||||||
"docker", "run", "--rm",
|
|
||||||
"-v", folder + ":/build",
|
|
||||||
"--entrypoint", "/bin/sh",
|
|
||||||
"techknowlogick/xgo",
|
|
||||||
"-c", "/usr/bin/x86_64-w64-mingw32-windres -o /build/" + basename + "-res.syso /build/" + basename + ".rc",
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := NewProgramHelper().RunCommandArray(args); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
batfile, err := fs.LocalDir(".")
|
batfile, err := fs.LocalDir(".")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -247,7 +203,6 @@ func (b *PackageHelper) PackageWindows(po *ProjectOptions, cleanUp bool) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// clean up
|
// clean up
|
||||||
if cleanUp {
|
if cleanUp {
|
||||||
|
|||||||
@@ -159,9 +159,6 @@ type ProjectOptions struct {
|
|||||||
WailsVersion string
|
WailsVersion string
|
||||||
typescriptDefsFilename string
|
typescriptDefsFilename string
|
||||||
Verbose bool `json:"-"`
|
Verbose bool `json:"-"`
|
||||||
CrossCompile bool `json:"-"`
|
|
||||||
Platform string `json:"-"`
|
|
||||||
Architecture string `json:"-"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Defaults sets the default project template
|
// Defaults sets the default project template
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"core-js": "^3.1.4",
|
"core-js": "^3.6.4",
|
||||||
"react": "^16.8.6",
|
"react": "^16.13.0",
|
||||||
"react-dom": "^16.8.6",
|
"react-dom": "^16.13.0",
|
||||||
"wails-react-scripts": "3.0.1-2",
|
"wails-react-scripts": "3.0.1-2",
|
||||||
"react-modal": "3.8.1",
|
"react-modal": "3.11.2",
|
||||||
"@wailsapp/runtime": "^1.0.0"
|
"@wailsapp/runtime": "^1.0.10"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "react-scripts start",
|
"start": "react-scripts start",
|
||||||
|
|||||||
@@ -8,21 +8,21 @@
|
|||||||
"lint": "vue-cli-service lint"
|
"lint": "vue-cli-service lint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"core-js": "^3.6.1",
|
"core-js": "^3.6.4",
|
||||||
"regenerator-runtime": "^0.13.3",
|
"regenerator-runtime": "^0.13.3",
|
||||||
"vue": "^2.5.22",
|
"vue": "^2.6.11",
|
||||||
"@wailsapp/runtime": "^1.0.0"
|
"@wailsapp/runtime": "^1.0.10"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vue/cli-plugin-babel": "^3.4.0",
|
"@vue/cli-plugin-babel": "^4.2.3",
|
||||||
"@vue/cli-plugin-eslint": "^3.4.0",
|
"@vue/cli-plugin-eslint": "^4.2.3",
|
||||||
"@vue/cli-service": "^3.4.0",
|
"@vue/cli-service": "^4.2.3",
|
||||||
"babel-eslint": "^10.0.1",
|
"babel-eslint": "^10.1.0",
|
||||||
"eslint": "^5.8.0",
|
"eslint": "^6.8.0",
|
||||||
"eslint-plugin-vue": "^5.0.0",
|
"eslint-plugin-vue": "^6.2.1",
|
||||||
"eventsource-polyfill": "^0.9.6",
|
"eventsource-polyfill": "^0.9.6",
|
||||||
"vue-template-compiler": "^2.5.21",
|
"vue-template-compiler": "^2.6.11",
|
||||||
"webpack-hot-middleware": "^2.24.3"
|
"webpack-hot-middleware": "^2.25.0"
|
||||||
},
|
},
|
||||||
"eslintConfig": {
|
"eslintConfig": {
|
||||||
"root": true,
|
"root": true,
|
||||||
|
|||||||
@@ -8,23 +8,23 @@
|
|||||||
"lint": "vue-cli-service lint"
|
"lint": "vue-cli-service lint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"core-js": "^3.6.1",
|
"core-js": "^3.6.4",
|
||||||
"regenerator-runtime": "^0.13.3",
|
"regenerator-runtime": "^0.13.3",
|
||||||
"material-design-icons-iconfont": "^5.0.1",
|
"material-design-icons-iconfont": "^5.0.1",
|
||||||
"vue": "^2.5.22",
|
"vue": "^2.5.22",
|
||||||
"vuetify": "^1.5.14",
|
"vuetify": "^1.5.14",
|
||||||
"@wailsapp/runtime": "^1.0.0"
|
"@wailsapp/runtime": "^1.0.10"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vue/cli-plugin-babel": "^3.4.0",
|
"@vue/cli-plugin-babel": "^4.2.3",
|
||||||
"@vue/cli-plugin-eslint": "^3.4.0",
|
"@vue/cli-plugin-eslint": "^4.2.3",
|
||||||
"@vue/cli-service": "^3.4.0",
|
"@vue/cli-service": "^4.2.3",
|
||||||
"babel-eslint": "^10.0.1",
|
"babel-eslint": "^10.1.0",
|
||||||
"eslint": "^5.8.0",
|
"eslint": "^6.8.0",
|
||||||
"eslint-plugin-vue": "^5.0.0",
|
"eslint-plugin-vue": "^6.2.1",
|
||||||
"eventsource-polyfill": "^0.9.6",
|
"eventsource-polyfill": "^0.9.6",
|
||||||
"vue-template-compiler": "^2.5.21",
|
"vue-template-compiler": "^2.6.11",
|
||||||
"webpack-hot-middleware": "^2.24.3"
|
"webpack-hot-middleware": "^2.25.0"
|
||||||
},
|
},
|
||||||
"eslintConfig": {
|
"eslintConfig": {
|
||||||
"root": true,
|
"root": true,
|
||||||
|
|||||||
@@ -8,23 +8,23 @@
|
|||||||
"lint": "vue-cli-service lint"
|
"lint": "vue-cli-service lint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"core-js": "^3.6.1",
|
"core-js": "^3.6.4",
|
||||||
"regenerator-runtime": "^0.13.3",
|
"regenerator-runtime": "^0.13.3",
|
||||||
"vue": "^2.5.22",
|
"vue": "^2.6.11",
|
||||||
"vuetify": "^2.0.15",
|
"vuetify": "^2.2.15",
|
||||||
"@wailsapp/runtime": "^1.0.0"
|
"@wailsapp/runtime": "^1.0.10"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@mdi/font": "^4.3.95",
|
"@mdi/font": "^4.9.95",
|
||||||
"@vue/cli-plugin-babel": "^3.4.0",
|
"@vue/cli-plugin-babel": "^4.2.3",
|
||||||
"@vue/cli-plugin-eslint": "^3.4.0",
|
"@vue/cli-plugin-eslint": "^4.2.3",
|
||||||
"@vue/cli-service": "^3.4.0",
|
"@vue/cli-service": "^4.2.3",
|
||||||
"babel-eslint": "^10.0.1",
|
"babel-eslint": "^10.1.0",
|
||||||
"eslint": "^5.8.0",
|
"eslint": "^6.8.0",
|
||||||
"eslint-plugin-vue": "^5.0.0",
|
"eslint-plugin-vue": "^6.2.1",
|
||||||
"eventsource-polyfill": "^0.9.6",
|
"eventsource-polyfill": "^0.9.6",
|
||||||
"vue-template-compiler": "^2.5.21",
|
"vue-template-compiler": "^2.6.11",
|
||||||
"webpack-hot-middleware": "^2.24.3"
|
"webpack-hot-middleware": "^2.25.0"
|
||||||
},
|
},
|
||||||
"eslintConfig": {
|
"eslintConfig": {
|
||||||
"root": true,
|
"root": true,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
// Version - Wails version
|
// Version - Wails version
|
||||||
const Version = "v1.0.2"
|
const Version = "v1.0.3-pre2"
|
||||||
|
|||||||
@@ -3,10 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"runtime"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/leaanthony/slicer"
|
|
||||||
"github.com/leaanthony/spinner"
|
"github.com/leaanthony/spinner"
|
||||||
"github.com/wailsapp/wails/cmd"
|
"github.com/wailsapp/wails/cmd"
|
||||||
)
|
)
|
||||||
@@ -18,7 +15,6 @@ func init() {
|
|||||||
var debugMode = false
|
var debugMode = false
|
||||||
var typescriptFilename = ""
|
var typescriptFilename = ""
|
||||||
var verbose = false
|
var verbose = false
|
||||||
var platform = ""
|
|
||||||
|
|
||||||
buildSpinner := spinner.NewSpinner()
|
buildSpinner := spinner.NewSpinner()
|
||||||
buildSpinner.SetSpinSpeed(50)
|
buildSpinner.SetSpinSpeed(50)
|
||||||
@@ -30,8 +26,7 @@ func init() {
|
|||||||
BoolFlag("f", "Force rebuild of application components", &forceRebuild).
|
BoolFlag("f", "Force rebuild of application components", &forceRebuild).
|
||||||
BoolFlag("d", "Build in Debug mode", &debugMode).
|
BoolFlag("d", "Build in Debug mode", &debugMode).
|
||||||
BoolFlag("verbose", "Verbose output", &verbose).
|
BoolFlag("verbose", "Verbose output", &verbose).
|
||||||
StringFlag("t", "Generate Typescript definitions to given file (at runtime)", &typescriptFilename).
|
StringFlag("t", "Generate Typescript definitions to given file (at runtime)", &typescriptFilename)
|
||||||
StringFlag("x", "Cross-compile application to specified platform via xgo", &platform)
|
|
||||||
|
|
||||||
initCmd.Action(func() error {
|
initCmd.Action(func() error {
|
||||||
|
|
||||||
@@ -135,29 +130,6 @@ func init() {
|
|||||||
buildSpinner.Success()
|
buildSpinner.Success()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set cross-compile
|
|
||||||
projectOptions.Platform = runtime.GOOS
|
|
||||||
if len(platform) > 0 {
|
|
||||||
|
|
||||||
projectOptions.CrossCompile = true
|
|
||||||
projectOptions.Platform = platform
|
|
||||||
projectOptions.Architecture = "amd64"
|
|
||||||
|
|
||||||
// check build architecture
|
|
||||||
if strings.Contains(platform, "/") {
|
|
||||||
p := strings.Split(platform, "/")
|
|
||||||
projectOptions.Platform = p[0]
|
|
||||||
projectOptions.Architecture = p[1]
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check supported platforms
|
|
||||||
supportedPlatforms := slicer.String([]string{"linux/amd64", "linux/386", "windows/amd64", "windows/386", "darwin/amd64"})
|
|
||||||
targetPlatform := projectOptions.Platform + "/" + projectOptions.Architecture
|
|
||||||
if !supportedPlatforms.Contains(targetPlatform) {
|
|
||||||
println("\n*** WARNING: Unsupported target platform", targetPlatform+".", "Supported:", supportedPlatforms.Join(", "))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
err = cmd.BuildApplication(projectOptions.BinaryName, forceRebuild, buildMode, packageApp, projectOptions)
|
err = cmd.BuildApplication(projectOptions.BinaryName, forceRebuild, buildMode, packageApp, projectOptions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
2
go.mod
2
go.mod
@@ -10,7 +10,7 @@ require (
|
|||||||
github.com/kennygrant/sanitize v1.2.4
|
github.com/kennygrant/sanitize v1.2.4
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect
|
github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect
|
||||||
github.com/leaanthony/mewn v0.10.7
|
github.com/leaanthony/mewn v0.10.7
|
||||||
github.com/leaanthony/slicer v1.4.1
|
github.com/leaanthony/slicer v1.4.0
|
||||||
github.com/leaanthony/spinner v0.5.3
|
github.com/leaanthony/spinner v0.5.3
|
||||||
github.com/mattn/go-colorable v0.1.1 // indirect
|
github.com/mattn/go-colorable v0.1.1 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.7 // indirect
|
github.com/mattn/go-isatty v0.0.7 // indirect
|
||||||
|
|||||||
4
go.sum
4
go.sum
@@ -28,8 +28,8 @@ github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw=
|
|||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
github.com/leaanthony/mewn v0.10.7 h1:jCcNJyIUOpwj+I5SuATvCugDjHkoo+j6ubEOxxrxmPA=
|
github.com/leaanthony/mewn v0.10.7 h1:jCcNJyIUOpwj+I5SuATvCugDjHkoo+j6ubEOxxrxmPA=
|
||||||
github.com/leaanthony/mewn v0.10.7/go.mod h1:CRkTx8unLiSSilu/Sd7i1LwrdaAL+3eQ3ses99qGMEQ=
|
github.com/leaanthony/mewn v0.10.7/go.mod h1:CRkTx8unLiSSilu/Sd7i1LwrdaAL+3eQ3ses99qGMEQ=
|
||||||
github.com/leaanthony/slicer v1.4.1 h1:X/SmRIDhkUAolP79mSTO0jTcVX1k504PJBqvV6TwP0w=
|
github.com/leaanthony/slicer v1.4.0 h1:Q9u4w+UBU4WHjXnEDdz+eRLMKF/rnyosRBiqULnc1J8=
|
||||||
github.com/leaanthony/slicer v1.4.1/go.mod h1:FwrApmf8gOrpzEWM2J/9Lh79tyq8KTX5AzRtwV7m4AY=
|
github.com/leaanthony/slicer v1.4.0/go.mod h1:FwrApmf8gOrpzEWM2J/9Lh79tyq8KTX5AzRtwV7m4AY=
|
||||||
github.com/leaanthony/spinner v0.5.3 h1:IMTvgdQCec5QA4qRy0wil4XsRP+QcG1OwLWVK/LPZ5Y=
|
github.com/leaanthony/spinner v0.5.3 h1:IMTvgdQCec5QA4qRy0wil4XsRP+QcG1OwLWVK/LPZ5Y=
|
||||||
github.com/leaanthony/spinner v0.5.3/go.mod h1:oHlrvWicr++CVV7ALWYi+qHk/XNA91D9IJ48IqmpVUo=
|
github.com/leaanthony/spinner v0.5.3/go.mod h1:oHlrvWicr++CVV7ALWYi+qHk/XNA91D9IJ48IqmpVUo=
|
||||||
github.com/leaanthony/synx v0.1.0 h1:R0lmg2w6VMb8XcotOwAe5DLyzwjLrskNkwU7LLWsyL8=
|
github.com/leaanthony/synx v0.1.0 h1:R0lmg2w6VMb8XcotOwAe5DLyzwjLrskNkwU7LLWsyL8=
|
||||||
|
|||||||
Reference in New Issue
Block a user