mirror of
https://wget.la/https://github.com/leookun/cursor-byok
synced 2026-08-17 19:47:10 +08:00
v0.3.8
This commit is contained in:
@@ -0,0 +1,192 @@
|
||||
version: "3"
|
||||
|
||||
includes:
|
||||
common: ../Taskfile.yml
|
||||
|
||||
vars:
|
||||
CROSS_IMAGE: cursor-linux-amd64-cross
|
||||
PROJECT_ROOT:
|
||||
sh: 'cd "{{.TASKFILE_DIR}}/../.." && pwd'
|
||||
|
||||
tasks:
|
||||
build:
|
||||
summary: 构建 Linux 程序
|
||||
internal: true
|
||||
vars:
|
||||
TARGET_ARCH: '{{.ARCH | default ARCH}}'
|
||||
BUILD_FLAGS: '{{if eq .DEV "true"}}{{if .EXTRA_TAGS}}-tags {{.EXTRA_TAGS}} {{end}}-buildvcs=false -gcflags=all="-l" -ldflags="-X cursor/internal/buildinfo.Version={{.APP_VERSION}}"{{else}}-tags production{{if .EXTRA_TAGS}},{{.EXTRA_TAGS}}{{end}} -trimpath -buildvcs=false -ldflags="-w -s -X cursor/internal/buildinfo.Version={{.APP_VERSION}}"{{end}}'
|
||||
HAS_CC:
|
||||
sh: '(command -v gcc >/dev/null 2>&1 || command -v clang >/dev/null 2>&1) && echo "true" || echo "false"'
|
||||
preconditions:
|
||||
- sh: '[ "{{.TARGET_ARCH}}" = "amd64" ]'
|
||||
msg: "当前仅支持 linux/amd64 构建。"
|
||||
cmds:
|
||||
- task: '{{if and (eq OS "linux") (eq .HAS_CC "true") (eq .TARGET_ARCH ARCH)}}build:native{{else}}build:docker{{end}}'
|
||||
vars:
|
||||
ARCH:
|
||||
ref: .ARCH
|
||||
OUTPUT:
|
||||
ref: .OUTPUT
|
||||
BINARY_NAME:
|
||||
ref: .BINARY_NAME
|
||||
BUILD_FLAGS:
|
||||
ref: .BUILD_FLAGS
|
||||
EXTRA_TAGS:
|
||||
ref: .EXTRA_TAGS
|
||||
DEV:
|
||||
ref: .DEV
|
||||
SCAN:
|
||||
ref: .SCAN
|
||||
|
||||
build:native:
|
||||
summary: 使用本机构建 Linux 程序
|
||||
internal: true
|
||||
deps:
|
||||
- task: common:go:mod:tidy
|
||||
- task: common:build:frontend
|
||||
vars:
|
||||
BUILD_FLAGS:
|
||||
ref: .BUILD_FLAGS
|
||||
DEV:
|
||||
ref: .DEV
|
||||
SCAN:
|
||||
ref: .SCAN
|
||||
preconditions:
|
||||
- sh: '[ "{{OS}}" = "linux" ]'
|
||||
msg: "Linux 原生构建仅支持在 Linux 主机上执行。"
|
||||
- sh: pkg-config --version >/dev/null 2>&1
|
||||
msg: "未检测到 pkg-config,请先安装。"
|
||||
- sh: 'command -v gcc >/dev/null 2>&1 || command -v clang >/dev/null 2>&1'
|
||||
msg: "未检测到 gcc 或 clang,请先安装 C 编译器。"
|
||||
- sh: pkg-config --exists gtk+-3.0 webkit2gtk-4.1 gdk-3.0 gio-unix-2.0
|
||||
msg: "缺少 Linux GUI 构建依赖,请安装 gtk+-3.0、webkit2gtk-4.1、gdk-3.0 和 gio-unix-2.0 开发包。"
|
||||
cmds:
|
||||
- go build {{.BUILD_FLAGS}} -o "{{.OUTPUT}}"
|
||||
vars:
|
||||
BUILD_FLAGS: '{{if eq .DEV "true"}}{{if .EXTRA_TAGS}}-tags {{.EXTRA_TAGS}} {{end}}-buildvcs=false -gcflags=all="-l" -ldflags="-X cursor/internal/buildinfo.Version={{.APP_VERSION}}"{{else}}-tags production{{if .EXTRA_TAGS}},{{.EXTRA_TAGS}}{{end}} -trimpath -buildvcs=false -ldflags="-w -s -X cursor/internal/buildinfo.Version={{.APP_VERSION}}"{{end}}'
|
||||
BINARY_NAME: '{{.BINARY_NAME | default .APP_NAME}}'
|
||||
DEFAULT_OUTPUT: '{{.BIN_DIR}}/{{.BINARY_NAME}}'
|
||||
OUTPUT: '{{.OUTPUT | default .DEFAULT_OUTPUT}}'
|
||||
env:
|
||||
GOOS: linux
|
||||
CGO_ENABLED: 1
|
||||
GOARCH: '{{.ARCH | default ARCH}}'
|
||||
|
||||
build:docker:
|
||||
summary: 使用 Docker 构建 Linux 程序
|
||||
internal: true
|
||||
dir: '{{.PROJECT_ROOT}}'
|
||||
deps:
|
||||
- task: common:build:frontend
|
||||
vars:
|
||||
BUILD_FLAGS:
|
||||
ref: .BUILD_FLAGS
|
||||
DEV:
|
||||
ref: .DEV
|
||||
SCAN:
|
||||
ref: .SCAN
|
||||
preconditions:
|
||||
- sh: '[ "{{OS}}" = "darwin" ] || [ "{{OS}}" = "linux" ]'
|
||||
msg: "Docker Linux 构建当前仅支持在 macOS 或 Linux 主机上执行。"
|
||||
- sh: docker info >/dev/null 2>&1
|
||||
msg: "未检测到可用的 Docker daemon,请先启动 Docker。"
|
||||
- sh: docker image inspect {{.CROSS_IMAGE}} >/dev/null 2>&1
|
||||
msg: "未找到 Docker 镜像 '{{.CROSS_IMAGE}}',请先执行 task setup:docker。"
|
||||
cmds:
|
||||
- docker run --rm --platform "{{.DOCKER_PLATFORM}}" --entrypoint /bin/sh -v "{{.PROJECT_ROOT}}:/app" {{.GO_CACHE_MOUNT}} {{.REPLACE_MOUNTS}} -e GOPATH=/go -e GOMODCACHE=/go/pkg/mod -e APP_NAME="{{.APP_NAME}}" -e EXTRA_LDFLAGS="-X cursor/internal/buildinfo.Version={{.APP_VERSION}}" -e GO_BUILD_LOG_MODE="{{.GO_BUILD_LOG_MODE}}" {{if .EXTRA_TAGS}}-e EXTRA_TAGS="{{.EXTRA_TAGS}}"{{end}} "{{.CROSS_IMAGE}}" /app/build/docker/build-linux.sh
|
||||
- docker run --rm --platform "{{.DOCKER_PLATFORM}}" --entrypoint chown -v "{{.PROJECT_ROOT}}:/app" "{{.CROSS_IMAGE}}" -R $(id -u):$(id -g) /app/bin
|
||||
- mkdir -p "{{.BIN_DIR}}"
|
||||
- mv "bin/{{.APP_NAME}}-linux-{{.DOCKER_ARCH}}" "{{.OUTPUT}}"
|
||||
vars:
|
||||
DOCKER_ARCH: '{{.ARCH | default "amd64"}}'
|
||||
DOCKER_PLATFORM: 'linux/{{.DOCKER_ARCH}}'
|
||||
DEFAULT_OUTPUT: '{{.BIN_DIR}}/{{.APP_NAME}}'
|
||||
GO_BUILD_LOG_MODE: '{{.GO_BUILD_LOG_MODE | default "quiet"}}'
|
||||
OUTPUT: '{{.OUTPUT | default .DEFAULT_OUTPUT}}'
|
||||
GO_CACHE_MOUNT:
|
||||
sh: 'echo "-v ${GOPATH:-$HOME/go}/pkg/mod:/go/pkg/mod"'
|
||||
REPLACE_MOUNTS:
|
||||
sh: |
|
||||
grep -E '^replace .* => ' go.mod 2>/dev/null | while read -r line; do
|
||||
path=$(echo "$line" | sed -E 's/^replace .* => //' | tr -d '\r')
|
||||
if [ "${path#/}" = "$path" ]; then
|
||||
path="$(cd "$(dirname "$path")" 2>/dev/null && pwd)/$(basename "$path")"
|
||||
fi
|
||||
if [ -d "$path" ]; then
|
||||
echo "-v $path:$path:ro"
|
||||
fi
|
||||
done | tr '\n' ' '
|
||||
|
||||
package:archive:
|
||||
summary: 打包 Linux updater 归档(.tar.gz)
|
||||
internal: true
|
||||
cmds:
|
||||
- task: build
|
||||
vars:
|
||||
ARCH:
|
||||
ref: .ARCH
|
||||
OUTPUT:
|
||||
ref: .OUTPUT
|
||||
BINARY_NAME:
|
||||
ref: .BINARY_NAME
|
||||
BUILD_FLAGS:
|
||||
ref: .BUILD_FLAGS
|
||||
EXTRA_TAGS:
|
||||
ref: .EXTRA_TAGS
|
||||
DEV:
|
||||
ref: .DEV
|
||||
SCAN:
|
||||
ref: .SCAN
|
||||
- task: create:archive
|
||||
vars:
|
||||
OUTPUT:
|
||||
ref: .OUTPUT
|
||||
ARCHIVE_BINARY_NAME:
|
||||
ref: .ARCHIVE_BINARY_NAME
|
||||
ARCHIVE_PATH:
|
||||
ref: .ARCHIVE_PATH
|
||||
ARCH:
|
||||
ref: .ARCH
|
||||
- task: cleanup:package:artifacts
|
||||
vars:
|
||||
OUTPUT:
|
||||
ref: .OUTPUT
|
||||
BINARY_NAME:
|
||||
ref: .BINARY_NAME
|
||||
|
||||
create:archive:
|
||||
summary: 生成 Linux updater tar.gz 归档
|
||||
internal: true
|
||||
vars:
|
||||
BINARY_NAME: '{{.BINARY_NAME | default .APP_NAME}}'
|
||||
BINARY_PATH: '{{.OUTPUT | default (printf "%s/%s" .BIN_DIR .BINARY_NAME)}}'
|
||||
ARCHIVE_BINARY_NAME: '{{.ARCHIVE_BINARY_NAME | default .APP_NAME}}'
|
||||
ARCHIVE_PATH: '{{.ARCHIVE_PATH | default (printf "%s/%s.tar.gz" .BIN_DIR .APP_NAME)}}'
|
||||
STAGING_DIR: '{{.BIN_DIR}}/.linux-archive-{{.ARCH | default ARCH}}'
|
||||
cmds:
|
||||
- rm -rf "{{.STAGING_DIR}}"
|
||||
- mkdir -p "{{.STAGING_DIR}}"
|
||||
- cp "{{.BINARY_PATH}}" "{{.STAGING_DIR}}/{{.ARCHIVE_BINARY_NAME}}"
|
||||
- chmod +x "{{.STAGING_DIR}}/{{.ARCHIVE_BINARY_NAME}}"
|
||||
- rm -f "{{.ARCHIVE_PATH}}"
|
||||
- env LC_ALL=C tar -C "{{.STAGING_DIR}}" -czf "{{.ARCHIVE_PATH}}" "{{.ARCHIVE_BINARY_NAME}}"
|
||||
- rm -rf "{{.STAGING_DIR}}"
|
||||
|
||||
cleanup:package:artifacts:
|
||||
summary: 清理 Linux 打包中间产物
|
||||
internal: true
|
||||
vars:
|
||||
BINARY_NAME: '{{.BINARY_NAME | default .APP_NAME}}'
|
||||
BINARY_PATH: '{{.OUTPUT | default (printf "%s/%s" .BIN_DIR .BINARY_NAME)}}'
|
||||
cmds:
|
||||
- rm -f "{{.BINARY_PATH}}"
|
||||
|
||||
run:
|
||||
summary: 运行 Linux 可执行文件
|
||||
vars:
|
||||
OUTPUT: '{{.OUTPUT | default (printf "%s/%s" .BIN_DIR .APP_NAME)}}'
|
||||
preconditions:
|
||||
- sh: '[ "{{OS}}" = "linux" ]'
|
||||
msg: "Linux 运行任务仅支持在 Linux 主机上执行。"
|
||||
cmds:
|
||||
- '{{.OUTPUT}}'
|
||||
@@ -0,0 +1,13 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=Cursor助手
|
||||
Comment=Cursor助手
|
||||
# The Exec line includes %u to pass the URL to the application
|
||||
Exec=/usr/local/bin/Cursor助手 %u
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=Cursor助手
|
||||
Categories=Utility;
|
||||
StartupWMClass=Cursor助手
|
||||
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
# Feel free to remove those if you don't want/need to use them.
|
||||
# Make sure to check the documentation at https://nfpm.goreleaser.com
|
||||
#
|
||||
# The lines below are called `modelines`. See `:help modeline`
|
||||
|
||||
name: "Cursor助手"
|
||||
arch: ${GOARCH}
|
||||
platform: "linux"
|
||||
version: "0.0.38"
|
||||
section: "default"
|
||||
priority: "extra"
|
||||
maintainer: ${GIT_COMMITTER_NAME} <${GIT_COMMITTER_EMAIL}>
|
||||
description: "Cursor助手"
|
||||
vendor: "Cursor助手"
|
||||
homepage: "https://wails.io"
|
||||
license: "MIT"
|
||||
release: "1"
|
||||
|
||||
contents:
|
||||
- src: "./bin/Cursor助手"
|
||||
dst: "/usr/local/bin/Cursor助手"
|
||||
- src: "./build/appicon.png"
|
||||
dst: "/usr/share/icons/hicolor/128x128/apps/Cursor助手.png"
|
||||
- src: "./build/linux/Cursor助手.desktop"
|
||||
dst: "/usr/share/applications/Cursor助手.desktop"
|
||||
|
||||
# Default dependencies for Debian 12/Ubuntu 22.04+ with WebKit 4.1
|
||||
depends:
|
||||
- libgtk-3-0
|
||||
- libwebkit2gtk-4.1-0
|
||||
|
||||
# Distribution-specific overrides for different package formats and WebKit versions
|
||||
overrides:
|
||||
# RPM packages for RHEL/CentOS/AlmaLinux/Rocky Linux (WebKit 4.0)
|
||||
rpm:
|
||||
depends:
|
||||
- gtk3
|
||||
- webkit2gtk4.1
|
||||
|
||||
# Arch Linux packages (WebKit 4.1)
|
||||
archlinux:
|
||||
depends:
|
||||
- gtk3
|
||||
- webkit2gtk-4.1
|
||||
|
||||
# scripts section to ensure desktop database is updated after install
|
||||
scripts:
|
||||
postinstall: "./build/linux/nfpm/scripts/postinstall.sh"
|
||||
# You can also add preremove, postremove if needed
|
||||
# preremove: "./build/linux/nfpm/scripts/preremove.sh"
|
||||
# postremove: "./build/linux/nfpm/scripts/postremove.sh"
|
||||
|
||||
# replaces:
|
||||
# - foobar
|
||||
# provides:
|
||||
# - bar
|
||||
# depends:
|
||||
# - gtk3
|
||||
# - libwebkit2gtk
|
||||
# recommends:
|
||||
# - whatever
|
||||
# suggests:
|
||||
# - something-else
|
||||
# conflicts:
|
||||
# - not-foo
|
||||
# - not-bar
|
||||
# changelog: "changelog.yaml"
|
||||
Reference in New Issue
Block a user