Compare commits

...

142 Commits

Author SHA1 Message Date
Lea Anthony 750a02efc6 chore: version bump 2019-07-29 17:54:41 +10:00
Lea Anthony 5e047debfc fix: add support back for ubuntu, redhat 2019-07-29 17:52:22 +10:00
Lea Anthony 9cac336708 docs: updated contributors 2019-07-29 09:03:17 +10:00
Lea Anthony 827c2b9a95 Merge pull request #172 from Chronophylos/dont-use-lsb_release
Drop lsb_release
2019-07-29 09:01:41 +10:00
Chronophylos b36a3c4abb fix assumption
Signed-off-by: Chronophylos <nikolai@chronophylos.com>
2019-07-28 13:39:03 +02:00
Chronophylos 0bac205565 show distro id when creating a issue
Signed-off-by: Chronophylos <nikolai@chronophylos.com>
2019-07-28 13:16:56 +02:00
Chronophylos 67a8ad8e12 change DistributionID to NAME=
Signed-off-by: Chronophylos <nikolai@chronophylos.com>
2019-07-28 00:44:46 +02:00
Chronophylos 9de2f66f50 drop lsb_release
Signed-off-by: Chronophylos <nikolai@chronophylos.com>
2019-07-27 21:26:11 +02:00
Lea Anthony e38d6e7ef0 Merge pull request #165 from bt/master
Fix Masterminds/semver reference import path (case-sensitivity)
2019-07-22 18:33:54 +10:00
Bertram Truong 2f21fc3575 Fix Masterminds/semver reference import path (case-sensitivity) 2019-07-22 10:25:23 +10:00
Lea Anthony 63e73f5f64 chore: Version Bump 2019-07-20 19:40:43 +10:00
Lea Anthony e1adc1ba49 Merge pull request #163 from wailsapp/more-runtime-refactor
More runtime refactor
2019-07-20 19:35:59 +10:00
Lea Anthony 030e911ea4 feat: significant overhaul of runtime 2019-07-20 19:32:30 +10:00
Lea Anthony d2f114e44e Update contributors 2019-07-19 08:08:26 +10:00
Lea Anthony 700d3f84d3 Merge pull request #161 from fdidron/145-Fix-React-Error-Windows
145 fix react error windows
2019-07-19 00:32:20 +10:00
Florian Didron 1d49042013 style: replace double quotes with single quotes 2019-07-18 21:46:25 +09:00
Florian Didron 8671b1e6cf fix: add promises polyfill for the windows target 2019-07-18 21:10:42 +09:00
Lea Anthony 517d6c44ec fix: Print stdout on error :rolleyes: 2019-07-18 09:12:57 +10:00
Lea Anthony a082a659ea fix: renamed global logger 2019-07-16 18:29:15 +10:00
Lea Anthony 083153efc9 fix: eslintrc config 2019-07-13 22:32:19 +10:00
Lea Anthony 65a2560153 chore: bump version 2019-07-13 22:30:32 +10:00
Lea Anthony 29535c10a3 Merge pull request #157 from wailsapp/runtime-refactor
Runtime refactor
2019-07-13 22:27:36 +10:00
Lea Anthony 24c7362163 Even more fixes 2019-07-13 22:18:42 +10:00
Lea Anthony f6ff7d7b16 fix: linting for hound 2019-07-13 22:12:49 +10:00
Lea Anthony b0a075cdf2 fix: more lint fixes 2019-07-13 22:10:43 +10:00
Lea Anthony 98d4d6b33c config: eslint 2019-07-13 15:42:57 +10:00
Lea Anthony 9ba3e0512b fix: linting 2019-07-13 15:35:50 +10:00
Lea Anthony eff63175e5 fix: lint 2019-07-13 15:34:00 +10:00
Lea Anthony 75a0b632bc fix: capitalisation and binding fix 2019-07-13 15:30:52 +10:00
Lea Anthony a2af626477 fix: config errors 2019-07-12 10:22:19 +10:00
Lea Anthony 8aa97f64ef feat: major refactor 2019-07-12 10:12:15 +10:00
Lea Anthony caa1e04b5a Update README.md 2019-07-08 21:29:59 +10:00
Lea Anthony cddf6a0204 chore: version bump 2019-07-07 10:28:58 +10:00
Lea Anthony 9fa1f42dc7 Merge pull request #155 from wailsapp/154-Support-Distribution-'Fedora'
feat: test support for Fedora
2019-07-07 10:28:19 +10:00
Lea Anthony c7e709d487 feat: test support for Fedora 2019-07-07 10:25:59 +10:00
Lea Anthony 6801398f3d docs: update contributors 2019-07-07 10:17:44 +10:00
Lea Anthony 982d14c049 Merge pull request #152 from fallendusk/master
Add support for Gentoo
2019-07-07 10:16:21 +10:00
fallendusk ddbaf55ae7 Merge branch 'develop' into master 2019-07-06 17:31:21 -04:00
Greg Helton 5552a8501b Add support for Gentoo 2019-07-06 01:43:02 -04:00
Lea Anthony b997becb2f chore: bump version 2019-07-03 19:47:03 +10:00
Lea Anthony 753516bab7 Merge pull request #149 from wailsapp/148-Support-Distribution-'Zorin'
148 support distribution 'zorin'
2019-07-03 19:46:20 +10:00
Lea Anthony 89992d8636 feat: attempt to support Zorin 2019-07-03 19:42:32 +10:00
Lea Anthony 7dd42f964b Merge pull request #147 from wailsapp/develop
Release v0.17.0
2019-07-02 17:39:41 +10:00
Lea Anthony 078a7a5519 feat: release v0.17.0 2019-07-02 17:38:18 +10:00
Lea Anthony d811f721ac docs: be explicit about node version 2019-07-01 21:50:16 +10:00
Lea Anthony 26950ba045 chore: version bump 2019-07-01 21:36:07 +10:00
Lea Anthony 80adb70e78 chore: version bump 2019-07-01 21:35:30 +10:00
Lea Anthony 0c042acd4a fix: template name order 2019-07-01 21:35:06 +10:00
Lea Anthony 0ad0c4151a feat: use slicer v1.3.2 2019-07-01 18:27:10 +10:00
Lea Anthony 65a8a1e1f7 feat: sort templates by name 2019-07-01 18:26:24 +10:00
Lea Anthony a2ac8af882 chore: Bump to version v0.16.5-pre 2019-07-01 18:10:26 +10:00
Lea Anthony 52afbd3f15 fix: revert back to my-app 2019-07-01 09:01:07 +10:00
Lea Anthony ce35ee5ca8 Merge branch 'bh90210-118-angular-support' into develop 2019-07-01 08:58:37 +10:00
Lea Anthony 74c64c6420 chore: misc updates for template 2019-07-01 08:57:42 +10:00
Lea Anthony 678328b7aa Merge branch '118-angular-support' of git://github.com/bh90210/wails into bh90210-118-angular-support 2019-06-30 18:11:35 +10:00
Lea Anthony 345c8bc094 fix: linting fixes 2019-06-30 17:16:38 +10:00
Lea Anthony 44386490c8 chore: add default case to bridge switch 2019-06-29 23:03:46 +10:00
bh90210 87158a342a feat: angular template 2019-06-29 15:45:48 +03:00
Lea Anthony 0b43fae32a docs: updated contributors 2019-06-29 21:43:19 +10:00
Lea Anthony 89f7a95167 Merge pull request #141 from wailsapp/138-Template-dependency-checker
feat: initial support for template dependencies
2019-06-27 19:56:57 +10:00
Lea Anthony c5be3e5634 feat: initial support for template dependencies 2019-06-27 09:05:46 +10:00
Lea Anthony 7156740f6c fix: typo 2019-06-27 08:46:01 +10:00
Lea Anthony 2d29b626c7 chore: version bump 2019-06-26 19:50:22 +10:00
Lea Anthony 698145be1e Merge pull request #140 from wailsapp/139-go.mod-should-reflect-current-wails-version
feat: set wails version in go.mod
2019-06-26 19:48:35 +10:00
Lea Anthony a9188cbfdd feat: set wails version in go.mod 2019-06-26 19:46:51 +10:00
Lea Anthony d07cca0278 chore: version bump 2019-06-25 18:49:18 +10:00
Lea Anthony 60d1dc51ad Merge pull request #137 from wailsapp/135-Add-Debian-support
135 add debian support
2019-06-25 18:48:24 +10:00
Lea Anthony 105073e412 fix: add Debian support across tooling 2019-06-25 18:32:25 +10:00
Lea Anthony 9d1f1fff47 feat: debian support 2019-06-25 18:29:57 +10:00
Lea Anthony 08050ec35e Merge pull request #134 from wailsapp/133-Unsupported-Platform-Requests
133 unsupported platform requests
2019-06-25 08:18:06 +10:00
Lea Anthony bd9751d888 feat: Support distribution support requests 2019-06-25 08:13:20 +10:00
Lea Anthony 7d171b0907 feat: initial support for platform requests 2019-06-24 09:11:06 +10:00
Lea Anthony 5b8f311465 Merge pull request #130 from wailsapp/123-Unify-Runtime-APIs
fix: linting
2019-06-22 08:47:25 +10:00
Lea Anthony 801465ac51 fix: linting 2019-06-22 08:45:46 +10:00
Lea Anthony a84e2ae9b3 Merge pull request #129 from wailsapp/123-Unify-Runtime-APIs
feat: unify runtime API signatures
2019-06-22 08:43:23 +10:00
Lea Anthony 9496d1d47f Merge pull request #126 from bh90210/121-react-template-build-error
fix(react template): reverting bugfix + code clean-up
2019-06-22 08:39:16 +10:00
Lea Anthony 36e575e0a2 feat: unify runtime API signatures 2019-06-22 08:36:11 +10:00
ktc 70ccb8942b fix(react template): reverting bugfix + code clean-up 2019-06-19 20:09:23 +03:00
Lea Anthony d3cd3d43bd chore: version bump 2019-06-19 21:04:27 +10:00
Lea Anthony 9116f0d06c Merge pull request #124 from wailsapp/116-Add-browser-methods-to-runtime
116 add browser methods to runtime
2019-06-19 21:01:53 +10:00
Lea Anthony 2c91e26add docs: guardrails badge 2019-06-19 21:01:00 +10:00
Lea Anthony f1647443dc chore: add .jshintrc file to indicate es6 2019-06-19 20:54:36 +10:00
Lea Anthony b6b6ce2d4a fix: linting fix 2019-06-19 20:53:04 +10:00
Lea Anthony abcc869537 feat: added OpenFile 2019-06-19 20:49:39 +10:00
Lea Anthony 3e02e1676a Merge pull request #122 from bh90210/121-react-template-build-error
fix(react template): build bugfix
2019-06-19 08:31:57 +10:00
Lea Anthony 5c8a4de446 fix: version 2019-06-19 08:29:15 +10:00
Lea Anthony 7cabef946e feat: initial support for browser.openURL for f/e 2019-06-19 08:28:31 +10:00
ktc f2519e5af2 fix(react template): build bugfix 2019-06-18 13:57:45 +03:00
Lea Anthony 63f1767755 Merge pull request #120 from wailsapp/develop
Release v0.16.0
2019-06-18 08:25:24 +10:00
Lea Anthony 5b002e88b7 feat: v0.16.0 release 2019-06-18 08:18:49 +10:00
Lea Anthony 3723e70e6f Merge pull request #117 from bh90210/master
react template
2019-06-16 17:31:02 +10:00
admin_3.exe 7c08ddbb07 Merge branch 'develop' into master 2019-06-16 10:20:36 +03:00
Lea Anthony c8027f5b81 feat: react template 2019-06-16 17:13:40 +10:00
ktc 393e418e68 react template 2019-06-15 14:52:47 +03:00
Lea Anthony dcc3e5fa79 Merge pull request #113 from wailsapp/112-deprecate-backend-injection-of-css-js
112 deprecate backend injection of css js
2019-05-30 08:46:21 +10:00
Lea Anthony f4e6c407ba chore: remove old JS/CSS api 2019-05-30 08:43:26 +10:00
Lea Anthony e718a56ed9 docs: updated contributors 2019-05-27 18:43:33 +10:00
Lea Anthony 068443f3fd Merge pull request #110 from ocelotsloth/develop
CMD: LINUX: Arch Linux detection without lsb-release
2019-05-27 18:41:26 +10:00
Mark Stenglein 1efc8cb934 CMD: LINUX: Arch Linux detection without lsb-release
The existing distribution detection does not work on Arch Linux
without the `lsb-release` package installed. This patch adds
detection using `/etc/os-release` in the same way that f9a1881
uses for Fedora and CentOS detection.

I changed the if statement that Bryn Sinclair used to a case
statement to avoid extra if-else-if statements.

I also needed to add a trim statement to remove the `"` characters
that are present in Arch Linux's `/etc/os-release` file.
2019-05-26 20:30:05 -04:00
Lea Anthony 1ce0620620 Merge pull request #107 from wailsapp/develop
Release v0.15.0
2019-05-26 14:03:47 +10:00
Lea Anthony 249a35f90f chore: release v0.15.0 2019-05-26 13:56:27 +10:00
Lea Anthony d003de3270 chore: remove old package-lock.json 2019-05-26 13:46:51 +10:00
Lea Anthony 9cb2ed10b5 Update CONTRIBUTORS.md 2019-05-26 13:32:55 +10:00
Lea Anthony 4a376f1b67 fix: windows spinner 2019-05-25 12:22:20 +10:00
Lea Anthony c540f3902c fix: polyfill for windows 2019-05-25 12:19:03 +10:00
Lea Anthony accc04ef90 chore: version bump 2019-05-25 11:30:01 +10:00
Lea Anthony d54bd3dc54 Merge pull request #106 from wailsapp/105-create-vuetify-template
Create vuetify template
2019-05-25 11:20:37 +10:00
Lea Anthony a54bbb4e14 chore: linting fixes 2019-05-25 11:17:39 +10:00
Lea Anthony 6b1b999546 feat: add vuetify template 2019-05-25 11:13:34 +10:00
Lea Anthony a5aeafc4bc chore: version bump 2019-05-25 09:28:21 +10:00
Lea Anthony 39ea5cc456 Update bug_report.md 2019-05-24 08:17:05 +10:00
Lea Anthony a225b8d50a Update bug_report.md 2019-05-24 08:13:56 +10:00
Lea Anthony e0036b1cbb Update bug_report.md 2019-05-24 08:11:18 +10:00
Lea Anthony 9a5833f7c9 Merge pull request #102 from wailsapp/98-use-snap-command
fix: use snap command for linux
2019-05-23 08:58:00 +10:00
Lea Anthony 06a1372e80 fix: use snap command for linux 2019-05-23 08:57:11 +10:00
Lea Anthony 7a16cf74f0 docs: mandate go 1.12 2019-05-22 19:25:09 +10:00
Lea Anthony 4239c89b76 Merge pull request #100 from wailsapp/99-update-issue-template
fix: align with new bug template
2019-05-22 19:14:46 +10:00
Lea Anthony 29ea5cc74d fix: slign with new bug template 2019-05-22 19:13:17 +10:00
Lea Anthony fa27be083d Update bug_report.md 2019-05-22 19:09:50 +10:00
Lea Anthony 9be56c47e4 chore: reset version 2019-05-22 08:35:38 +10:00
Lea Anthony 249720b0cc chore: version bump 2019-05-22 08:30:24 +10:00
Lea Anthony 3553cb6694 Merge pull request #97 from wailsapp/92-build-on-first-init
92 build on first init
2019-05-22 07:27:19 +10:00
Lea Anthony 3c0fa4c55e chore: lint fixes 2019-05-22 07:25:42 +10:00
Lea Anthony c07a4b6c16 Merge branch 'develop' into 92-build-on-first-init 2019-05-22 00:56:30 +10:00
Lea Anthony 8175eb4446 chore: version bump 2019-05-22 00:50:28 +10:00
Lea Anthony eeab418c90 fix: version issue 2019-05-22 00:43:56 +10:00
Lea Anthony 0eb59d823e fix: version craziness 2019-05-22 00:42:17 +10:00
Lea Anthony f07705268d feat: moar spinners 2019-05-20 23:53:14 +10:00
Lea Anthony 63fef39854 feat: build on init 2019-05-20 23:40:17 +10:00
Lea Anthony 3ea45da2c8 chore: version bump v0.14.5-pre 2019-05-20 20:47:35 +10:00
Lea Anthony eb0d9f3ba4 Merge pull request #96 from wailsapp/91-create-developer-tooling
91 create developer tooling
2019-05-20 18:58:43 +10:00
Lea Anthony 8432f725a9 chore: updated go mod files 2019-05-20 18:45:01 +10:00
Lea Anthony 7015b80888 feat: new template generator 2019-05-20 18:44:14 +10:00
Lea Anthony ddcc103f37 Update README.md 2019-05-19 13:56:58 +10:00
Lea Anthony 1ac16d1933 fix: minor fixes 2019-05-18 07:34:39 +10:00
Lea Anthony 0f36a88f0e feat: add Manjaro support 2019-05-18 07:18:34 +10:00
Lea Anthony b30031d025 feat: multiple template support 2019-05-18 07:15:15 +10:00
Lea Anthony b849964562 docs: fix awesomego link 2019-05-12 22:18:19 +10:00
Lea Anthony cd152f0cd7 Merge branch 'master' into v0.14.0-pre 2019-05-12 15:15:11 +10:00
Lea Anthony 12280b51b9 chore: version bump 2019-05-12 15:12:10 +10:00
Lea Anthony 29256c5766 fix: update check 2019-05-12 15:11:40 +10:00
Lea Anthony 8b13c0b197 chore: update version 2019-05-12 15:02:50 +10:00
183 changed files with 12300 additions and 12675 deletions
-42
View File
@@ -1,42 +0,0 @@
{{ if .Versions -}}
<a name="unreleased"></a>
## [Unreleased]
{{ if .Unreleased.CommitGroups -}}
{{ range .Unreleased.CommitGroups -}}
### {{ .Title }}
{{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
{{ end }}
{{ end -}}
{{ end -}}
{{ end -}}
{{ range .Versions }}
<a name="{{ .Tag.Name }}"></a>
## {{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }} - {{ datetime "2006-01-02" .Tag.Date }}
{{ range .CommitGroups -}}
### {{ .Title }}
{{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
{{ end }}
{{ end -}}
{{- if .NoteGroups -}}
{{ range .NoteGroups -}}
### {{ .Title }}
{{ range .Notes }}
{{ .Body }}
{{ end }}
{{ end -}}
{{ end -}}
{{ end -}}
{{- if .Versions }}
[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...HEAD
{{ range .Versions -}}
{{ if .Tag.Previous -}}
[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
{{ end -}}
{{ end -}}
{{ end -}}
-27
View File
@@ -1,27 +0,0 @@
style: github
template: CHANGELOG.tpl.md
info:
title: CHANGELOG
repository_url: https://github.com/wailsapp/wails
options:
commits:
# filters:
# Type:
# - feat
# - fix
# - perf
# - refactor
commit_groups:
# title_maps:
# feat: Features
# fix: Bug Fixes
# perf: Performance Improvements
# refactor: Code Refactoring
header:
pattern: "^(\\w*)\\:\\s(.*)$"
pattern_maps:
- Type
- Subject
notes:
keywords:
- BREAKING CHANGE
+1
View File
@@ -0,0 +1 @@
runtime/assets/default.html
+30
View File
@@ -0,0 +1,30 @@
{
"env": {
"browser": true,
"es6": true,
"node": true,
},
"extends": "eslint:recommended",
"parserOptions": {
"ecmaVersion": 2016,
"sourceType": "module",
},
"rules": {
"indent": [
"error",
"tab"
],
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"error",
"single"
],
"semi": [
"error",
"always"
]
}
}
+6 -1
View File
@@ -7,6 +7,11 @@ assignees: ''
---
#####################################################
If you have a technical issue, please do not open a bug this way!
Please use the `wails issue` command!
#####################################################
**Description**
A clear and concise description of what the bug is.
@@ -24,7 +29,7 @@ A clear and concise description of what you expected to happen.
If applicable, add screenshots to help explain your problem.
**System Details**
Please paste the output of `wails report` here.
Please provide your platform, GO version and variables, etc
**Additional context**
Add any other context about the problem here.
+1 -1
View File
@@ -16,4 +16,4 @@ examples/**/example*
cmd/wails/wails
.DS_Store
tmp
dist
node_modules/
+6
View File
@@ -0,0 +1,6 @@
jshint:
config_file: .jshintrc
eslint:
enabled: true
config_file: .eslintrc
ignore_file: .eslintignore
+3
View File
@@ -0,0 +1,3 @@
{
"esversion": 6
}
+24 -2
View File
@@ -5,14 +5,36 @@
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"name": "Wails Init",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${workspaceFolder}/cmd/wails/main.go",
"env": {},
"cwd": "/tmp",
"args": [
"setup"
"init",
"-name",
"runtime",
"-dir",
"runtime",
"-output",
"runtime",
"-template",
"vuebasic"
]
},
{
"name": "Wails Update Pre",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${workspaceFolder}/cmd/wails/main.go",
"env": {},
"cwd": "/tmp",
"args": [
"update",
"-pre"
]
}
]
+2 -1
View File
@@ -1,3 +1,4 @@
{
"go.formatTool": "goimports"
"go.formatTool": "goimports",
"eslint.alwaysShowStatus": true
}
+30 -15
View File
@@ -1,19 +1,34 @@
<a name="v0.13.0"></a>
## [v0.13.0] - 2019-05-12
2019-07-20 **v0.17.6-pre**
* Significant refactor of runtime
* Removed wailsbridge file - now a unified approach taken
* Fixed React on Windows - Thanks [Florian Didran](https://github.com/fdidron)!
### Feat
- revamped 'update' system
- no need for explicit GO111MODULE=on
2019-06-18 **v0.16.0**
* React template FTW! - Thanks [admin_3.exe](https://github.com/bh90210)!
* Updated contributors
* Arch Linux detection without lsb-release
* Removed deprecated methods for dealing with JS/CSS in the backend
### Fix
- documentation typo fixes
- windows init project
- windows 10 colour
- leave windows assets on -p flag
- show prerequisite errors
2019-05-29 **v0.14.11-pre**
* Windows fix for spinner
### Docs
- updated contributors
- added awesomego logo
- added Redhat distro
2019-05-29 **v0.14.10-pre**
* Windows fix for Vuetify
2019-05-29 **v0.14.9-pre**
* Vuetify project template 🎉
2019-05-29 **v0.14.8-pre**
* Updated Ubuntu npm install command
2019-05-22 **v0.14.7-pre**
* New projects are built automatically when initialised
* Go 1.12 is now a minimum requirement
2019-05-21 **v0.14.6-pre**
* Hotfix for module dependency issue
2019-05-20 **v0.14.5-pre**
* Added developer tooling - New Template Generator
* Documentation fixes - Thanks [admin_3.exe](https://github.com/bh90210)!
+8 -2
View File
@@ -8,5 +8,11 @@ Wails is what it is because of the time and effort given by these great people.
* [Adrian Lanzafame](https://github.com/lanzafame)
* [0xflotus](https://github.com/0xflotus)
* [Michael D Henderson](https://github.com/mdhender)
* [fred2104] (https://github.com/fishfishfish2104)
* [intelwalk] (https://github.com/intelwalk)
* [fred2104](https://github.com/fishfishfish2104)
* [intelwalk](https://github.com/intelwalk)
* [Mark Stenglein](https://github.com/ocelotsloth)
* [admin_3.exe](https://github.com/bh90210)
* [iceleo-com](https://github.com/iceleo-com)
* [fallendusk](https://github.com/fallendusk)
* [Florian Didran](https://github.com/fdidron)
* [Nikolai Zimmermann](https://github.com/Chronophylos)
+8 -4
View File
@@ -9,7 +9,8 @@
<a href="https://www.codefactor.io/repository/github/wailsapp/wails"><img src="https://www.codefactor.io/repository/github/wailsapp/wails/badge" alt="CodeFactor" /></a>
<a href="https://github.com/wailsapp/wails/issues"><img src="https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat" alt="CodeFactor" /></a>
<a href="https://houndci.com"><img src="https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg"/></a>
<a href="https://github.com/sindresorhus/awesome" rel="nofollow"><img src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg" alt="Awesome"></a>-
<a href="https://github.com/avelino/awesome-go" rel="nofollow"><img src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg" alt="Awesome"></a>
<a href="https://dashboard.guardrails.io/default/gh/wailsapp/wails"><img src="https://badges.guardrails.io/wailsapp/wails.svg?token=53657bc22ec360d7673c894fdd70568e918ec581d10d84427ed4de5fe1eeff1a"></a>
</p>
The traditional method of providing web interfaces to Go programs is via a built-in web server. Wails offers a different approach: it provides the ability to wrap both Go code and a web frontend into a single binary. Tools are provided to make this easy for you by handling project creation, compilation and bundling. All you have to do is get creative!
@@ -18,6 +19,7 @@ The traditional method of providing web interfaces to Go programs is via a built
- Use standard Go libraries/frameworks for the backend
- Use any frontend technology to build your UI
- Quickly create Vue, Vuetify or React frontends for your Go programs
- Expose Go methods/functions to the frontend via a single bind command
- Uses native rendering engines - no embedded browser
- Shared events system
@@ -33,7 +35,7 @@ Wails is currently in Beta. Please make sure you read the [Project Status](https
Wails uses cgo to bind to the native rendering engines so a number of platform dependent libraries are needed as well as an installation of Go. The basic requirements are:
- Go 1.11 or above
- Go 1.12
- npm
### MacOS
@@ -44,7 +46,7 @@ Make sure you have the xcode command line tools installed. This can be done by r
### Linux
#### Ubuntu 18.04
#### Ubuntu 18.04, Debian 9, Zorin 15
`sudo apt install pkg-config build-essential libgtk-3-dev libwebkit2gtk-4.0-dev`
@@ -64,6 +66,8 @@ Windows requires gcc and related tooling. The recommended download is from [http
## Installation
**Ensure Go modules are enabled: GO111MODULE=on and go/bin is in your PATH variable.**
Installation is as simple as running the following command:
<pre style='color:white'>
@@ -95,7 +99,7 @@ Without the following people, this project would never have existed:
* [Dustin Krysak](https://wiki.ubuntu.com/bashfulrobot) - His support and feedback has been immense. More patience than you can throw a stick at (Not long now Dustin!).
* [Serge Zaitsev](https://github.com/zserge) - Creator of [Webview](https://github.com/zserge/webview) which Wails uses for the windowing.
And without [these people](CONTRIBUTORS.md), it wouldn't be what it is today.
And without [these people](CONTRIBUTORS.md), it wouldn't be what it is today. A huge thank you to each and every one of you!
Special Mentions:
+29 -46
View File
@@ -2,6 +2,12 @@ package wails
import (
"github.com/wailsapp/wails/cmd"
"github.com/wailsapp/wails/lib/binding"
"github.com/wailsapp/wails/lib/event"
"github.com/wailsapp/wails/lib/interfaces"
"github.com/wailsapp/wails/lib/ipc"
"github.com/wailsapp/wails/lib/logger"
"github.com/wailsapp/wails/lib/renderer"
)
// -------------------------------- Compile time Flags ------------------------------
@@ -13,20 +19,15 @@ var BuildMode = cmd.BuildModeProd
// App defines the main application struct
type App struct {
config *AppConfig // The Application configuration object
cli *cmd.Cli // In debug mode, we have a cli
renderer Renderer // The renderer is what we will render the app to
logLevel string // The log level of the app
ipc *ipcManager // Handles the IPC calls
log *CustomLogger // Logger
bindingManager *bindingManager // Handles binding of Go code to renderer
eventManager *eventManager // Handles all the events
runtime *Runtime // The runtime object for registered structs
// This is a list of all the JS/CSS that needs injecting
// It will get injected in order
jsCache []string
cssCache []string
config *AppConfig // The Application configuration object
cli *cmd.Cli // In debug mode, we have a cli
renderer interfaces.Renderer // The renderer is what we will render the app to
logLevel string // The log level of the app
ipc interfaces.IPCManager // Handles the IPC calls
log *logger.CustomLogger // Logger
bindingManager interfaces.BindingManager // Handles binding of Go code to renderer
eventManager interfaces.EventManager // Handles all the events
runtime interfaces.Runtime // The runtime object for registered structs
}
// CreateApp creates the application window with the given configuration
@@ -39,14 +40,14 @@ func CreateApp(optionalConfig ...*AppConfig) *App {
result := &App{
logLevel: "info",
renderer: &webViewRenderer{},
ipc: newIPCManager(),
bindingManager: newBindingManager(),
eventManager: newEventManager(),
log: newCustomLogger("App"),
renderer: renderer.NewWebView(),
ipc: ipc.NewManager(),
bindingManager: binding.NewManager(),
eventManager: event.NewManager(),
log: logger.NewCustomLogger("App"),
}
appconfig, err := newAppConfig(userConfig)
appconfig, err := newConfig(userConfig)
if err != nil {
result.log.Fatalf("Cannot use custom HTML: %s", err.Error())
}
@@ -80,14 +81,14 @@ func (a *App) Run() error {
func (a *App) start() error {
// Set the log level
setLogLevel(a.logLevel)
logger.SetLogLevel(a.logLevel)
// Log starup
a.log.Info("Starting")
// Check if we are to run in headless mode
// Check if we are to run in bridge mode
if BuildMode == cmd.BuildModeBridge {
a.renderer = &Headless{}
a.renderer = &renderer.Bridge{}
}
// Initialise the renderer
@@ -97,26 +98,20 @@ func (a *App) start() error {
}
// Start event manager and give it our renderer
a.eventManager.start(a.renderer)
a.eventManager.Start(a.renderer)
// Start the IPC Manager and give it the event manager and binding manager
a.ipc.start(a.eventManager, a.bindingManager)
a.ipc.Start(a.eventManager, a.bindingManager)
// Create the runtime
a.runtime = newRuntime(a.eventManager, a.renderer)
a.runtime = NewRuntime(a.eventManager, a.renderer)
// Start binding manager and give it our renderer
err = a.bindingManager.start(a.renderer, a.runtime)
err = a.bindingManager.Start(a.renderer, a.runtime)
if err != nil {
return err
}
// Inject CSS
a.renderer.AddCSSList(a.cssCache)
// Inject JS
a.renderer.AddJSList(a.jsCache)
// Run the renderer
return a.renderer.Run()
}
@@ -124,17 +119,5 @@ func (a *App) start() error {
// Bind allows the user to bind the given object
// with the application
func (a *App) Bind(object interface{}) {
a.bindingManager.bind(object)
}
// AddJS adds a piece of Javascript to a cache that
// gets injected at runtime
func (a *App) AddJS(js string) {
a.jsCache = append(a.jsCache, js)
}
// AddCSS adds a CSS string to a cache that
// gets injected at runtime
func (a *App) AddCSS(js string) {
a.cssCache = append(a.cssCache, js)
a.bindingManager.Bind(object)
}
-97
View File
@@ -1,97 +0,0 @@
package wails
import (
"strings"
"github.com/dchest/htmlmin"
"github.com/leaanthony/mewn"
)
// 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
DisableInspector bool
isHTMLFragment bool
}
func (a *AppConfig) merge(in *AppConfig) error {
if in.CSS != "" {
a.CSS = in.CSS
}
if in.Title != "" {
a.Title = in.Title
}
if in.HTML != "" {
minified, err := htmlmin.Minify([]byte(in.HTML), &htmlmin.Options{
MinifyScripts: true,
})
if err != nil {
return err
}
inlineHTML := string(minified)
inlineHTML = strings.Replace(inlineHTML, "'", "\\'", -1)
inlineHTML = strings.Replace(inlineHTML, "\n", " ", -1)
a.HTML = strings.TrimSpace(inlineHTML)
// Deduce whether this is a full html page or a fragment
// The document is determined to be a fragment if an HTML
// tag exists and is located before the first div tag
HTMLTagIndex := strings.Index(a.HTML, "<html")
DivTagIndex := strings.Index(a.HTML, "<div")
if HTMLTagIndex == -1 {
a.isHTMLFragment = true
} else {
if DivTagIndex < HTMLTagIndex {
a.isHTMLFragment = true
}
}
}
if in.Colour != "" {
a.Colour = in.Colour
}
if in.JS != "" {
a.JS = in.JS
}
if in.Width != 0 {
a.Width = in.Width
}
if in.Height != 0 {
a.Height = in.Height
}
a.Resizable = in.Resizable
a.DisableInspector = in.DisableInspector
return nil
}
// Creates the default configuration
func newAppConfig(userConfig *AppConfig) (*AppConfig, error) {
result := &AppConfig{
Width: 800,
Height: 600,
Resizable: true,
Title: "My Wails App",
Colour: "#FFF", // White by default
HTML: mewn.String("./wailsruntimeassets/default/default.html"),
}
if userConfig != nil {
err := result.merge(userConfig)
if err != nil {
return nil, err
}
}
return result, nil
}
+1 -2
View File
@@ -11,10 +11,9 @@ func (app *App) setupCli() *cmd.Cli {
result := cmd.NewCli(app.config.Title, "Debug build")
result.Version(cmd.Version)
// Setup cli to handle loglevel and headless flags
// Setup cli to handle loglevel
result.
StringFlag("loglevel", "Sets the log level [debug|info|error|panic|fatal]. Default debug", &app.logLevel).
// BoolFlag("headless", "Runs the app in headless mode", &app.headless).
Action(app.start)
// Banner
+15
View File
@@ -96,6 +96,7 @@ type Command struct {
flagCount int
log *Logger
helpFlag bool
hidden bool
}
// NewCommand creates a new Command
@@ -106,6 +107,7 @@ func NewCommand(name string, description string, app *Cli, parentCommandPath str
SubCommandsMap: make(map[string]*Command),
App: app,
log: NewLogger(),
hidden: false,
}
// Set up command path
@@ -212,6 +214,9 @@ func (c *Command) PrintHelp() {
c.log.White("Available commands:")
fmt.Println("")
for _, subcommand := range c.SubCommands {
if subcommand.isHidden() {
continue
}
spacer := strings.Repeat(" ", 3+c.longestSubcommand-len(subcommand.Name))
isDefault := ""
if subcommand.isDefaultCommand() {
@@ -237,6 +242,16 @@ func (c *Command) isDefaultCommand() bool {
return c.App.defaultCommand == c
}
// isHidden returns true if the command is a hidden command
func (c *Command) isHidden() bool {
return c.hidden
}
// Hidden hides the command from the Help system
func (c *Command) Hidden() {
c.hidden = true
}
// Command - Defines a subcommand
func (c *Command) Command(name, description string) *Command {
result := NewCommand(name, description, c.App, c.CommandPath)
+2 -23
View File
File diff suppressed because one or more lines are too long
+72 -4
View File
@@ -1,13 +1,19 @@
package cmd
import (
"bytes"
"crypto/md5"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"log"
"os"
"path"
"path/filepath"
"runtime"
"github.com/leaanthony/slicer"
)
// FSHelper - Wrapper struct for File System utility commands
@@ -104,11 +110,33 @@ func (fs *FSHelper) RemoveFiles(files []string) error {
return nil
}
// Dir holds information about a directory
type Dir struct {
localPath string
fullPath string
}
// Directory creates a new Dir struct with the given directory path
func (fs *FSHelper) Directory(dir string) (*Dir, error) {
fullPath, err := filepath.Abs(dir)
return &Dir{fullPath: fullPath}, err
}
// LocalDir creates a new Dir struct based on a path relative to the caller
func (fs *FSHelper) LocalDir(dir string) (*Dir, error) {
_, filename, _, _ := runtime.Caller(1)
fullPath, err := filepath.Abs(filepath.Join(path.Dir(filename), dir))
return &Dir{
localPath: dir,
fullPath: fullPath,
}, err
}
// GetSubdirs will return a list of FQPs to subdirectories in the given directory
func (fs *FSHelper) GetSubdirs(dir string) (map[string]string, error) {
func (d *Dir) GetSubdirs() (map[string]string, error) {
// Read in the directory information
fileInfo, err := ioutil.ReadDir(dir)
fileInfo, err := ioutil.ReadDir(d.fullPath)
if err != nil {
return nil, err
}
@@ -120,25 +148,65 @@ func (fs *FSHelper) GetSubdirs(dir string) (map[string]string, error) {
// map["directoryName"] = "path/to/directoryName"
for _, file := range fileInfo {
if file.IsDir() {
subdirs[file.Name()] = filepath.Join(dir, file.Name())
subdirs[file.Name()] = filepath.Join(d.fullPath, file.Name())
}
}
return subdirs, nil
}
// GetAllFilenames returns all filename in and below this directory
func (d *Dir) GetAllFilenames() (*slicer.StringSlicer, error) {
result := slicer.String()
err := filepath.Walk(d.fullPath, func(dir string, info os.FileInfo, err error) error {
if dir == d.fullPath {
return nil
}
if err != nil {
return err
}
// Don't copy template metadata
result.Add(dir)
return nil
})
return result, err
}
// MkDir creates the given directory.
// Returns error on failure
func (fs *FSHelper) MkDir(dir string) error {
return os.Mkdir(dir, 0700)
}
// SaveAsJSON saves the JSON representation of the given data to the given filename
func (fs *FSHelper) SaveAsJSON(data interface{}, filename string) error {
var buf bytes.Buffer
e := json.NewEncoder(&buf)
e.SetEscapeHTML(false)
e.SetIndent("", " ")
e.Encode(data)
err := ioutil.WriteFile(filename, buf.Bytes(), 0755)
if err != nil {
return err
}
return nil
}
// LoadAsString will attempt to load the given file and return
// its contents as a string
func (fs *FSHelper) LoadAsString(filename string) (string, error) {
bytes, err := ioutil.ReadFile(filename)
bytes, err := fs.LoadAsBytes(filename)
return string(bytes), err
}
// LoadAsBytes returns the contents of the file as a byte slice
func (fs *FSHelper) LoadAsBytes(filename string) ([]byte, error) {
return ioutil.ReadFile(filename)
}
// FileMD5 returns the md5sum of the given file
func (fs *FSHelper) FileMD5(filename string) (string, error) {
f, err := os.Open(filename)
+24 -17
View File
@@ -9,7 +9,7 @@ import (
"runtime"
"time"
mewn "github.com/leaanthony/mewn"
"github.com/leaanthony/mewn"
"github.com/leaanthony/slicer"
"github.com/leaanthony/spinner"
)
@@ -249,8 +249,8 @@ func InstallFrontendDeps(projectDir string, projectOptions *ProjectOptions, forc
ioutil.WriteFile(md5sumFile, []byte(packageJSONMD5), 0644)
}
// Install the bridge library
err = InstallBridge(caller, projectDir, projectOptions)
// Install the runtime
err = InstallRuntime(caller, projectDir, projectOptions)
if err != nil {
return err
}
@@ -263,22 +263,29 @@ func InstallFrontendDeps(projectDir string, projectOptions *ProjectOptions, forc
return nil
}
// InstallBridge installs the relevant bridge javascript library
func InstallBridge(caller string, projectDir string, projectOptions *ProjectOptions) error {
bridgeFile := "wailsbridge.prod.js"
if caller == "serve" {
bridgeFile = "wailsbridge.js"
// InstallRuntime installs the correct runtime for the type of build
func InstallRuntime(caller string, projectDir string, projectOptions *ProjectOptions) error {
if caller == "build" {
return InstallProdRuntime(projectDir, projectOptions)
}
// Copy bridge to project
bridgeAssets := mewn.Group("../wailsruntimeassets/bridge/")
bridgeFileData := bridgeAssets.Bytes(bridgeFile)
bridgeFileTarget := filepath.Join(projectDir, projectOptions.FrontEnd.Dir, projectOptions.FrontEnd.Bridge, "wailsbridge.js")
err := fs.CreateFile(bridgeFileTarget, bridgeFileData)
if err != nil {
return err
}
return nil
return InstallBridge(projectDir, projectOptions)
}
// InstallBridge installs the relevant bridge javascript library
func InstallBridge(projectDir string, projectOptions *ProjectOptions) error {
bridgeFileData := mewn.String("../runtime/assets/bridge.js")
bridgeFileTarget := filepath.Join(projectDir, projectOptions.FrontEnd.Dir, "node_modules", "@wailsapp", "runtime", "main.js")
err := fs.CreateFile(bridgeFileTarget, []byte(bridgeFileData))
return err
}
// InstallProdRuntime installs the production runtime
func InstallProdRuntime(projectDir string, projectOptions *ProjectOptions) error {
prodInit := mewn.String("../runtime/js/runtime/init.js")
bridgeFileTarget := filepath.Join(projectDir, projectOptions.FrontEnd.Dir, "node_modules", "@wailsapp", "runtime", "main.js")
err := fs.CreateFile(bridgeFileTarget, []byte(prodInit))
return err
}
// ServeProject attempts to serve up the current project so that it may be connected to

Some files were not shown because too many files have changed in this diff Show More