diff --git a/Makefile b/Makefile deleted file mode 100644 index 1a022fe..0000000 --- a/Makefile +++ /dev/null @@ -1,94 +0,0 @@ -BINARY_NAME=linking-tool -BUILD_DIR=bin - -.PHONY: help install dev build preview check lint format clean docker-build docker-run docker-builder release build-linux-amd64 build-linux-arm64 build-linux-armv6 build-linux-armv7 build-windows-amd64 build-darwin-amd64 build-darwin-arm64 build-freebsd-amd64 desktop-build desktop-windows desktop-darwin desktop-dev package - -help: - @echo 'Usage: make [target]' - @echo '' - @echo 'Available targets:' - @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " %-20s %s\n", $$1, $$2}' $(MAKEFILE_LIST) - -dev: - npm install - npm run dev - -build: - npm install - npm run build - mkdir -p $(BUILD_DIR) - CGO_ENABLED=0 go build -ldflags="-s -w" -o $(BUILD_DIR)/$(BINARY_NAME) main.go - -package: build - -release: build - mkdir -p $(BUILD_DIR) - @$(MAKE) build-linux-amd64 - @$(MAKE) build-linux-arm64 - @$(MAKE) build-linux-armv6 - @$(MAKE) build-linux-armv7 - @$(MAKE) build-windows-amd64 - @$(MAKE) build-darwin-amd64 - @$(MAKE) build-darwin-arm64 - @$(MAKE) build-freebsd-amd64 - -build-linux-amd64: - GOOS=linux GOARCH=amd64 go build -o $(BUILD_DIR)/$(BINARY_NAME)-linux-amd64 main.go - -build-linux-arm64: - GOOS=linux GOARCH=arm64 go build -o $(BUILD_DIR)/$(BINARY_NAME)-linux-arm64 main.go - -build-linux-armv6: - GOOS=linux GOARCH=arm GOARM=6 go build -o $(BUILD_DIR)/$(BINARY_NAME)-linux-armv6 main.go - -build-linux-armv7: - GOOS=linux GOARCH=arm GOARM=7 go build -o $(BUILD_DIR)/$(BINARY_NAME)-linux-armv7 main.go - -build-windows-amd64: - GOOS=windows GOARCH=amd64 go build -o $(BUILD_DIR)/$(BINARY_NAME)-windows-amd64.exe main.go - -build-darwin-amd64: - GOOS=darwin GOARCH=amd64 go build -o $(BUILD_DIR)/$(BINARY_NAME)-darwin-amd64 main.go - -build-darwin-arm64: - GOOS=darwin GOARCH=arm64 go build -o $(BUILD_DIR)/$(BINARY_NAME)-darwin-arm64 main.go - -build-freebsd-amd64: - GOOS=freebsd GOARCH=amd64 go build -o $(BUILD_DIR)/$(BINARY_NAME)-freebsd-amd64 main.go - -docker-build: - docker build -t $(BINARY_NAME) . - -docker-run: - docker run -p 8080:8080 $(BINARY_NAME) - -docker-builder: - docker build -f Dockerfile.build -t $(BINARY_NAME)-build . - docker create --name $(BINARY_NAME)-temp $(BINARY_NAME)-build - mkdir -p $(BUILD_DIR) - docker cp $(BINARY_NAME)-temp:/bin/. $(BUILD_DIR)/ - docker cp $(BINARY_NAME)-temp:/desktop-bin/. $(BUILD_DIR)/ - docker rm $(BINARY_NAME)-temp - -desktop-build: build - rm -rf desktop/frontend_dist/* - cp -r build/* desktop/frontend_dist/ - cd desktop && wails build -s - -desktop-windows: build - rm -rf desktop/frontend_dist/* - cp -r build/* desktop/frontend_dist/ - cd desktop && wails build -s -platform windows/amd64 - -desktop-darwin: build - rm -rf desktop/frontend_dist/* - cp -r build/* desktop/frontend_dist/ - cd desktop && wails build -s -platform darwin/universal - -desktop-dev: build - rm -rf desktop/frontend_dist/* - cp -r build/* desktop/frontend_dist/ - cd desktop && wails dev - -clean: - rm -rf .svelte-kit build node_modules/.vite dist package linking-tool tmp $(BUILD_DIR) diff --git a/Taskfile.yml b/Taskfile.yml new file mode 100644 index 0000000..f50dcc2 --- /dev/null +++ b/Taskfile.yml @@ -0,0 +1,174 @@ +version: '3' + +vars: + BINARY_NAME: linking-tool + BUILD_DIR: bin + +tasks: + default: + desc: Show available tasks + cmds: + - task --list + + dev: + desc: Run development servers (Go & SvelteKit) + cmds: + - pnpm install + - pnpm run dev + + build: + desc: Build the single binary web server + cmds: + - pnpm install + - pnpm run build + - mkdir -p {{.BUILD_DIR}} + - CGO_ENABLED=0 go build -ldflags="-s -w" -o {{.BUILD_DIR}}/{{.BINARY_NAME}} main.go + + package: + desc: Package the application + deps: [build] + + release: + desc: Build binaries for all platforms + deps: [build] + cmds: + - task: build-linux-amd64 + - task: build-linux-arm64 + - task: build-linux-armv6 + - task: build-linux-armv7 + - task: build-windows-amd64 + - task: build-darwin-amd64 + - task: build-darwin-arm64 + - task: build-freebsd-amd64 + + build-linux-amd64: + desc: Build Linux AMD64 binary + cmds: + - GOOS=linux GOARCH=amd64 go build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-linux-amd64 main.go + + build-linux-arm64: + desc: Build Linux ARM64 binary + cmds: + - GOOS=linux GOARCH=arm64 go build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-linux-arm64 main.go + + build-linux-armv6: + desc: Build Linux ARMv6 binary + cmds: + - GOOS=linux GOARCH=arm GOARM=6 go build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-linux-armv6 main.go + + build-linux-armv7: + desc: Build Linux ARMv7 binary + cmds: + - GOOS=linux GOARCH=arm GOARM=7 go build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-linux-armv7 main.go + + build-windows-amd64: + desc: Build Windows AMD64 binary + cmds: + - GOOS=windows GOARCH=amd64 go build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-windows-amd64.exe main.go + + build-darwin-amd64: + desc: Build Darwin AMD64 binary + cmds: + - GOOS=darwin GOARCH=amd64 go build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-darwin-amd64 main.go + + build-darwin-arm64: + desc: Build Darwin ARM64 binary + cmds: + - GOOS=darwin GOARCH=arm64 go build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-darwin-arm64 main.go + + build-freebsd-amd64: + desc: Build FreeBSD AMD64 binary + cmds: + - GOOS=freebsd GOARCH=amd64 go build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-freebsd-amd64 main.go + + docker-build: + desc: Build Docker image + cmds: + - docker build -f docker/Dockerfile -t {{.BINARY_NAME}} . + + docker-run: + desc: Run Docker container + cmds: + - docker run -p 8080:8080 {{.BINARY_NAME}} + + docker-builder: + desc: Build and extract binaries using Docker + cmds: + - docker build -f docker/Dockerfile.build -t {{.BINARY_NAME}}-build . + - docker create --name {{.BINARY_NAME}}-temp {{.BINARY_NAME}}-build + - mkdir -p {{.BUILD_DIR}} + - docker cp {{.BINARY_NAME}}-temp:/bin/. {{.BUILD_DIR}}/ + - docker cp {{.BINARY_NAME}}-temp:/desktop-bin/. {{.BUILD_DIR}}/ + - docker rm {{.BINARY_NAME}}-temp + + desktop-build: + desc: Build desktop application + deps: [build] + cmds: + - rm -rf desktop/frontend_dist/* + - cp -r build/* desktop/frontend_dist/ + - cd desktop && wails build -s + + desktop-windows: + desc: Build desktop application for Windows + deps: [build] + cmds: + - rm -rf desktop/frontend_dist/* + - cp -r build/* desktop/frontend_dist/ + - cd desktop && wails build -s -platform windows/amd64 + + desktop-darwin: + desc: Build desktop application for Darwin + deps: [build] + cmds: + - rm -rf desktop/frontend_dist/* + - cp -r build/* desktop/frontend_dist/ + - cd desktop && wails build -s -platform darwin/universal + + desktop-dev: + desc: Run desktop application in development mode + deps: [build] + cmds: + - rm -rf desktop/frontend_dist/* + - cp -r build/* desktop/frontend_dist/ + - cd desktop && wails dev + + clean: + desc: Clean build artifacts + cmds: + - rm -rf .svelte-kit build node_modules node_modules/.vite dist package linking-tool tmp {{.BUILD_DIR}} + + install: + desc: Install dependencies + cmds: + - pnpm install + + preview: + desc: Preview production build + cmds: + - pnpm run preview + + check: + desc: Run type checking + cmds: + - pnpm run check + + lint: + desc: Run linter + cmds: + - pnpm run lint + + format: + desc: Format code + cmds: + - pnpm run format + + version:minor: + desc: Bump minor version in package.json + cmds: + - pnpm version minor --no-git-tag-version + + version:major: + desc: Bump major version in package.json + cmds: + - pnpm version major --no-git-tag-version