mirror of
https://github.com/taigrr/wails.git
synced 2026-04-03 05:38:56 -07:00
Compare commits
25 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7b603a2776 | ||
|
|
7c04a854da | ||
|
|
39d687fa31 | ||
|
|
8a768cce77 | ||
|
|
ee04a9235d | ||
|
|
7e67562e19 | ||
|
|
25d8a8763a | ||
|
|
7929584ec5 | ||
|
|
73ee9ef530 | ||
|
|
003eecc4ff | ||
|
|
f97341abbe | ||
|
|
e2599c0f76 | ||
|
|
0c2c56e1dd | ||
|
|
39878c1a52 | ||
|
|
c0932f3fa4 | ||
|
|
dc605c1683 | ||
|
|
c7c9ace232 | ||
|
|
5be197b68f | ||
|
|
3e5c406c95 | ||
|
|
be6bebebe4 | ||
|
|
5b33ed28fd | ||
|
|
5267968151 | ||
|
|
7b31c8ddd2 | ||
|
|
1e2bc5728a | ||
|
|
e0aab7c27f |
@@ -39,3 +39,5 @@ Wails is what it is because of the time and effort given by these great people.
|
||||
* [Kyle](https://github.com/kmuchmore)
|
||||
* [Balakrishna Prasad Ganne](https://github.com/aayush420)
|
||||
* [Charaf Rezrazi](https://github.com/Rezrazi)
|
||||
* [misitebao](https://github.com/misitebao)
|
||||
* [Elie Grenon](https://github.com/DrunkenPoney)
|
||||
File diff suppressed because one or more lines are too long
@@ -65,6 +65,8 @@ const (
|
||||
Solus
|
||||
// Ctlos Linux distribution
|
||||
Ctlos
|
||||
// EndeavourOS linux distribution
|
||||
EndeavourOS
|
||||
)
|
||||
|
||||
// DistroInfo contains all the information relating to a linux distribution
|
||||
@@ -132,7 +134,7 @@ func parseOsRelease(osRelease string) *DistroInfo {
|
||||
case "archlabs":
|
||||
result.Distribution = ArchLabs
|
||||
case "ctlos":
|
||||
result.Distribution = Ctlos
|
||||
result.Distribution = Ctlos
|
||||
case "debian":
|
||||
result.Distribution = Debian
|
||||
case "ubuntu":
|
||||
@@ -171,6 +173,8 @@ func parseOsRelease(osRelease string) *DistroInfo {
|
||||
result.Distribution = PopOS
|
||||
case "solus":
|
||||
result.Distribution = Solus
|
||||
case "endeavouros":
|
||||
result.Distribution = EndeavourOS
|
||||
default:
|
||||
result.Distribution = Unknown
|
||||
}
|
||||
|
||||
@@ -202,7 +202,16 @@ distributions:
|
||||
name: Ctlos Linux
|
||||
gccversioncommand: *gccdumpversion
|
||||
programs: *archdefaultprograms
|
||||
libraries: *archdefaultlibraries
|
||||
libraries: *archdefaultlibraries
|
||||
endeavouros:
|
||||
id: endeavouros
|
||||
releases:
|
||||
default:
|
||||
version: default
|
||||
name: EndeavourOS
|
||||
gccversioncommand: *gccdumpversion
|
||||
programs: *archdefaultprograms
|
||||
libraries: *archdefaultlibraries
|
||||
manjaro:
|
||||
id: manjaro
|
||||
releases:
|
||||
|
||||
@@ -24,11 +24,19 @@ func NewSemanticVersion(version string) (*SemanticVersion, error) {
|
||||
|
||||
// IsRelease returns true if it's a release version
|
||||
func (s *SemanticVersion) IsRelease() bool {
|
||||
// Limit to v1
|
||||
if s.Version.Major() != 1 {
|
||||
return false
|
||||
}
|
||||
return len(s.Version.Prerelease()) == 0 && len(s.Version.Metadata()) == 0
|
||||
}
|
||||
|
||||
// IsPreRelease returns true if it's a prerelease version
|
||||
func (s *SemanticVersion) IsPreRelease() bool {
|
||||
// Limit to v1
|
||||
if s.Version.Major() != 1 {
|
||||
return false
|
||||
}
|
||||
return len(s.Version.Prerelease()) > 0
|
||||
}
|
||||
|
||||
|
||||
65
cmd/semver_test.go
Normal file
65
cmd/semver_test.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSemanticVersion_IsPreRelease(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
version string
|
||||
want bool
|
||||
}{
|
||||
{"v1.6.7-pre0", "v1.6.7-pre0", true},
|
||||
{"v2.6.7+pre0", "v2.6.7+pre0", false},
|
||||
{"v2.6.7", "v2.6.7", false},
|
||||
{"v2.0.0+alpha.1", "v2.0.0+alpha.1", false},
|
||||
{"v2.0.0-alpha.1", "v2.0.0-alpha.1", false},
|
||||
{"v1.6.7", "v1.6.7", false},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
semanticversion, err := NewSemanticVersion(tt.version)
|
||||
if err != nil {
|
||||
t.Errorf("Invalid semantic version: %s", semanticversion)
|
||||
return
|
||||
}
|
||||
s := &SemanticVersion{
|
||||
Version: semanticversion.Version,
|
||||
}
|
||||
if got := s.IsPreRelease(); got != tt.want {
|
||||
t.Errorf("IsPreRelease() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestSemanticVersion_IsRelease(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
version string
|
||||
want bool
|
||||
}{
|
||||
{"v1.6.7", "v1.6.7", true},
|
||||
{"v2.6.7-pre0", "v2.6.7-pre0", false},
|
||||
{"v2.6.7", "v2.6.7", false},
|
||||
{"v2.6.7+release", "v2.6.7+release", false},
|
||||
{"v2.0.0-alpha.1", "v2.0.0-alpha.1", false},
|
||||
{"v1.6.7-pre0", "v1.6.7-pre0", false},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
semanticversion, err := NewSemanticVersion(tt.version)
|
||||
if err != nil {
|
||||
t.Errorf("Invalid semantic version: %s", semanticversion)
|
||||
return
|
||||
}
|
||||
s := &SemanticVersion{
|
||||
Version: semanticversion.Version,
|
||||
}
|
||||
if got := s.IsRelease(); got != tt.want {
|
||||
t.Errorf("IsRelease() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -276,7 +276,7 @@ func CheckDependencies(logger *Logger) (bool, error) {
|
||||
switch distroInfo.Distribution {
|
||||
case Ubuntu, Debian, Zorin, Parrot, Linuxmint, Elementary, Kali, Neon, Deepin, Raspbian, PopOS:
|
||||
libraryChecker = DpkgInstalled
|
||||
case Arch, ArcoLinux, ArchLabs, Ctlos, Manjaro, ManjaroARM:
|
||||
case Arch, ArcoLinux, ArchLabs, Ctlos, Manjaro, ManjaroARM, EndeavourOS:
|
||||
libraryChecker = PacmanInstalled
|
||||
case CentOS, Fedora, Tumbleweed, Leap:
|
||||
libraryChecker = RpmInstalled
|
||||
|
||||
@@ -19,16 +19,16 @@
|
||||
"@types/mocha": "^8.0.3",
|
||||
"@typescript-eslint/eslint-plugin": "^4.3.0",
|
||||
"@typescript-eslint/parser": "^4.3.0",
|
||||
"@vue/cli-plugin-eslint": "~4.5.6",
|
||||
"@vue/cli-plugin-router": "~4.5.6",
|
||||
"@vue/cli-plugin-typescript": "~4.5.6",
|
||||
"@vue/cli-plugin-unit-mocha": "~4.5.6",
|
||||
"@vue/cli-service": "~4.5.6",
|
||||
"@vue/cli-plugin-eslint": "~4.5.9",
|
||||
"@vue/cli-plugin-router": "~4.5.9",
|
||||
"@vue/cli-plugin-typescript": "~4.5.9",
|
||||
"@vue/cli-plugin-unit-mocha": "~4.5.9",
|
||||
"@vue/cli-service": "~4.5.9",
|
||||
"@vue/compiler-sfc": "^3.0.0",
|
||||
"@vue/eslint-config-typescript": "^5.1.0",
|
||||
"@vue/eslint-config-typescript": "^7.0.0",
|
||||
"@vue/test-utils": "^2.0.0-0",
|
||||
"chai": "^4.2.0",
|
||||
"eslint": "^7.10.0",
|
||||
"eslint": "<7.0.0",
|
||||
"eslint-plugin-vue": "^7.0.0",
|
||||
"node-sass": "^4.14.1",
|
||||
"sass-loader": "^10.0.2",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package cmd
|
||||
|
||||
// Version - Wails version
|
||||
const Version = "v1.8.1-pre6"
|
||||
const Version = "v1.11.0"
|
||||
@@ -83,6 +83,9 @@ func init() {
|
||||
return fmt.Errorf("Unable to find 'project.json'. Please check you are in a Wails project directory")
|
||||
}
|
||||
|
||||
// Set firebug flag
|
||||
projectOptions.UseFirebug = usefirebug
|
||||
|
||||
// Check that this platform is supported
|
||||
if !projectOptions.PlatformSupported() {
|
||||
logger.Yellow("WARNING: This project is unsupported on %s - it probably won't work!\n Valid platforms: %s\n", runtime.GOOS, strings.Join(projectOptions.Platforms, ", "))
|
||||
|
||||
70
config.go
70
config.go
@@ -1,20 +1,37 @@
|
||||
package wails
|
||||
|
||||
import (
|
||||
"github.com/leaanthony/mewn"
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"github.com/wailsapp/wails/runtime"
|
||||
)
|
||||
|
||||
// AppConfig is the configuration structure used when creating a Wails App object
|
||||
type AppConfig struct {
|
||||
Width, Height int
|
||||
Title string
|
||||
defaultHTML string
|
||||
HTML string
|
||||
JS string
|
||||
CSS string
|
||||
Colour string
|
||||
Resizable bool
|
||||
// The width and height of your application in pixels
|
||||
Width, Height int
|
||||
|
||||
// The title to put in the title bar
|
||||
Title string
|
||||
|
||||
// The HTML your app should use. If you leave it blank, a default will be used:
|
||||
// <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="IE=edge" content="IE=edge"></head><body><div id="app"></div><script type="text/javascript"></script></body></html>
|
||||
HTML string
|
||||
|
||||
// The Javascript your app should use. Normally this should be generated by a bundler.
|
||||
JS string
|
||||
|
||||
// The CSS your app should use. Normally this should be generated by a bundler.
|
||||
CSS string
|
||||
|
||||
// The colour of your window. Can take "#fff", "rgb(255,255,255)", "rgba(255,255,255,1)" formats
|
||||
Colour string
|
||||
|
||||
// Indicates whether your app should be resizable
|
||||
Resizable bool
|
||||
|
||||
// Indicated if the devtools should be disabled
|
||||
DisableInspector bool
|
||||
}
|
||||
|
||||
@@ -33,9 +50,14 @@ func (a *AppConfig) GetTitle() string {
|
||||
return a.Title
|
||||
}
|
||||
|
||||
// GetDefaultHTML returns the default HTML
|
||||
func (a *AppConfig) GetDefaultHTML() string {
|
||||
return a.defaultHTML
|
||||
// GetHTML returns the default HTML
|
||||
func (a *AppConfig) GetHTML() string {
|
||||
if len(a.HTML) > 0 {
|
||||
a.HTML = url.QueryEscape(a.HTML)
|
||||
a.HTML = "data:text/html," + strings.ReplaceAll(a.HTML, "+", "%20")
|
||||
a.HTML = strings.ReplaceAll(a.HTML, "%3D", "=")
|
||||
}
|
||||
return a.HTML
|
||||
}
|
||||
|
||||
// GetResizable returns true if the window should be resizable
|
||||
@@ -75,10 +97,18 @@ func (a *AppConfig) merge(in *AppConfig) error {
|
||||
a.Colour = in.Colour
|
||||
}
|
||||
|
||||
if in.HTML != "" {
|
||||
a.HTML = in.HTML
|
||||
}
|
||||
|
||||
if in.JS != "" {
|
||||
a.JS = in.JS
|
||||
}
|
||||
|
||||
if in.HTML != "" {
|
||||
a.HTML = in.HTML
|
||||
}
|
||||
|
||||
if in.Width != 0 {
|
||||
a.Width = in.Width
|
||||
}
|
||||
@@ -99,7 +129,7 @@ func newConfig(userConfig *AppConfig) (*AppConfig, error) {
|
||||
Resizable: true,
|
||||
Title: "My Wails App",
|
||||
Colour: "#FFF", // White by default
|
||||
HTML: mewn.String("./runtime/assets/default.html"),
|
||||
HTML: defaultHTML,
|
||||
}
|
||||
|
||||
if userConfig != nil {
|
||||
@@ -111,3 +141,17 @@ func newConfig(userConfig *AppConfig) (*AppConfig, error) {
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
var defaultHTML = `<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
</body>
|
||||
|
||||
</html>`
|
||||
|
||||
@@ -6,9 +6,9 @@ type AppConfig interface {
|
||||
GetHeight() int
|
||||
GetTitle() string
|
||||
GetResizable() bool
|
||||
GetDefaultHTML() string
|
||||
GetHTML() string
|
||||
GetDisableInspector() bool
|
||||
GetColour() string
|
||||
GetCSS() string
|
||||
GetJS() string
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -58,7 +58,7 @@ func (w *WebView) Initialise(config interfaces.AppConfig, ipc interfaces.IPCMana
|
||||
Height: config.GetHeight(),
|
||||
Title: config.GetTitle(),
|
||||
Resizable: config.GetResizable(),
|
||||
URL: config.GetDefaultHTML(),
|
||||
URL: config.GetHTML(),
|
||||
Debug: !config.GetDisableInspector(),
|
||||
ExternalInvokeCallback: func(_ wv.WebView, message string) {
|
||||
w.ipc.Dispatch(message, w.callback)
|
||||
|
||||
@@ -364,6 +364,7 @@ struct webview_priv
|
||||
webkit_web_view_get_settings(WEBKIT_WEB_VIEW(w->priv.webview));
|
||||
webkit_settings_set_enable_write_console_messages_to_stdout(settings, true);
|
||||
webkit_settings_set_enable_developer_extras(settings, true);
|
||||
webkit_settings_set_hardware_acceleration_policy(settings, WEBKIT_HARDWARE_ACCELERATION_POLICY_ALWAYS);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script type="text/javascript">function AddScript(js, callbackID) {
|
||||
var script = document.createElement('script');
|
||||
script.text = js;
|
||||
document.body.appendChild(script);
|
||||
}</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
6
runtime/js/package-lock.json
generated
6
runtime/js/package-lock.json
generated
@@ -3959,9 +3959,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"ini": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
|
||||
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
|
||||
"version": "1.3.8",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
|
||||
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
|
||||
"dev": true
|
||||
},
|
||||
"interpret": {
|
||||
|
||||
8
runtime/js/runtime/package-lock.json
generated
8
runtime/js/runtime/package-lock.json
generated
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wailsapp/runtime",
|
||||
"version": "1.1.0",
|
||||
"version": "1.1.1",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@@ -130,9 +130,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"ini": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
|
||||
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
|
||||
"version": "1.3.8",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
|
||||
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
|
||||
"dev": true
|
||||
},
|
||||
"invert-kv": {
|
||||
|
||||
Reference in New Issue
Block a user