mirror of
https://wget.la/https://github.com/leookun/cursor-byok
synced 2026-08-17 03:27:02 +08:00
274 lines
8.6 KiB
YAML
274 lines
8.6 KiB
YAML
version: "3"
|
||
|
||
includes:
|
||
common: ../Taskfile.yml
|
||
|
||
tasks:
|
||
build:
|
||
summary: 构建 macOS 程序
|
||
internal: true
|
||
cmds:
|
||
- task: build:native
|
||
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: 使用本机构建 macOS 程序
|
||
internal: true
|
||
deps:
|
||
- task: common:go:mod:tidy
|
||
- task: common:build:frontend
|
||
vars:
|
||
BUILD_FLAGS:
|
||
ref: .BUILD_FLAGS
|
||
DEV:
|
||
ref: .DEV
|
||
SCAN:
|
||
ref: .SCAN
|
||
- task: common:generate:icons
|
||
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: darwin
|
||
CGO_ENABLED: 1
|
||
GOARCH: '{{.ARCH | default ARCH}}'
|
||
CGO_CFLAGS: "-mmacosx-version-min=10.15"
|
||
CGO_LDFLAGS: "-mmacosx-version-min=10.15"
|
||
MACOSX_DEPLOYMENT_TARGET: "10.15"
|
||
|
||
build:universal:
|
||
summary: 构建 macOS 通用包(amd64 + arm64)
|
||
internal: true
|
||
deps:
|
||
- task: build
|
||
vars:
|
||
ARCH: amd64
|
||
BINARY_NAME: "{{.APP_NAME}}-amd64"
|
||
OUTPUT: "{{.BIN_DIR}}/{{.APP_NAME}}-amd64"
|
||
- task: build
|
||
vars:
|
||
ARCH: arm64
|
||
BINARY_NAME: "{{.APP_NAME}}-arm64"
|
||
OUTPUT: "{{.BIN_DIR}}/{{.APP_NAME}}-arm64"
|
||
cmds:
|
||
- lipo -create -output "{{.BIN_DIR}}/{{.APP_NAME}}" "{{.BIN_DIR}}/{{.APP_NAME}}-amd64" "{{.BIN_DIR}}/{{.APP_NAME}}-arm64"
|
||
- rm -f "{{.BIN_DIR}}/{{.APP_NAME}}-amd64" "{{.BIN_DIR}}/{{.APP_NAME}}-arm64"
|
||
|
||
package:
|
||
summary: 打包 macOS .app(可通过 APP_BUNDLE 指定输出包名)
|
||
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:app:bundle
|
||
vars:
|
||
APP_BUNDLE:
|
||
ref: .APP_BUNDLE
|
||
OUTPUT:
|
||
ref: .OUTPUT
|
||
BINARY_NAME:
|
||
ref: .BINARY_NAME
|
||
|
||
package:dmg:
|
||
summary: 打包 macOS DMG(可通过 APP_BUNDLE/DMG_NAME 指定输出文件名)
|
||
internal: true
|
||
cmds:
|
||
- task: package
|
||
vars:
|
||
ARCH:
|
||
ref: .ARCH
|
||
OUTPUT:
|
||
ref: .OUTPUT
|
||
BINARY_NAME:
|
||
ref: .BINARY_NAME
|
||
APP_BUNDLE:
|
||
ref: .APP_BUNDLE
|
||
BUILD_FLAGS:
|
||
ref: .BUILD_FLAGS
|
||
EXTRA_TAGS:
|
||
ref: .EXTRA_TAGS
|
||
DEV:
|
||
ref: .DEV
|
||
SCAN:
|
||
ref: .SCAN
|
||
- task: create:dmg
|
||
vars:
|
||
ARCH:
|
||
ref: .ARCH
|
||
APP_BUNDLE:
|
||
ref: .APP_BUNDLE
|
||
DMG_NAME:
|
||
ref: .DMG_NAME
|
||
- task: cleanup:package:artifacts
|
||
vars:
|
||
OUTPUT:
|
||
ref: .OUTPUT
|
||
BINARY_NAME:
|
||
ref: .BINARY_NAME
|
||
APP_BUNDLE:
|
||
ref: .APP_BUNDLE
|
||
|
||
package:archive:
|
||
summary: 打包 macOS updater 归档(.tar.gz)
|
||
internal: true
|
||
cmds:
|
||
- task: package
|
||
vars:
|
||
ARCH:
|
||
ref: .ARCH
|
||
OUTPUT:
|
||
ref: .OUTPUT
|
||
BINARY_NAME:
|
||
ref: .BINARY_NAME
|
||
APP_BUNDLE:
|
||
ref: .APP_BUNDLE
|
||
BUILD_FLAGS:
|
||
ref: .BUILD_FLAGS
|
||
EXTRA_TAGS:
|
||
ref: .EXTRA_TAGS
|
||
DEV:
|
||
ref: .DEV
|
||
SCAN:
|
||
ref: .SCAN
|
||
- task: create:archive
|
||
vars:
|
||
APP_BUNDLE:
|
||
ref: .APP_BUNDLE
|
||
ARCHIVE_PATH:
|
||
ref: .ARCHIVE_PATH
|
||
- task: cleanup:package:artifacts
|
||
vars:
|
||
OUTPUT:
|
||
ref: .OUTPUT
|
||
BINARY_NAME:
|
||
ref: .BINARY_NAME
|
||
APP_BUNDLE:
|
||
ref: .APP_BUNDLE
|
||
|
||
package:universal:
|
||
summary: 打包 macOS 通用 .app
|
||
internal: true
|
||
cmds:
|
||
- task: build:universal
|
||
- task: create:app:bundle
|
||
|
||
create:app:bundle:
|
||
summary: 生成 .app 包
|
||
internal: true
|
||
vars:
|
||
APP_BUNDLE: '{{.APP_BUNDLE | default (printf "%s.app" .APP_NAME)}}'
|
||
BINARY_NAME: '{{.BINARY_NAME | default .APP_NAME}}'
|
||
BINARY_PATH: '{{.OUTPUT | default (printf "%s/%s" .BIN_DIR .BINARY_NAME)}}'
|
||
EXECUTABLE_NAME: '{{.EXECUTABLE_NAME | default .APP_NAME}}'
|
||
cmds:
|
||
- rm -rf "{{.BIN_DIR}}/{{.APP_BUNDLE}}"
|
||
- mkdir -p "{{.BIN_DIR}}/{{.APP_BUNDLE}}/Contents/MacOS"
|
||
- mkdir -p "{{.BIN_DIR}}/{{.APP_BUNDLE}}/Contents/Resources"
|
||
- cp build/darwin/icons.icns "{{.BIN_DIR}}/{{.APP_BUNDLE}}/Contents/Resources"
|
||
- cp "{{.BINARY_PATH}}" "{{.BIN_DIR}}/{{.APP_BUNDLE}}/Contents/MacOS/{{.EXECUTABLE_NAME}}"
|
||
- cp build/darwin/Info.plist "{{.BIN_DIR}}/{{.APP_BUNDLE}}/Contents"
|
||
- task: codesign:adhoc
|
||
vars:
|
||
APP_BUNDLE:
|
||
ref: .APP_BUNDLE
|
||
|
||
codesign:adhoc:
|
||
summary: 使用临时签名(开发测试)
|
||
internal: true
|
||
vars:
|
||
APP_BUNDLE: '{{.APP_BUNDLE | default (printf "%s.app" .APP_NAME)}}'
|
||
cmds:
|
||
- codesign --force --deep --sign - "{{.BIN_DIR}}/{{.APP_BUNDLE}}"
|
||
|
||
create:dmg:
|
||
summary: 生成 macOS DMG 包(优先使用 create-dmg,不存在时回退 hdiutil)
|
||
internal: true
|
||
vars:
|
||
APP_BUNDLE: '{{.APP_BUNDLE | default (printf "%s.app" .APP_NAME)}}'
|
||
DMG_NAME: '{{.DMG_NAME | default (printf "%s.dmg" .APP_NAME)}}'
|
||
STAGING_DIR: '{{.BIN_DIR}}/.dmg-{{.ARCH | default ARCH}}'
|
||
cmds:
|
||
- rm -rf "{{.STAGING_DIR}}"
|
||
- mkdir -p "{{.STAGING_DIR}}"
|
||
- cp -R "{{.BIN_DIR}}/{{.APP_BUNDLE}}" "{{.STAGING_DIR}}/{{.APP_NAME}}.app"
|
||
- |
|
||
if [ -f "build/dmg-extras/提示损坏?点我.command" ]; then
|
||
cp "build/dmg-extras/提示损坏?点我.command" "{{.STAGING_DIR}}/提示损坏?点我.command"
|
||
chmod +x "{{.STAGING_DIR}}/提示损坏?点我.command"
|
||
fi
|
||
- |
|
||
if command -v create-dmg >/dev/null 2>&1; then
|
||
rm -f "{{.BIN_DIR}}/{{.DMG_NAME}}"
|
||
create-dmg --volname "{{.APP_NAME}}" --window-size 600 400 --icon-size 100 --app-drop-link 450 200 "{{.BIN_DIR}}/{{.DMG_NAME}}" "{{.STAGING_DIR}}"
|
||
else
|
||
hdiutil create -volname "{{.APP_NAME}}" -srcfolder "{{.STAGING_DIR}}" -ov -format UDZO "{{.BIN_DIR}}/{{.DMG_NAME}}"
|
||
fi
|
||
- rm -rf "{{.STAGING_DIR}}"
|
||
|
||
create:archive:
|
||
summary: 生成 macOS updater tar.gz 归档
|
||
internal: true
|
||
vars:
|
||
APP_BUNDLE: '{{.APP_BUNDLE | default (printf "%s.app" .APP_NAME)}}'
|
||
ARCHIVE_PATH: '{{.ARCHIVE_PATH | default (printf "%s/%s.tar.gz" .BIN_DIR .APP_NAME)}}'
|
||
cmds:
|
||
- rm -f "{{.ARCHIVE_PATH}}"
|
||
- env LC_ALL=C tar -C "{{.BIN_DIR}}" -czf "{{.ARCHIVE_PATH}}" "{{.APP_BUNDLE}}"
|
||
|
||
cleanup:package:artifacts:
|
||
summary: 清理打包中间产物
|
||
internal: true
|
||
vars:
|
||
APP_BUNDLE: '{{.APP_BUNDLE | default (printf "%s.app" .APP_NAME)}}'
|
||
BINARY_NAME: '{{.BINARY_NAME | default .APP_NAME}}'
|
||
BINARY_PATH: '{{.OUTPUT | default (printf "%s/%s" .BIN_DIR .BINARY_NAME)}}'
|
||
cmds:
|
||
- rm -f "{{.BINARY_PATH}}"
|
||
- rm -rf "{{.BIN_DIR}}/{{.APP_BUNDLE}}"
|
||
|
||
run:
|
||
summary: 运行本地开发包
|
||
vars:
|
||
BINARY_NAME: '{{.BINARY_NAME | default .APP_NAME}}'
|
||
EXECUTABLE_NAME: '{{.EXECUTABLE_NAME | default .APP_NAME}}'
|
||
cmds:
|
||
- mkdir -p "{{.BIN_DIR}}/{{.APP_NAME}}.dev.app/Contents/MacOS"
|
||
- mkdir -p "{{.BIN_DIR}}/{{.APP_NAME}}.dev.app/Contents/Resources"
|
||
- cp build/darwin/icons.icns "{{.BIN_DIR}}/{{.APP_NAME}}.dev.app/Contents/Resources"
|
||
- cp "{{.BIN_DIR}}/{{.BINARY_NAME}}" "{{.BIN_DIR}}/{{.APP_NAME}}.dev.app/Contents/MacOS/{{.EXECUTABLE_NAME}}"
|
||
- cp "build/darwin/Info.dev.plist" "{{.BIN_DIR}}/{{.APP_NAME}}.dev.app/Contents/Info.plist"
|
||
- codesign --force --deep --sign - "{{.BIN_DIR}}/{{.APP_NAME}}.dev.app"
|
||
- '{{.BIN_DIR}}/{{.APP_NAME}}.dev.app/Contents/MacOS/{{.EXECUTABLE_NAME}}'
|