# Makefile for building sketch with embedded assets
#
# Two-layer architecture:
# 1. Linux binary ("innie") - runs in container, embeds webui assets
# 2. Native binary ("outie") - runs on user's machine, embeds innie

# Allow overriding some env vars, used by GoReleaser
BUILT_BY ?= make
SKETCH_VERSION ?=
GOOS ?= $(shell go env GOOS)
GOARCH ?= $(shell go env GOARCH)

export BUILT_BY
export SKETCH_VERSION
export GOOS
export GOARCH
export LDFLAGS := -X main.builtBy=$(BUILT_BY) -X main.release=$(SKETCH_VERSION)

.PHONY: all clean outie innie webui

all: outie

outie: innie
	./build/outie.sh

innie: webui
	./build/innie.sh

webui:
	./build/webui.sh

clean:
	./build/clean.sh



# DODO

repo_name ?= giolekva
podman ?= docker
docker_flags=--provenance=false --sbom=false
ifeq ($(podman), podman)
manifest_dest=docker://docker.io/$(repo_name)/sketch:latest
endif

clean:
	rm -f sketch

build_arm64: export CGO_ENABLED=0
build_arm64: export GO111MODULE=on
build_arm64: export GOOS=linux
build_arm64: export GOARCH=arm64
build_arm64:
	go build -o sketch_arm64 cmd/sketch/*.go

build_amd64: export CGO_ENABLED=0
build_amd64: export GO111MODULE=on
build_amd64: export GOOS=linux
build_amd64: export GOARCH=amd64
build_amd64:
	go build -o sketch_amd64 cmd/sketch/*.go

push_arm64: clean build_arm64
	$(podman) build --platform linux/arm64 --tag=$(repo_name)/sketch:arm64 $(docker_flags) .
	$(podman) push $(repo_name)/sketch:arm64

push_amd64: clean build_amd64
	$(podman) build --platform linux/amd64 --tag=$(repo_name)/sketch:amd64 $(docker_flags) .
	$(podman) push $(repo_name)/sketch:amd64

push: push_arm64 push_amd64
	$(podman) manifest create $(repo_name)/sketch:latest $(repo_name)/sketch:arm64 $(repo_name)/sketch:amd64
	$(podman) manifest push --purge $(repo_name)/sketch:latest $(manifest_dest)
