add: goreleaser
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -3,4 +3,5 @@ bin
|
||||
frontend/dist
|
||||
frontend/node_modules
|
||||
build/linux/appimage/build
|
||||
build/windows/nsis/MicrosoftEdgeWebview2Setup.exe
|
||||
build/windows/nsis/MicrosoftEdgeWebview2Setup.exe
|
||||
dist
|
||||
98
.goreleaser.yaml
Normal file
98
.goreleaser.yaml
Normal file
@@ -0,0 +1,98 @@
|
||||
version: 2
|
||||
|
||||
project_name: mesh-drop
|
||||
|
||||
before:
|
||||
hooks:
|
||||
- go mod tidy
|
||||
- wails3 generate bindings -ts
|
||||
- sh -c 'cd frontend && npm run build'
|
||||
- wails3 generate .desktop -name "{{.ProjectName}}" -exec "{{.ProjectName}}" -icon "{{.ProjectName}}.png" -outputfile "goreleaser/{{.ProjectName}}.desktop" -categories "Network;FileTransfer;" -keywords "mesh,transfer,file,network,drop"
|
||||
|
||||
builds:
|
||||
- id: linux-amd64
|
||||
binary: mesh-drop
|
||||
goos:
|
||||
- linux
|
||||
goarch:
|
||||
- amd64
|
||||
env:
|
||||
- CGO_ENABLED=1
|
||||
flags:
|
||||
- -tags
|
||||
- production
|
||||
- -trimpath
|
||||
ldflags:
|
||||
- -s -w -X mesh-drop/internal/config.Version={{ .Version }}
|
||||
|
||||
- id: windows-amd64
|
||||
binary: mesh-drop
|
||||
goos:
|
||||
- windows
|
||||
goarch:
|
||||
- amd64
|
||||
env:
|
||||
- CGO_ENABLED=1
|
||||
flags:
|
||||
- -tags
|
||||
- production
|
||||
- -trimpath
|
||||
ldflags:
|
||||
- -s -w -H windowsgui -X mesh-drop/internal/config.Version={{ .Version }}
|
||||
hooks:
|
||||
pre:
|
||||
- "wails3 generate icons -input goreleaser/icon.png -windowsfilename goreleaser/icon.ico"
|
||||
- "wails3 generate syso -arch amd64 -icon goreleaser/icon.ico -manifest goreleaser/wails.exe.manifest -info goreleaser/info.json -out goreleaser/wails_windows_amd64.syso"
|
||||
post: "rm -f goreleaser/wails_windows_amd64.syso"
|
||||
|
||||
archives:
|
||||
- formats: ["tar.gz"]
|
||||
format_overrides:
|
||||
- goos: windows
|
||||
formats: ["zip"]
|
||||
|
||||
nfpms:
|
||||
- id: default
|
||||
package_name: mesh-drop
|
||||
vendor: "nite"
|
||||
homepage: "https://www.nite07.com"
|
||||
maintainer: "Nite <nite@nite07.com>"
|
||||
description: "A mesh-drop application"
|
||||
license: "MIT"
|
||||
formats:
|
||||
- deb
|
||||
- rpm
|
||||
- archlinux
|
||||
|
||||
contents:
|
||||
- src: "goreleaser/icon.png"
|
||||
dst: "/usr/share/icons/hicolor/128x128/apps/mesh-drop.png"
|
||||
- src: "build/linux/mesh-drop.desktop"
|
||||
dst: "/usr/share/applications/mesh-drop.desktop"
|
||||
|
||||
dependencies:
|
||||
- libgtk-3-0
|
||||
- libwebkit2gtk-4.1-0
|
||||
|
||||
overrides:
|
||||
rpm:
|
||||
dependencies:
|
||||
- gtk3
|
||||
- webkit2gtk4.1
|
||||
archlinux:
|
||||
dependencies:
|
||||
- gtk3
|
||||
- webkit2gtk-4.1
|
||||
|
||||
checksum:
|
||||
name_template: "checksums.txt"
|
||||
|
||||
snapshot:
|
||||
version_template: "{{ .Tag }}-{{ .ShortCommit }}"
|
||||
|
||||
changelog:
|
||||
sort: asc
|
||||
filters:
|
||||
exclude:
|
||||
- "^docs:"
|
||||
- "^test:"
|
||||
4
build.sh
4
build.sh
@@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
go-task linux:build
|
||||
go-task windows:build
|
||||
go-task linux:create:aur
|
||||
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 583 533" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g transform="matrix(1,0,0,1,-246,-251)">
|
||||
<g id="Ebene1">
|
||||
<path d="M246,251L265,784L401,784L506,450L507,450L505,784L641,784L829,251L682,251L596,567L595,567L596,251L478,251L378,568L391,251L246,251Z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 698 B |
@@ -1,51 +0,0 @@
|
||||
{
|
||||
"fill" : {
|
||||
"automatic-gradient" : "extended-gray:1.00000,1.00000"
|
||||
},
|
||||
"groups" : [
|
||||
{
|
||||
"layers" : [
|
||||
{
|
||||
"fill-specializations" : [
|
||||
{
|
||||
"appearance" : "dark",
|
||||
"value" : {
|
||||
"solid" : "srgb:0.92143,0.92145,0.92144,1.00000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"appearance" : "tinted",
|
||||
"value" : {
|
||||
"solid" : "srgb:0.83742,0.83744,0.83743,1.00000"
|
||||
}
|
||||
}
|
||||
],
|
||||
"image-name" : "wails_icon_vector.svg",
|
||||
"name" : "wails_icon_vector",
|
||||
"position" : {
|
||||
"scale" : 1.25,
|
||||
"translation-in-points" : [
|
||||
36.890625,
|
||||
4.96875
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"shadow" : {
|
||||
"kind" : "neutral",
|
||||
"opacity" : 0.5
|
||||
},
|
||||
"specular" : true,
|
||||
"translucency" : {
|
||||
"enabled" : true,
|
||||
"value" : 0.5
|
||||
}
|
||||
}
|
||||
],
|
||||
"supported-platforms" : {
|
||||
"circles" : [
|
||||
"watchOS"
|
||||
],
|
||||
"squares" : "shared"
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,7 @@ tasks:
|
||||
# 1. Cross-compiling from non-Linux, OR
|
||||
# 2. No C compiler is available, OR
|
||||
# 3. Target architecture differs from host architecture (cross-arch compilation)
|
||||
- task: '{{if and (eq OS "linux") (eq .HAS_CC "true") (eq .TARGET_ARCH ARCH)}}build:native{{else}}build:docker{{end}}'
|
||||
- task: '{{if and (eq OS "linux") (eq .HAS_CC "true") (eq .TARGET_ARCH ARCH)}}{{else}}build:docker{{end}}'
|
||||
vars:
|
||||
ARCH: "{{.ARCH}}"
|
||||
DEV: "{{.DEV}}"
|
||||
@@ -51,7 +51,9 @@ tasks:
|
||||
cmds:
|
||||
- go build {{.BUILD_FLAGS}} -o {{.OUTPUT}}
|
||||
vars:
|
||||
BUILD_FLAGS: '{{if eq .DEV "true"}}-buildvcs=false -gcflags=all="-l"{{else}}-tags production -trimpath -buildvcs=false -ldflags="-w -s"{{end}}'
|
||||
VERSION:
|
||||
sh: git describe --tags --always
|
||||
BUILD_FLAGS: '{{if eq .DEV "true"}}-buildvcs=false -gcflags=all="-l"{{else}}-tags production -trimpath -buildvcs=false -ldflags="-w -s -X mesh-drop/internal/config.Version={{.VERSION}}"{{end}}'
|
||||
DEFAULT_OUTPUT: "{{.BIN_DIR}}/{{.APP_NAME}}"
|
||||
OUTPUT: "{{ .OUTPUT | default .DEFAULT_OUTPUT }}"
|
||||
env:
|
||||
@@ -59,16 +61,6 @@ tasks:
|
||||
CGO_ENABLED: 1
|
||||
GOARCH: "{{.ARCH | default ARCH}}"
|
||||
|
||||
build:prod:
|
||||
summary: Builds the application natively on Linux
|
||||
deps:
|
||||
- task: build
|
||||
cmds:
|
||||
- upx --best --lzma {{.OUTPUT}}
|
||||
vars:
|
||||
DEFAULT_OUTPUT: "{{.BIN_DIR}}/{{.APP_NAME}}"
|
||||
OUTPUT: "{{ .OUTPUT | default .DEFAULT_OUTPUT }}"
|
||||
|
||||
build:docker:
|
||||
summary: Builds for Linux using Docker (for non-Linux hosts or when no C compiler available)
|
||||
internal: true
|
||||
@@ -181,13 +173,14 @@ tasks:
|
||||
dir: build
|
||||
cmds:
|
||||
- mkdir -p {{.ROOT_DIR}}/build/linux/appimage
|
||||
- wails3 generate .desktop -name "{{.APP_NAME}}" -exec "{{.EXEC}}" -icon "{{.ICON}}" -outputfile "{{.ROOT_DIR}}/build/linux/{{.APP_NAME}}.desktop" -categories "{{.CATEGORIES}}"
|
||||
- wails3 generate .desktop -name "{{.APP_NAME}}" -exec "{{.EXEC}}" -icon "{{.ICON}}" -outputfile "{{.ROOT_DIR}}/build/linux/{{.APP_NAME}}.desktop" -categories "{{.CATEGORIES}}" -keywords "{{.KEYWORDS}}"
|
||||
vars:
|
||||
APP_NAME: "{{.APP_NAME}}"
|
||||
EXEC: "{{.APP_NAME}}"
|
||||
ICON: "{{.APP_NAME}}"
|
||||
CATEGORIES: "Development;"
|
||||
CATEGORIES: '{{.CATEGORIES | default .ENV.CATEGORIES | default "GTK;Utility"}}'
|
||||
OUTPUTFILE: "{{.ROOT_DIR}}/build/linux/{{.APP_NAME}}.desktop"
|
||||
KEYWORDS: '{{.KEYWORDS | default .ENV.KEYWORDS | default "utility"}}'
|
||||
|
||||
run:
|
||||
cmds:
|
||||
|
||||
BIN
build/linux/appimage/mesh-drop
Executable file
BIN
build/linux/appimage/mesh-drop
Executable file
Binary file not shown.
BIN
build/linux/appimage/mesh-drop.png
Normal file
BIN
build/linux/appimage/mesh-drop.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
@@ -1,13 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=MeshDrop
|
||||
Comment=A mesh-drop application
|
||||
# The Exec line includes %u to pass the URL to the application
|
||||
Exec=/usr/local/bin/mesh-drop %u
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=mesh-drop
|
||||
Categories=Utility;
|
||||
StartupWMClass=mesh-drop
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ Type=Application
|
||||
Name=mesh-drop
|
||||
Exec=mesh-drop
|
||||
Icon=mesh-drop
|
||||
Categories=Development;
|
||||
Categories=GTK;FileTransfer;Utility;
|
||||
Terminal=false
|
||||
Keywords=wails
|
||||
Keywords=file transfer
|
||||
Version=1.0
|
||||
StartupNotify=false
|
||||
|
||||
@@ -46,20 +46,17 @@ tasks:
|
||||
platforms: [windows]
|
||||
- cmd: rm -f *.syso
|
||||
platforms: [linux, darwin]
|
||||
- cmd: upx -t "{{.BIN_DIR}}/{{.APP_NAME}}.exe" || upx "{{.BIN_DIR}}/{{.APP_NAME}}.exe"
|
||||
platforms: [linux]
|
||||
vars:
|
||||
BUILD_FLAGS: '{{if eq .DEV "true"}}-buildvcs=false -gcflags=all="-l"{{else}}-tags production -trimpath -buildvcs=false -ldflags="-w -s -H windowsgui"{{end}}'
|
||||
VERSION:
|
||||
sh: git describe --tags --always
|
||||
BUILD_FLAGS: '{{if eq .DEV "true"}}-buildvcs=false -gcflags=all="-l"{{else}}-tags production -trimpath -buildvcs=false -ldflags="-w -s -H windowsgui -X mesh-drop/internal/config.Version={{.VERSION}}"{{end}}'
|
||||
env:
|
||||
GOOS: windows
|
||||
CGO_ENABLED: '{{.CGO_ENABLED | default "0"}}'
|
||||
GOARCH: "{{.ARCH | default ARCH}}"
|
||||
|
||||
build:prod:
|
||||
summary: Builds the application for Windows
|
||||
deps:
|
||||
- task: build
|
||||
cmds:
|
||||
- upx --best --lzma "{{.BIN_DIR}}/{{.APP_NAME}}.exe"
|
||||
|
||||
build:docker:
|
||||
summary: Cross-compiles for Windows using Docker with Zig (for CGO builds on non-Windows)
|
||||
internal: true
|
||||
|
||||
BIN
goreleaser/icon.ico
Normal file
BIN
goreleaser/icon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
BIN
goreleaser/icon.png
Normal file
BIN
goreleaser/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
15
goreleaser/info.json
Normal file
15
goreleaser/info.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"fixed": {
|
||||
"file_version": "0.1.0"
|
||||
},
|
||||
"info": {
|
||||
"0000": {
|
||||
"ProductVersion": "0.1.0",
|
||||
"CompanyName": "Nite",
|
||||
"FileDescription": "A mesh-drop application",
|
||||
"LegalCopyright": "© 2026, Nite",
|
||||
"ProductName": "Nite",
|
||||
"Comments": "A mesh-drop application"
|
||||
}
|
||||
}
|
||||
}
|
||||
10
goreleaser/mesh-drop.desktop
Executable file
10
goreleaser/mesh-drop.desktop
Executable file
@@ -0,0 +1,10 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=mesh-drop
|
||||
Exec=mesh-drop
|
||||
Icon=mesh-drop.png
|
||||
Categories=Network;FileTransfer;
|
||||
Terminal=false
|
||||
Keywords=mesh,transfer,file,network,drop
|
||||
Version=1.0
|
||||
StartupNotify=false
|
||||
22
goreleaser/wails.exe.manifest
Normal file
22
goreleaser/wails.exe.manifest
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||
<assemblyIdentity type="win32" name="com.nite07.meshdrop" version="0.1.0" processorArchitecture="*"/>
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
<asmv3:application>
|
||||
<asmv3:windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware> <!-- fallback for Windows 7 and 8 -->
|
||||
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">permonitorv2,permonitor</dpiAwareness> <!-- falls back to per-monitor if per-monitor v2 is not supported -->
|
||||
</asmv3:windowsSettings>
|
||||
</asmv3:application>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<security>
|
||||
<requestedPrivileges>
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
</assembly>
|
||||
@@ -19,7 +19,7 @@ type WindowState struct {
|
||||
Maximised bool `mapstructure:"maximised"`
|
||||
}
|
||||
|
||||
const Version = "0.0.2"
|
||||
var Version = "0.0.2"
|
||||
|
||||
type Config struct {
|
||||
v *viper.Viper
|
||||
|
||||
Reference in New Issue
Block a user