mirror of
https://github.com/wavetermdev/wails.git
synced 2026-04-22 15:26:15 -07:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 43727fbec7 |
@@ -1,11 +1,3 @@
|
||||
|
||||
<!--
|
||||
READ CAREFULLY: Before submitting your PR, please ensure you have created an issue for your PR.
|
||||
It is essential that you do this so that we can discuss the proposed changes before you spend time on them.
|
||||
If you do not create an issue, your PR may be rejected without review.
|
||||
If a relevant issue already exists, please reference it in your PR by including `Fixes #<issue number>` in your PR description.
|
||||
-->
|
||||
|
||||
# Description
|
||||
|
||||
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
|
||||
|
||||
@@ -2,7 +2,7 @@ name: Build + Test v2
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [release/*, master, bugfix/*]
|
||||
branches: [release/*, master]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
@@ -12,32 +12,31 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, windows-latest, macos-latest, macos-11]
|
||||
go-version: ['1.20']
|
||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||
go-version: [1.18, 1.19]
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install linux dependencies
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: sudo apt-get update -y && sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev build-essential pkg-config
|
||||
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v4
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
go-version: ${{ matrix.go-version }}
|
||||
cache-dependency-path: ./v2/go.sum
|
||||
|
||||
- name: Run tests (mac)
|
||||
if: matrix.os == 'macos-latest' || matrix.os == 'macos-11'
|
||||
if: matrix.os == 'macos-latest'
|
||||
env:
|
||||
CGO_LDFLAGS: -framework UniformTypeIdentifiers -mmacosx-version-min=10.13
|
||||
working-directory: ./v2
|
||||
run: go test -v ./...
|
||||
|
||||
- name: Run tests (!mac)
|
||||
if: matrix.os != 'macos-latest' && matrix.os != 'macos-11'
|
||||
if: matrix.os != 'macos-latest'
|
||||
working-directory: ./v2
|
||||
run: go test -v ./...
|
||||
|
||||
@@ -51,7 +50,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v3
|
||||
@@ -90,16 +89,15 @@ jobs:
|
||||
vanilla-ts,
|
||||
plain,
|
||||
]
|
||||
go-version: ['1.20']
|
||||
go-version: [1.18, 1.19]
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v4
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
go-version: ${{ matrix.go-version }}
|
||||
cache-dependency-path: ./v2/go.sum
|
||||
|
||||
- name: Build Wails CLI
|
||||
run: |
|
||||
|
||||
+24
-24
@@ -14,7 +14,7 @@ jobs:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Verify Changed files
|
||||
uses: tj-actions/verify-changed-files@v17
|
||||
uses: tj-actions/verify-changed-files@v11.1
|
||||
id: verify-changed-files
|
||||
with:
|
||||
files: |
|
||||
@@ -26,28 +26,28 @@ jobs:
|
||||
run: |
|
||||
echo "::warning::Feature branch does not contain any changes to the website."
|
||||
|
||||
# lint_go:
|
||||
# name: Run Go Linters
|
||||
# runs-on: ubuntu-latest
|
||||
# steps:
|
||||
# - name: Checkout code
|
||||
# uses: actions/checkout@v4
|
||||
#
|
||||
# - name: Setup Go
|
||||
# uses: actions/setup-go@v4
|
||||
# with:
|
||||
# go-version: "1.21"
|
||||
#
|
||||
# - name: Update go modules
|
||||
# working-directory: ./v2
|
||||
# run: go mod tidy
|
||||
#
|
||||
# - name: Run Linter
|
||||
# uses: golangci/golangci-lint-action@v3
|
||||
# with:
|
||||
# version: v1.54
|
||||
# working-directory: ./v2
|
||||
# args: --timeout=10m0s --config ./.golangci.yml
|
||||
lint_go:
|
||||
name: Run Go Linters
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v4
|
||||
with:
|
||||
go-version: "1.21"
|
||||
|
||||
- name: Update go modules
|
||||
working-directory: ./v2
|
||||
run: go mod tidy
|
||||
|
||||
- name: Run Linter
|
||||
uses: golangci/golangci-lint-action@v3
|
||||
with:
|
||||
version: v1.54
|
||||
working-directory: ./v2
|
||||
args: --timeout=10m0s --config ./.golangci.yml
|
||||
|
||||
test_go:
|
||||
name: Run Go Tests
|
||||
@@ -56,7 +56,7 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||
go-version: ['1.20']
|
||||
go-version: [1.18, 1.19]
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
on:
|
||||
workflow_dispatch: {}
|
||||
pull_request: {}
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
paths:
|
||||
- .github/workflows/semgrep.yml
|
||||
schedule:
|
||||
# random HH:MM to avoid a load spike on GitHub Actions at 00:00
|
||||
- cron: 14 16 * * *
|
||||
name: Semgrep
|
||||
jobs:
|
||||
semgrep:
|
||||
name: semgrep/ci
|
||||
runs-on: ubuntu-20.04
|
||||
env:
|
||||
SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }}
|
||||
container:
|
||||
image: returntocorp/semgrep
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- run: semgrep ci
|
||||
@@ -15,7 +15,7 @@ jobs:
|
||||
|
||||
- name: Verify Changed files
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v41
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
files: |
|
||||
website/**/*.mdx
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@
|
||||
|
||||
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
|
||||
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md) ·
|
||||
[Русский](README.ru.md) · [Francais](README.fr.md) · [Uzbek](README.uz.md)
|
||||
[Русский](README.ru.md) · [Francais](README.fr.md)
|
||||
|
||||
</samp>
|
||||
</strong>
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@
|
||||
|
||||
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
|
||||
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md) ·
|
||||
[Русский](README.ru.md) · [Francais](README.fr.md) · [Uzbek](README.uz.md)
|
||||
[Русский](README.ru.md) · [Francais](README.fr.md)
|
||||
|
||||
</samp>
|
||||
</strong>
|
||||
|
||||
+2
-2
@@ -44,7 +44,7 @@
|
||||
|
||||
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
|
||||
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md) ·
|
||||
[Русский](README.ru.md) · [Francais](README.fr.md) · [Uzbek](README.uz.md)
|
||||
[Русский](README.ru.md) · [Francais](README.fr.md)
|
||||
|
||||
</samp>
|
||||
</strong>
|
||||
@@ -120,7 +120,7 @@ Wails では Go のコードとウェブフロントエンドを単一のバイ
|
||||
|
||||
## スター数の推移
|
||||
|
||||
[](https://star-history.com/#wailsapp/wails&Date)
|
||||
[](https://starchart.cc/wailsapp/wails)
|
||||
|
||||
## コントリビューター
|
||||
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@
|
||||
|
||||
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
|
||||
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md) ·
|
||||
[Русский](README.ru.md) · [Francais](README.fr.md) · [Uzbek](README.uz.md)
|
||||
[Русский](README.ru.md) · [Francais](README.fr.md)
|
||||
|
||||
</samp>
|
||||
</strong>
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
|
||||
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md) ·
|
||||
[Русский](README.ru.md) · [Francais](README.fr.md) · [Uzbek](README.uz.md)
|
||||
[Русский](README.ru.md) · [Francais](README.fr.md)
|
||||
|
||||
</samp>
|
||||
</strong>
|
||||
@@ -122,13 +122,7 @@ This project is supported by these kind people / companies:
|
||||
|
||||
## Stargazers over time
|
||||
|
||||
<a href="https://star-history.com/#wailsapp/wails&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=wailsapp/wails&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=wailsapp/wails&type=Date" />
|
||||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=wailsapp/wails&type=Date" />
|
||||
</picture>
|
||||
</a>
|
||||
[](https://star-history.com/#wailsapp/wails&Date)
|
||||
|
||||
## Contributors
|
||||
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@
|
||||
<samp>
|
||||
|
||||
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
|
||||
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md) · [Francais](README.fr.md) · [Uzbek](README.uz.md)
|
||||
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md) · [Francais](README.fr.md)
|
||||
|
||||
</samp>
|
||||
</strong>
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@
|
||||
<samp>
|
||||
|
||||
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
|
||||
[한국어](README.ko.md) · [Español](README.es.md) · [Русский](README.ru.md) · [Francais](README.fr.md) · [Uzbek](README.uz.md)
|
||||
[한국어](README.ko.md) · [Español](README.es.md) · [Русский](README.ru.md) · [Francais](README.fr.md)
|
||||
|
||||
</samp>
|
||||
</strong>
|
||||
|
||||
-158
@@ -1,158 +0,0 @@
|
||||
<p align="center" style="text-align: center">
|
||||
<img src="./assets/images/logo-universal.png" width="55%"><br/>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
Go va Web texnologiyalaridan foydalangan holda ish stoli ilovalarini yarating
|
||||
<br/>
|
||||
<br/>
|
||||
<a href="https://github.com/wailsapp/wails/blob/master/LICENSE">
|
||||
<img alt="GitHub" src="https://img.shields.io/github/license/wailsapp/wails"/>
|
||||
</a>
|
||||
<a href="https://goreportcard.com/report/github.com/wailsapp/wails">
|
||||
<img src="https://goreportcard.com/badge/github.com/wailsapp/wails" />
|
||||
</a>
|
||||
<a href="https://pkg.go.dev/github.com/wailsapp/wails">
|
||||
<img src="https://pkg.go.dev/badge/github.com/wailsapp/wails.svg" alt="Go Reference"/>
|
||||
</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://app.fossa.com/projects/git%2Bgithub.com%2Fwailsapp%2Fwails?ref=badge_shield" alt="FOSSA Status">
|
||||
<img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2Fwailsapp%2Fwails.svg?type=shield" />
|
||||
</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://discord.gg/BrRSWTaxVK">
|
||||
<img alt="Discord" src="https://dcbadge.vercel.app/api/server/BrRSWTaxVK?style=flat"/>
|
||||
</a>
|
||||
<br/>
|
||||
<a href="https://github.com/wailsapp/wails/actions/workflows/build-and-test.yml" rel="nofollow">
|
||||
<img src="https://img.shields.io/github/actions/workflow/status/wailsapp/wails/build-and-test.yml?branch=master&logo=Github" alt="Build" />
|
||||
</a>
|
||||
<a href="https://github.com/wailsapp/wails/tags" rel="nofollow">
|
||||
<img alt="GitHub tag (latest SemVer pre-release)" src="https://img.shields.io/github/v/tag/wailsapp/wails?include_prereleases&label=version"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<div align="center">
|
||||
<strong>
|
||||
<samp>
|
||||
|
||||
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
|
||||
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md) ·
|
||||
[Русский](README.ru.md) · [Francais](README.fr.md) · [Uzbek](README.uz)
|
||||
|
||||
</samp>
|
||||
</strong>
|
||||
</div>
|
||||
|
||||
## Tarkib
|
||||
|
||||
- [Tarkib](#tarkib)
|
||||
- [Kirish](#kirish)
|
||||
- [Xususiyatlari](#xususiyatlari)
|
||||
- [Yo'l xaritasi](#yol-xaritasi)
|
||||
- [Ishni boshlash](#ishni-boshlash)
|
||||
- [Homiylar](#homiylar)
|
||||
- [FAQ](#faq)
|
||||
- [Vaqt o'tishi bilan yulduzlar](#vaqt-otishi-bilan-yulduzlar)
|
||||
- [Ishtirokchilar](#homiylar)
|
||||
- [Litsenziya](#litsenziya)
|
||||
- [Ilhomlanish](#ilhomlanish)
|
||||
|
||||
## Kirish
|
||||
|
||||
Odatda, Go dasturlari uchun veb-interfeyslar o'rnatilgan veb-server va veb-brauzerdir.
|
||||
Walls boshqacha yondashuvni qo'llaydi: u Go kodini ham, veb-interfeysni ham bitta ikkilik (e.g: EXE)fayliga o'raydi.
|
||||
Loyihalarni yaratish, kompilyatsiya qilish va birlashtirishni boshqarish orqali ilovangizni yaratishni osonlashtiradi.
|
||||
Hamma narsa faqat sizning tasavvuringiz bilan cheklangan!
|
||||
|
||||
## Xususiyatlari
|
||||
|
||||
- Backend uchun standart Go dan foydalaning
|
||||
- UI yaratish uchun siz allaqachon tanish bo'lgan har qanday frontend texnologiyasidan foydalaning
|
||||
- Oldindan tayyorlangan shablonlardan foydalanib, Go dasturlaringiz uchun tezda boy frontendlarni yarating
|
||||
- Javascriptdan Go methodlarini osongina chaqiring
|
||||
- Go struktura va methodlari uchun avtomatik yaratilgan Typescript ta'riflari
|
||||
- Mahalliy Dialoglar va Menyular
|
||||
- Mahalliy Dark / Light rejimini qo'llab-quvvatlash
|
||||
- Zamonaviy shaffoflik va "muzli oyna" effektlarini qo'llab-quvvatlaydi
|
||||
- Go va Javascript o'rtasidagi yagona hodisa tizimi
|
||||
- Loyihalaringizni tezda yaratish va qurish uchun kuchli cli vositasi
|
||||
- Ko'p platformali
|
||||
- Mahalliy renderlash mexanizmlaridan foydalanadi - _o'rnatilgan brauzer yo'q_!
|
||||
|
||||
### Yo'l xaritasi
|
||||
|
||||
Loyihaning yoʻl xaritasini [bu yerdan](https://github.com/wailsapp/wails/discussions/1484) topish mumkin. Iltimos, maslahatlashing
|
||||
Buni yaxshilash so'rovini ochishdan oldin.
|
||||
|
||||
## Ishni boshlash
|
||||
|
||||
O'rnatish bo'yicha ko'rsatmalar [Rasmiy veb saytda](https://wails.io/docs/gettingstarted/installation) mavjud.
|
||||
|
||||
## Homiylar
|
||||
|
||||
Ushbu loyiha quyidagi mehribon odamlar / kompaniyalar tomonidan qo'llab-quvvatlanadi:
|
||||
<img src="website/static/img/sponsors.svg" style="width:100%;max-width:800px;"/>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://wails.io/img/sponsor/jetbrains-grayscale.webp" style="width: 100px"/>
|
||||
</p>
|
||||
|
||||
## FAQ
|
||||
|
||||
- Bu Elektronga muqobilmi?
|
||||
|
||||
Sizning talablaringizga bog'liq. Bu Go dasturchilariga yengil ish stoli yaratishni osonlashtirish uchun yaratilgan
|
||||
ilovalar yoki ularning mavjud ilovalariga frontend qo'shing. Wails menyular kabi mahalliy elementlarni taklif qiladi
|
||||
va dialoglar, shuning uchun uni yengil elektron muqobili deb hisoblash mumkin.
|
||||
|
||||
- Ushbu loyiha kimlar uchun?
|
||||
|
||||
Server yaratmasdan va uni ko'rish uchun brauzerni ochmasdan, o'z ilovalari bilan HTML/JS/CSS orqali frontendini birlashtirmoqchi bo'lgan dasturchilar uchun.
|
||||
|
||||
- Bu qanday nom?
|
||||
|
||||
Men WebViewni ko'rganimda, men shunday deb o'yladim: "Menga WebView ilovasini yaratish uchun vositalar kerak.
|
||||
biroz Rails for Rubyga o'xshaydi." Demak, dastlab bu so'zlar ustida o'yin edi (Railsda Webview). Shunday bo'ldi.
|
||||
u men kelgan [Mamlakat](https://en.wikipedia.org/wiki/Wales)ning inglizcha nomining omofonidir.
|
||||
|
||||
## Vaqt o'tishi bilan yulduzlar
|
||||
|
||||
<a href="https://star-history.com/#wailsapp/wails&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=wailsapp/wails&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=wailsapp/wails&type=Date" />
|
||||
<img alt="Yulduzlar tarixi jadvali" src="https://api.star-history.com/svg?repos=wailsapp/wails&type=Date" />
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
## Ishtirokchilar
|
||||
|
||||
Ishtirokchilar roʻyxati oʻqish uchun juda kattalashib bormoqda! Bunga hissa qo'shgan barcha ajoyib odamlarning
|
||||
loyihada o'z sahifasi bor [bu yerga](https://wails.io/credits#contributors).
|
||||
|
||||
## Litsenziya
|
||||
|
||||
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fwailsapp%2Fwails?ref=badge_large)
|
||||
|
||||
## Ilhomlanish
|
||||
|
||||
Ushbu loyiha asosan quyidagi albomlar uchun kodlangan:
|
||||
|
||||
- [Manic Street Preachers - Resistance Is Futile](https://open.spotify.com/album/1R2rsEUqXjIvAbzM0yHrxA)
|
||||
- [Manic Street Preachers - This Is My Truth, Tell Me Yours](https://open.spotify.com/album/4VzCL9kjhgGQeKCiojK1YN)
|
||||
- [The Midnight - Endless Summer](https://open.spotify.com/album/4Krg8zvprquh7TVn9OxZn8)
|
||||
- [Gary Newman - Savage (Songs from a Broken World)](https://open.spotify.com/album/3kMfsD07Q32HRWKRrpcexr)
|
||||
- [Steve Vai - Passion & Warfare](https://open.spotify.com/album/0oL0OhrE2rYVns4IGj8h2m)
|
||||
- [Ben Howard - Every Kingdom](https://open.spotify.com/album/1nJsbWm3Yy2DW1KIc1OKle)
|
||||
- [Ben Howard - Noonday Dream](https://open.spotify.com/album/6astw05cTiXEc2OvyByaPs)
|
||||
- [Adwaith - Melyn](https://open.spotify.com/album/2vBE40Rp60tl7rNqIZjaXM)
|
||||
- [Gwidaith Hen Fran - Cedors Hen Wrach](https://open.spotify.com/album/3v2hrfNGINPLuDP0YDTOjm)
|
||||
- [Metallica - Metallica](https://open.spotify.com/album/2Kh43m04B1UkVcpcRa1Zug)
|
||||
- [Bloc Party - Silent Alarm](https://open.spotify.com/album/6SsIdN05HQg2GwYLfXuzLB)
|
||||
- [Maxthor - Another World](https://open.spotify.com/album/3tklE2Fgw1hCIUstIwPBJF)
|
||||
- [Alun Tan Lan - Y Distawrwydd](https://open.spotify.com/album/0c32OywcLpdJCWWMC6vB8v)
|
||||
+1
-1
@@ -44,7 +44,7 @@
|
||||
|
||||
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
|
||||
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md) ·
|
||||
[Русский](README.ru.md) · [Francais](README.fr.md) · [Uzbek](README.uz.md)
|
||||
[Русский](README.ru.md) · [Francais](README.fr.md)
|
||||
|
||||
</samp>
|
||||
</strong>
|
||||
|
||||
Generated
+121
-194
File diff suppressed because it is too large
Load Diff
+49
-40
@@ -18,6 +18,7 @@ import (
|
||||
)
|
||||
|
||||
func buildApplication(f *flags.Build) error {
|
||||
|
||||
if f.NoColour {
|
||||
pterm.DisableColor()
|
||||
colour.ColourEnabled = false
|
||||
@@ -49,16 +50,6 @@ func buildApplication(f *flags.Build) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// Set obfuscation from project file
|
||||
if projectOptions.Obfuscated {
|
||||
f.Obfuscated = projectOptions.Obfuscated
|
||||
}
|
||||
|
||||
// Set garble args from project file
|
||||
if projectOptions.GarbleArgs != "" {
|
||||
f.GarbleArgs = projectOptions.GarbleArgs
|
||||
}
|
||||
|
||||
// Create BuildOptions
|
||||
buildOptions := &build.Options{
|
||||
Logger: logger,
|
||||
@@ -108,7 +99,7 @@ func buildApplication(f *flags.Build) error {
|
||||
{"Tags", "[" + strings.Join(f.GetTags(), ",") + "]"},
|
||||
{"Race Detector", bool2Str(f.RaceDetector)},
|
||||
}...)
|
||||
if len(buildOptions.OutputFile) > 0 && len(f.GetTargets()) == 1 {
|
||||
if len(buildOptions.OutputFile) > 0 && f.GetTargets().Length() == 1 {
|
||||
tableData = append(tableData, []string{"Output File", f.OutputFilename})
|
||||
}
|
||||
pterm.DefaultSection.Println("Build Options")
|
||||
@@ -145,11 +136,16 @@ func buildApplication(f *flags.Build) error {
|
||||
|
||||
// Allows cancelling the build after the first error. It would be nice if targets.Each would support funcs
|
||||
// returning an error.
|
||||
var targetErr error
|
||||
targets := f.GetTargets()
|
||||
for _, target := range targets {
|
||||
if !validPlatformArch.Contains(target.Platform) {
|
||||
buildOptions.Logger.Println("platform '%s' is not supported - skipping. Supported platforms: %s", target.Platform, validPlatformArch.Join(","))
|
||||
continue
|
||||
targets.Each(func(platform string) {
|
||||
if targetErr != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if !validPlatformArch.Contains(platform) {
|
||||
buildOptions.Logger.Println("platform '%s' is not supported - skipping. Supported platforms: %s", platform, validPlatformArch.Join(","))
|
||||
return
|
||||
}
|
||||
|
||||
desiredFilename := projectOptions.OutputFilename
|
||||
@@ -158,13 +154,17 @@ func buildApplication(f *flags.Build) error {
|
||||
}
|
||||
desiredFilename = strings.TrimSuffix(desiredFilename, ".exe")
|
||||
|
||||
buildOptions.Platform = target.Platform
|
||||
buildOptions.Arch = target.Arch
|
||||
|
||||
// Calculate platform and arch
|
||||
platformSplit := strings.Split(platform, "/")
|
||||
buildOptions.Platform = platformSplit[0]
|
||||
buildOptions.Arch = f.GetDefaultArch()
|
||||
if len(platformSplit) > 1 {
|
||||
buildOptions.Arch = platformSplit[1]
|
||||
}
|
||||
banner := "Building target: " + buildOptions.Platform + "/" + buildOptions.Arch
|
||||
pterm.DefaultSection.Println(banner)
|
||||
|
||||
if f.Upx && target.String() == "darwin/universal" {
|
||||
if f.Upx && platform == "darwin/universal" {
|
||||
pterm.Warning.Println("Warning: compress flag unsupported for universal binaries. Ignoring.")
|
||||
f.Upx = false
|
||||
}
|
||||
@@ -173,19 +173,22 @@ func buildApplication(f *flags.Build) error {
|
||||
case "linux":
|
||||
if runtime.GOOS != "linux" {
|
||||
pterm.Warning.Println("Crosscompiling to Linux not currently supported.")
|
||||
continue
|
||||
return
|
||||
}
|
||||
case "darwin":
|
||||
if runtime.GOOS != "darwin" {
|
||||
pterm.Warning.Println("Crosscompiling to Mac not currently supported.")
|
||||
continue
|
||||
return
|
||||
}
|
||||
if targets.MacTargetsCount() == 2 {
|
||||
macTargets := targets.Filter(func(platform string) bool {
|
||||
return strings.HasPrefix(platform, "darwin")
|
||||
})
|
||||
if macTargets.Length() == 2 {
|
||||
buildOptions.BundleName = fmt.Sprintf("%s-%s.app", desiredFilename, buildOptions.Arch)
|
||||
}
|
||||
}
|
||||
|
||||
if len(targets) > 1 {
|
||||
if targets.Length() > 1 {
|
||||
// target filename
|
||||
switch buildOptions.Platform {
|
||||
case "windows":
|
||||
@@ -207,27 +210,32 @@ func buildApplication(f *flags.Build) error {
|
||||
pterm.Warning.Println("obfuscated flag overrides skipbindings flag.")
|
||||
buildOptions.SkipBindings = false
|
||||
}
|
||||
}
|
||||
|
||||
if !f.DryRun {
|
||||
// Start Time
|
||||
start := time.Now()
|
||||
if !f.DryRun {
|
||||
// Start Time
|
||||
start := time.Now()
|
||||
|
||||
compiledBinary, err := build.Build(buildOptions)
|
||||
if err != nil {
|
||||
pterm.Error.Println(err.Error())
|
||||
return err
|
||||
compiledBinary, err := build.Build(buildOptions)
|
||||
if err != nil {
|
||||
pterm.Error.Println(err.Error())
|
||||
targetErr = err
|
||||
return
|
||||
}
|
||||
|
||||
buildOptions.IgnoreFrontend = true
|
||||
buildOptions.CleanBinDirectory = false
|
||||
|
||||
// Output stats
|
||||
buildOptions.Logger.Println(fmt.Sprintf("Built '%s' in %s.\n", compiledBinary, time.Since(start).Round(time.Millisecond).String()))
|
||||
|
||||
outputBinaries[buildOptions.Platform+"/"+buildOptions.Arch] = compiledBinary
|
||||
} else {
|
||||
pterm.Info.Println("Dry run: skipped build.")
|
||||
}
|
||||
})
|
||||
|
||||
buildOptions.IgnoreFrontend = true
|
||||
buildOptions.CleanBinDirectory = false
|
||||
|
||||
// Output stats
|
||||
buildOptions.Logger.Println(fmt.Sprintf("Built '%s' in %s.\n", compiledBinary, time.Since(start).Round(time.Millisecond).String()))
|
||||
|
||||
outputBinaries[buildOptions.Platform+"/"+buildOptions.Arch] = compiledBinary
|
||||
} else {
|
||||
pterm.Info.Println("Dry run: skipped build.")
|
||||
if targetErr != nil {
|
||||
return targetErr
|
||||
}
|
||||
|
||||
if f.DryRun {
|
||||
@@ -247,4 +255,5 @@ func buildApplication(f *flags.Build) error {
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
+3
-2
@@ -1,16 +1,16 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/pterm/pterm"
|
||||
"github.com/wailsapp/wails/v2/cmd/wails/flags"
|
||||
"github.com/wailsapp/wails/v2/cmd/wails/internal/dev"
|
||||
"github.com/wailsapp/wails/v2/internal/colour"
|
||||
"github.com/wailsapp/wails/v2/pkg/clilogger"
|
||||
"os"
|
||||
)
|
||||
|
||||
func devApplication(f *flags.Dev) error {
|
||||
|
||||
if f.NoColour {
|
||||
pterm.DisableColor()
|
||||
colour.ColourEnabled = false
|
||||
@@ -34,4 +34,5 @@ func devApplication(f *flags.Dev) error {
|
||||
}
|
||||
|
||||
return dev.Application(f, logger)
|
||||
|
||||
}
|
||||
|
||||
+5
-50
@@ -2,7 +2,6 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/wailsapp/wails/v2/internal/shell"
|
||||
"runtime"
|
||||
"runtime/debug"
|
||||
"strconv"
|
||||
@@ -94,14 +93,7 @@ func diagnoseEnvironment(f *flags.Doctor) error {
|
||||
systemTabledata = append(systemTabledata, []string{prefix, cpu.Model})
|
||||
}
|
||||
} else {
|
||||
cpuInfo := "Unknown"
|
||||
if runtime.GOOS == "darwin" {
|
||||
// Try to get CPU info from sysctl
|
||||
if stdout, _, err := shell.RunCommand("", "sysctl", "-n", "machdep.cpu.brand_string"); err == nil {
|
||||
cpuInfo = strings.TrimSpace(stdout)
|
||||
}
|
||||
}
|
||||
systemTabledata = append(systemTabledata, []string{"CPU", cpuInfo})
|
||||
systemTabledata = append(systemTabledata, []string{"CPU", "Unknown"})
|
||||
}
|
||||
|
||||
// Probe GPU
|
||||
@@ -112,55 +104,18 @@ func diagnoseEnvironment(f *flags.Doctor) error {
|
||||
if len(gpu.GraphicsCards) > 1 {
|
||||
prefix = "GPU " + strconv.Itoa(idx+1) + " "
|
||||
}
|
||||
if card.DeviceInfo == nil {
|
||||
systemTabledata = append(systemTabledata, []string{prefix, "Unknown"})
|
||||
continue
|
||||
}
|
||||
details := fmt.Sprintf("%s (%s) - Driver: %s", card.DeviceInfo.Product.Name, card.DeviceInfo.Vendor.Name, card.DeviceInfo.Driver)
|
||||
systemTabledata = append(systemTabledata, []string{prefix, details})
|
||||
}
|
||||
} else {
|
||||
gpuInfo := "Unknown"
|
||||
if runtime.GOOS == "darwin" {
|
||||
// Try to get GPU info from system_profiler
|
||||
if stdout, _, err := shell.RunCommand("", "system_profiler", "SPDisplaysDataType"); err == nil {
|
||||
var (
|
||||
startCapturing bool
|
||||
gpuInfoDetails []string
|
||||
)
|
||||
for _, line := range strings.Split(stdout, "\n") {
|
||||
if strings.Contains(line, "Chipset Model") {
|
||||
startCapturing = true
|
||||
}
|
||||
if startCapturing {
|
||||
gpuInfoDetails = append(gpuInfoDetails, strings.TrimSpace(line))
|
||||
}
|
||||
if strings.Contains(line, "Metal Support") {
|
||||
break
|
||||
}
|
||||
}
|
||||
if len(gpuInfoDetails) > 0 {
|
||||
gpuInfo = strings.Join(gpuInfoDetails, " ")
|
||||
}
|
||||
}
|
||||
}
|
||||
systemTabledata = append(systemTabledata, []string{"GPU", gpuInfo})
|
||||
systemTabledata = append(systemTabledata, []string{"GPU", "Unknown"})
|
||||
}
|
||||
|
||||
memory, _ := ghw.Memory()
|
||||
if memory != nil {
|
||||
systemTabledata = append(systemTabledata, []string{"Memory", strconv.Itoa(int(memory.TotalPhysicalBytes/1024/1024/1024)) + "GB"})
|
||||
} else {
|
||||
memInfo := "Unknown"
|
||||
if runtime.GOOS == "darwin" {
|
||||
// Try to get Memory info from sysctl
|
||||
if stdout, _, err := shell.RunCommand("", "sysctl", "-n", "hw.memsize"); err == nil {
|
||||
if memSize, err := strconv.Atoi(strings.TrimSpace(stdout)); err == nil {
|
||||
memInfo = strconv.Itoa(memSize/1024/1024/1024) + "GB"
|
||||
}
|
||||
}
|
||||
}
|
||||
systemTabledata = append(systemTabledata, []string{"Memory", memInfo})
|
||||
systemTabledata = append(systemTabledata, []string{"Memory", "Unknown"})
|
||||
}
|
||||
|
||||
err = pterm.DefaultTable.WithBoxed().WithData(systemTabledata).Render()
|
||||
@@ -173,8 +128,8 @@ func diagnoseEnvironment(f *flags.Doctor) error {
|
||||
// Output Dependencies Status
|
||||
var dependenciesMissing []string
|
||||
var externalPackages []*packagemanager.Dependency
|
||||
dependenciesAvailableRequired := 0
|
||||
dependenciesAvailableOptional := 0
|
||||
var dependenciesAvailableRequired = 0
|
||||
var dependenciesAvailableOptional = 0
|
||||
|
||||
dependenciesTableData := pterm.TableData{
|
||||
{"Dependency", "Package Name", "Status", "Version"},
|
||||
|
||||
@@ -2,10 +2,13 @@ package flags
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"runtime"
|
||||
"strings"
|
||||
|
||||
"github.com/leaanthony/slicer"
|
||||
"github.com/wailsapp/wails/v2/internal/system"
|
||||
"github.com/wailsapp/wails/v2/pkg/commands/build"
|
||||
"github.com/wailsapp/wails/v2/pkg/commands/buildtags"
|
||||
)
|
||||
@@ -46,15 +49,29 @@ type Build struct {
|
||||
compilerPath string
|
||||
userTags []string
|
||||
wv2rtstrategy string // WebView2 runtime strategy
|
||||
defaultArch string // Default architecture
|
||||
}
|
||||
|
||||
func (b *Build) Default() *Build {
|
||||
target := defaultTarget()
|
||||
defaultPlatform := os.Getenv("GOOS")
|
||||
if defaultPlatform == "" {
|
||||
defaultPlatform = runtime.GOOS
|
||||
}
|
||||
defaultArch := os.Getenv("GOARCH")
|
||||
if defaultArch == "" {
|
||||
if system.IsAppleSilicon {
|
||||
defaultArch = "arm64"
|
||||
} else {
|
||||
defaultArch = runtime.GOARCH
|
||||
}
|
||||
}
|
||||
|
||||
result := &Build{
|
||||
Platform: target.Platform,
|
||||
Platform: defaultPlatform + "/" + defaultArch,
|
||||
WebView2: "download",
|
||||
GarbleArgs: "-literals -tiny -seed=random",
|
||||
|
||||
defaultArch: defaultArch,
|
||||
}
|
||||
result.BuildCommon = result.BuildCommon.Default()
|
||||
return result
|
||||
@@ -71,8 +88,11 @@ func (b *Build) GetWebView2Strategy() string {
|
||||
return b.wv2rtstrategy
|
||||
}
|
||||
|
||||
func (b *Build) GetTargets() TargetsCollection {
|
||||
return parseTargets(b.Platform)
|
||||
func (b *Build) GetTargets() *slicer.StringSlicer {
|
||||
var targets slicer.StringSlicer
|
||||
targets.AddSlice(strings.Split(b.Platform, ","))
|
||||
targets.Deduplicate()
|
||||
return &targets
|
||||
}
|
||||
|
||||
func (b *Build) GetCompilerPath() string {
|
||||
@@ -124,6 +144,10 @@ func (b *Build) GetBuildModeAsString() string {
|
||||
return "production"
|
||||
}
|
||||
|
||||
func (b *Build) GetDefaultArch() string {
|
||||
return b.defaultArch
|
||||
}
|
||||
|
||||
/*
|
||||
_, _ = fmt.Fprintf(w, "Frontend Directory: \t%s\n", projectOptions.GetFrontendDir())
|
||||
_, _ = fmt.Fprintf(w, "Obfuscated: \t%t\n", buildOptions.Obfuscated)
|
||||
|
||||
@@ -1,103 +1,5 @@
|
||||
package flags
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"runtime"
|
||||
"strings"
|
||||
|
||||
"github.com/leaanthony/slicer"
|
||||
"github.com/pterm/pterm"
|
||||
"github.com/wailsapp/wails/v2/internal/system"
|
||||
)
|
||||
|
||||
type Common struct {
|
||||
NoColour bool `description:"Disable colour in output"`
|
||||
}
|
||||
|
||||
type Target struct {
|
||||
Platform string
|
||||
Arch string
|
||||
}
|
||||
|
||||
func defaultTarget() Target {
|
||||
defaultPlatform := os.Getenv("GOOS")
|
||||
if defaultPlatform == "" {
|
||||
defaultPlatform = runtime.GOOS
|
||||
}
|
||||
defaultArch := os.Getenv("GOARCH")
|
||||
if defaultArch == "" {
|
||||
if system.IsAppleSilicon {
|
||||
defaultArch = "arm64"
|
||||
} else {
|
||||
defaultArch = runtime.GOARCH
|
||||
}
|
||||
}
|
||||
|
||||
return Target{
|
||||
Platform: defaultPlatform,
|
||||
Arch: defaultArch,
|
||||
}
|
||||
}
|
||||
|
||||
type TargetsCollection []Target
|
||||
|
||||
func (c TargetsCollection) MacTargetsCount() int {
|
||||
count := 0
|
||||
|
||||
for _, t := range c {
|
||||
if strings.HasPrefix(t.Platform, "darwin") {
|
||||
count++
|
||||
}
|
||||
}
|
||||
|
||||
return count
|
||||
}
|
||||
|
||||
func (t Target) String() string {
|
||||
if t.Arch != "" {
|
||||
return fmt.Sprintf("%s/%s", t.Platform, t.Arch)
|
||||
}
|
||||
|
||||
return t.Platform
|
||||
}
|
||||
|
||||
func parseTargets(platform string) TargetsCollection {
|
||||
allowedPlatforms := map[string]bool{
|
||||
"windows": true,
|
||||
"linux": true,
|
||||
"darwin": true,
|
||||
}
|
||||
|
||||
if !allowedPlatforms[platform] {
|
||||
pterm.Error.Println("platform argument must be one of 'windows', 'linux', or 'darwin'")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
var result []Target
|
||||
var targets slicer.StringSlicer
|
||||
|
||||
targets.AddSlice(strings.Split(platform, ","))
|
||||
targets.Deduplicate()
|
||||
|
||||
targets.Each(func(platform string) {
|
||||
target := Target{
|
||||
Platform: "",
|
||||
Arch: "",
|
||||
}
|
||||
|
||||
platformSplit := strings.Split(platform, "/")
|
||||
|
||||
target.Platform = platformSplit[0]
|
||||
|
||||
if len(platformSplit) > 1 {
|
||||
target.Arch = platformSplit[1]
|
||||
} else {
|
||||
target.Arch = defaultTarget().Arch
|
||||
}
|
||||
|
||||
result = append(result, target)
|
||||
})
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user