mirror of
https://github.com/hrfee/jfa-go.git
synced 2024-12-22 17:10:10 +00:00
Harvey Tindall
9874dce520
a17t v0.10 became a tailwind plugin rather than standalone css, and made some other changes. Much of the original custom CSS now uses tailwind classes, and there have been some other UI changes.
178 lines
4.5 KiB
Makefile
178 lines
4.5 KiB
Makefile
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
|
|
LDFLAGS := -X main.version=$(VERSION) -X main.commit=$(COMMIT)
|
|
ifeq ($(UPDATER), on)
|
|
LDFLAGS := $(LDFLAGS) -X main.updater=binary
|
|
else ifneq ($(UPDATER), off)
|
|
LDFLAGS := $(LDFLAGS) -X main.updater=$(UPDATER)
|
|
endif
|
|
|
|
|
|
|
|
INTERNAL ?= on
|
|
TRAY ?= off
|
|
E2EE ?= off
|
|
TAGS := -tags "
|
|
|
|
ifeq ($(INTERNAL), on)
|
|
DATA := data
|
|
else
|
|
DATA := build/data
|
|
TAGS := $(TAGS) external
|
|
endif
|
|
|
|
ifeq ($(TRAY), on)
|
|
TAGS := $(TAGS) tray
|
|
endif
|
|
|
|
ifeq ($(E2EE), on)
|
|
TAGS := $(TAGS) e2ee
|
|
endif
|
|
|
|
TAGS := $(TAGS)"
|
|
|
|
OS := $(shell go env GOOS)
|
|
ifeq ($(TRAY)$(OS), onwindows)
|
|
LDFLAGS := $(LDFLAGS) -H=windowsgui
|
|
endif
|
|
|
|
DEBUG ?= off
|
|
ifeq ($(DEBUG), on)
|
|
SOURCEMAP := --sourcemap
|
|
TYPECHECK := tsc -noEmit --project ts/tsconfig.json
|
|
# jank
|
|
COPYTS := rm -r $(DATA)/web/js/ts; cp -r tempts $(DATA)/web/js/ts
|
|
UNCSS := cp $(DATA)/web/css/bundle.css $(DATA)/bundle.css
|
|
TAILWIND := --content ""
|
|
else
|
|
LDFLAGS := -s -w $(LDFLAGS)
|
|
SOURCEMAP :=
|
|
COPYTS :=
|
|
TYPECHECK :=
|
|
UNCSS := npx tailwindcss -i $(DATA)/web/css/bundle.css -o $(DATA)/bundle.css --content "html/crash.html"
|
|
# UNCSS := npx uncss $(DATA)/crash.html --csspath web/css --output $(DATA)/bundle.css
|
|
TAILWIND :=
|
|
endif
|
|
|
|
RACE ?= off
|
|
ifeq ($(RACE), on)
|
|
RACEDETECTOR := -race
|
|
else
|
|
RACEDETECTOR :=
|
|
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:
|
|
$(TYPECHECK)
|
|
$(adding dark variants to typescript)
|
|
-rm -r tempts
|
|
cp -r ts tempts
|
|
scripts/dark-variant.sh tempts
|
|
scripts/dark-variant.sh tempts/modules
|
|
$(info compiling typescript)
|
|
-mkdir -p $(DATA)/web/js
|
|
-$(ESBUILD) --bundle tempts/admin.ts $(SOURCEMAP) --outfile=./$(DATA)/web/js/admin.js --minify
|
|
-$(ESBUILD) --bundle tempts/pwr.ts $(SOURCEMAP) --outfile=./$(DATA)/web/js/pwr.js --minify
|
|
-$(ESBUILD) --bundle tempts/form.ts $(SOURCEMAP) --outfile=./$(DATA)/web/js/form.js --minify
|
|
-$(ESBUILD) --bundle tempts/setup.ts $(SOURCEMAP) --outfile=./$(DATA)/web/js/setup.js --minify
|
|
-$(ESBUILD) --bundle tempts/crash.ts --outfile=./$(DATA)/crash.js --minify
|
|
$(COPYTS)
|
|
|
|
swagger:
|
|
$(GOBINARY) install github.com/swaggo/swag/cmd/swag
|
|
swag init -g main.go
|
|
|
|
compile:
|
|
$(info Downloading deps)
|
|
$(GOBINARY) mod download
|
|
$(info Building)
|
|
mkdir -p build
|
|
$(GOBINARY) build $(RACEDETECTOR) -ldflags="$(LDFLAGS)" $(TAGS) -o build/jfa-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
|
|
npx tailwindcss -i $(DATA)/web/css/bundle.css -o $(DATA)/web/css/bundle.css $(TAILWIND)
|
|
# npx postcss -o $(DATA)/web/css/bundle.css $(DATA)/web/css/bundle.css
|
|
|
|
inline:
|
|
cp html/crash.html $(DATA)/crash.html
|
|
$(UNCSS)
|
|
node scripts/inline.js root $(DATA) $(DATA)/crash.html $(DATA)/crash.html
|
|
rm $(DATA)/bundle.css
|
|
|
|
variants-html:
|
|
$(info copying html)
|
|
cp -r html $(DATA)/
|
|
$(info adding dark variants to html)
|
|
node scripts/missing-colors.js html $(DATA)/html
|
|
|
|
copy:
|
|
$(info copying fonts)
|
|
cp -r node_modules/remixicon/fonts/remixicon.css node_modules/remixicon/fonts/remixicon.woff2 $(DATA)/web/css/
|
|
$(info copying crash page)
|
|
mv $(DATA)/crash.html $(DATA)/html/
|
|
$(info copying static data)
|
|
-mkdir -p $(DATA)/web
|
|
cp -r static/* $(DATA)/web/
|
|
$(info copying systemd service)
|
|
cp jfa-go.service $(DATA)/
|
|
$(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
|
|
|
|
clean:
|
|
-rm -r $(DATA)
|
|
-rm -r build
|
|
-rm mail/*.html
|
|
-rm docs/docs.go docs/swagger.json docs/swagger.yaml
|
|
go clean
|
|
|
|
all: configuration npm email typescript variants-html bundle-css inline swagger copy compile
|