GOESBUILD ?= off ifeq ($(GOESBUILD), on) ESBUILD := esbuild else ESBUILD := npx esbuild endif GOBINARY ?= go VERSION ?= $(shell git describe --exact-match HEAD 2> /dev/null || echo vgit) VERSION := $(shell echo $(VERSION) | sed 's/v//g') COMMIT ?= $(shell git rev-parse --short HEAD || echo unknown) UPDATER ?= off BUILDFLAGS := -X main.version=$(VERSION) -X main.commit=$(COMMIT) ifeq ($(UPDATER), on) BUILDFLAGS := $(BUILDFLAGS) -X main.updater=binary else ifneq ($(UPDATER), off) BUILDFLAGS := $(BUILDFLAGS) -X main.updater=$(UPDATER) endif npm: $(info installing npm dependencies) npm install @if [ "$(GOESBUILD)" = "off" ]; then\ npm install esbuild;\ else\ go get -u github.com/evanw/esbuild/cmd/esbuild;\ fi configuration: $(info Fixing config-base) -mkdir -p data python3 scripts/enumerate_config.py -i config/config-base.json -o data/config-base.json $(info Generating config-default.ini) python3 scripts/generate_ini.py -i config/config-base.json -o data/config-default.ini email: $(info Generating email html) python3 scripts/compile_mjml.py -o data/ typescript: $(info compiling typescript) -mkdir -p data/web/js -$(ESBUILD) --bundle ts/admin.ts --outfile=./data/web/js/admin.js --minify -$(ESBUILD) --bundle ts/form.ts --outfile=./data/web/js/form.js --minify -$(ESBUILD) --bundle ts/setup.ts --outfile=./data/web/js/setup.js --minify ts-debug: $(info compiling typescript w/ sourcemaps) -mkdir -p data/web/js -$(ESBUILD) --bundle ts/admin.ts --sourcemap --outfile=./data/web/js/admin.js -$(ESBUILD) --bundle ts/form.ts --sourcemap --outfile=./data/web/js/form.js -$(ESBUILD) --bundle ts/setup.ts --sourcemap --outfile=./data/web/js/setup.js -rm -r data/web/js/ts $(info copying typescript) cp -r ts data/web/js swagger: $(GOBINARY) get github.com/swaggo/swag/cmd/swag swag init -g main.go compile: $(info Downloading deps) $(GOBINARY) mod download $(info Building) mkdir -p build cd build && CGO_ENABLED=0 $(GOBINARY) build -ldflags="-s -w $(BUILDFLAGS)" -o ./jfa-go ../*.go compile-debug: $(info Downloading deps) $(GOBINARY) mod download $(info Building) mkdir -p build cd build && CGO_ENABLED=0 $(GOBINARY) build -ldflags "$(BUILDFLAGS)" -o ./jfa-go ../*.go compress: upx --lzma build/jfa-go bundle-css: -mkdir -p data/web/css $(info bundling css) $(ESBUILD) --bundle css/base.css --outfile=data/web/css/bundle.css --external:remixicon.css --minify copy: $(info copying fonts) cp -r node_modules/remixicon/fonts/remixicon.css node_modules/remixicon/fonts/remixicon.woff2 data/web/css/ $(info copying html) cp -r html data/ $(info copying static data) -mkdir -p data/web cp -r static/* data/web/ $(info copying language files) cp -r lang data/ cp LICENSE data/ internal-files: python3 scripts/embed.py internal external-files: python3 scripts/embed.py external -mkdir -p build $(info copying internal data into build/) cp -r data build/ install: cp -r build $(DESTDIR)/jfa-go all: configuration npm email typescript bundle-css swagger copy internal-files compile all-external: configuration npm email typescript bundle-css swagger copy external-files compile debug: configuration npm email ts-debug bundle-css swagger copy external-files compile-debug