183 lines
5.8 KiB
Makefile
183 lines
5.8 KiB
Makefile
# Makefile for Jan Electron App - Build, Lint, Test, and Clean
|
|
|
|
REPORT_PORTAL_URL ?= ""
|
|
REPORT_PORTAL_API_KEY ?= ""
|
|
REPORT_PORTAL_PROJECT_NAME ?= ""
|
|
REPORT_PORTAL_LAUNCH_NAME ?= "Jan App"
|
|
REPORT_PORTAL_DESCRIPTION ?= "Jan App report"
|
|
|
|
# Default target, does nothing
|
|
all:
|
|
@echo "Specify a target to run"
|
|
|
|
# Config yarn version
|
|
|
|
config-yarn:
|
|
corepack enable
|
|
corepack prepare yarn@4.5.3 --activate
|
|
yarn --version
|
|
yarn config set -H enableImmutableInstalls false
|
|
|
|
# Installs yarn dependencies and builds core and extensions
|
|
install-and-build: config-yarn
|
|
ifeq ($(OS),Windows_NT)
|
|
echo "skip"
|
|
else ifeq ($(shell uname -s),Linux)
|
|
chmod +x src-tauri/build-utils/*
|
|
endif
|
|
yarn install
|
|
yarn build:tauri:plugin:api
|
|
yarn build:core
|
|
yarn build:extensions && yarn build:extensions-web
|
|
|
|
dev: install-and-build
|
|
yarn download:bin
|
|
yarn download:lib
|
|
yarn dev
|
|
|
|
# Web application targets
|
|
install-web-app: config-yarn
|
|
yarn install
|
|
|
|
dev-web-app: install-web-app
|
|
yarn dev:web-app
|
|
|
|
build-web-app: install-web-app
|
|
yarn build:web-app
|
|
|
|
serve-web-app:
|
|
yarn serve:web-app
|
|
|
|
build-serve-web-app: build-web-app
|
|
yarn serve:web-app
|
|
|
|
# Linting
|
|
lint: install-and-build
|
|
yarn lint
|
|
|
|
# Testing
|
|
test: lint
|
|
yarn download:bin
|
|
yarn download:lib
|
|
yarn test
|
|
yarn copy:assets:tauri
|
|
yarn build:icon
|
|
cargo test --manifest-path src-tauri/Cargo.toml --no-default-features --features test-tauri -- --test-threads=1
|
|
cargo test --manifest-path src-tauri/plugins/tauri-plugin-hardware/Cargo.toml
|
|
cargo test --manifest-path src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml
|
|
cargo test --manifest-path src-tauri/utils/Cargo.toml
|
|
|
|
# E2E Testing - Separate Steps
|
|
|
|
# Install all E2E dependencies (system deps + yarn deps)
|
|
e2e-install:
|
|
@echo "Checking platform compatibility..."
|
|
ifeq ($(shell uname -s 2>/dev/null || echo Windows),Darwin)
|
|
@echo "E2E testing is not supported on macOS"
|
|
@exit 1
|
|
endif
|
|
@echo "Installing all E2E dependencies..."
|
|
ifeq ($(OS),Windows_NT)
|
|
@echo "Detected Windows - installing Windows dependencies..."
|
|
powershell -ExecutionPolicy Bypass -File scripts/install-e2e-deps-windows.ps1
|
|
else ifneq ($(shell uname -s 2>/dev/null),)
|
|
@echo "Detected Linux - installing Linux dependencies..."
|
|
chmod +x scripts/install-e2e-deps-linux.sh
|
|
./scripts/install-e2e-deps-linux.sh
|
|
else
|
|
@echo "Unknown platform - attempting Linux installation..."
|
|
chmod +x scripts/install-e2e-deps-linux.sh
|
|
./scripts/install-e2e-deps-linux.sh
|
|
endif
|
|
@echo "Installing/updating E2E yarn dependencies..."
|
|
cd tests/e2e && yarn install
|
|
|
|
# Build Tauri app in debug mode for e2e testing
|
|
e2e-build: install-and-build
|
|
@echo "Checking platform compatibility..."
|
|
ifeq ($(shell uname -s 2>/dev/null || echo Windows),Darwin)
|
|
@echo "E2E testing is not supported on macOS"
|
|
@exit 1
|
|
endif
|
|
@echo "Building Tauri app in debug mode for e2e testing..."
|
|
yarn build:web
|
|
yarn copy:assets:tauri
|
|
yarn build:icon
|
|
yarn download:bin
|
|
yarn download:lib
|
|
yarn tauri build --debug --no-bundle
|
|
|
|
# Run e2e tests (assumes deps and build are done)
|
|
e2e-test:
|
|
@echo "Checking platform compatibility..."
|
|
ifeq ($(shell uname -s 2>/dev/null || echo Windows),Darwin)
|
|
@echo "E2E testing is not supported on macOS"
|
|
@exit 1
|
|
endif
|
|
@echo "Running e2e tests..."
|
|
cd tests/e2e && yarn test
|
|
|
|
# Complete e2e test setup and run (all steps)
|
|
e2e-all: e2e-install e2e-build e2e-test
|
|
@echo "Checking platform compatibility..."
|
|
ifeq ($(shell uname -s 2>/dev/null || echo Windows),Darwin)
|
|
@echo "E2E testing is not supported on macOS"
|
|
@exit 1
|
|
endif
|
|
@echo "E2E testing complete!"
|
|
|
|
# Builds and publishes the app
|
|
build-and-publish: install-and-build
|
|
yarn build
|
|
|
|
# Build
|
|
build: install-and-build
|
|
yarn download:lib
|
|
yarn build
|
|
|
|
clean:
|
|
ifeq ($(OS),Windows_NT)
|
|
-powershell -Command "Get-ChildItem -Path . -Include node_modules, .next, dist, build, out, .turbo, .yarn -Recurse -Directory | Remove-Item -Recurse -Force"
|
|
-powershell -Command "Get-ChildItem -Path . -Include package-lock.json, tsconfig.tsbuildinfo -Recurse -File | Remove-Item -Recurse -Force"
|
|
-powershell -Command "Remove-Item -Recurse -Force ./pre-install/*.tgz"
|
|
-powershell -Command "Remove-Item -Recurse -Force ./extensions/*/*.tgz"
|
|
-powershell -Command "Remove-Item -Recurse -Force ./electron/pre-install/*.tgz"
|
|
-powershell -Command "Remove-Item -Recurse -Force ./src-tauri/resources"
|
|
-powershell -Command "Remove-Item -Recurse -Force ./src-tauri/target"
|
|
-powershell -Command "if (Test-Path \"$($env:USERPROFILE)\jan\extensions\") { Remove-Item -Path \"$($env:USERPROFILE)\jan\extensions\" -Recurse -Force }"
|
|
else ifeq ($(shell uname -s),Linux)
|
|
find . -name "node_modules" -type d -prune -exec rm -rf '{}' +
|
|
find . -name ".next" -type d -exec rm -rf '{}' +
|
|
find . -name "dist" -type d -exec rm -rf '{}' +
|
|
find . -name "build" -type d -exec rm -rf '{}' +
|
|
find . -name "out" -type d -exec rm -rf '{}' +
|
|
find . -name ".turbo" -type d -exec rm -rf '{}' +
|
|
find . -name ".yarn" -type d -exec rm -rf '{}' +
|
|
find . -name "packake-lock.json" -type f -exec rm -rf '{}' +
|
|
find . -name "package-lock.json" -type f -exec rm -rf '{}' +
|
|
rm -rf ./pre-install/*.tgz
|
|
rm -rf ./extensions/*/*.tgz
|
|
rm -rf ./electron/pre-install/*.tgz
|
|
rm -rf ./src-tauri/resources
|
|
rm -rf ./src-tauri/target
|
|
rm -rf "~/jan/extensions"
|
|
rm -rf "~/.cache/jan*"
|
|
rm -rf "./.cache"
|
|
else
|
|
find . -name "node_modules" -type d -prune -exec rm -rfv '{}' +
|
|
find . -name ".next" -type d -exec rm -rfv '{}' +
|
|
find . -name "dist" -type d -exec rm -rfv '{}' +
|
|
find . -name "build" -type d -exec rm -rfv '{}' +
|
|
find . -name "out" -type d -exec rm -rfv '{}' +
|
|
find . -name ".turbo" -type d -exec rm -rfv '{}' +
|
|
find . -name ".yarn" -type d -exec rm -rfv '{}' +
|
|
find . -name "package-lock.json" -type f -exec rm -rfv '{}' +
|
|
rm -rfv ./pre-install/*.tgz
|
|
rm -rfv ./extensions/*/*.tgz
|
|
rm -rfv ./electron/pre-install/*.tgz
|
|
rm -rfv ./src-tauri/resources
|
|
rm -rfv ./src-tauri/target
|
|
rm -rfv ~/jan/extensions
|
|
rm -rfv ~/Library/Caches/jan*
|
|
endif
|