aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 2a8fcfeb491494150699a6f98583756a23055331 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# Makefile for archangel ISO build and testing
#
# Usage:
#   make              - Run lint and build
#   make test         - Run lint
#   make test-install - Run install tests in VM (slow)
#   make build        - Build the ISO
#   make release      - Full test + build + deploy
#   make clean        - Clean build artifacts
#   make lint         - Run shellcheck on all scripts
#
# Test configurations are in scripts/test-configs/

.PHONY: all test test-install build release clean lint

# Default target
all: lint build

# Lint all bash scripts
lint:
	@echo "==> Running shellcheck..."
	@shellcheck -x build.sh scripts/*.sh custom/archangel custom/zfsrollback custom/zfssnapshot custom/lib/*.sh || true
	@echo "==> Shellcheck complete"

# Build the ISO (requires sudo)
build:
	@echo "==> Building ISO..."
	sudo ./build.sh

# Integration tests (runs VMs, slow)
test-install: build
	@echo "==> Running install tests..."
	./scripts/test-install.sh

# All tests (lint only - VM tests via test-install)
test: lint

# Full release: test everything, build, deploy
release: test test-install
	@echo "==> Deploying ISO..."
	@# Move old ISOs to archive
	@mkdir -p archive
	@mv -f archangel-*.iso archive/ 2>/dev/null || true
	@# Copy new ISO to project root
	@cp out/archangel-*.iso .
	@echo "==> Release complete:"
	@ls -lh archangel-*.iso

# Clean build artifacts
clean:
	@echo "==> Cleaning..."
	sudo rm -rf work out profile
	rm -rf vm/*.qcow2
	@echo "==> Clean complete"

# Clean everything including releases
distclean: clean
	rm -rf archive
	rm -f archangel-*.iso