173 lines
5.1 KiB
Makefile
173 lines
5.1 KiB
Makefile
db ?= -cf
|
|
|
|
.PHONY: help
|
|
help:
|
|
@echo "Nothing to see here, go away"
|
|
|
|
# TODO: dockerify
|
|
.PHONY: build
|
|
build: frontend-build backend-build
|
|
|
|
# TODO: dockerify
|
|
#.PHONY: start
|
|
#start: frontend-build
|
|
# $(MAKE) --jobs=2 frontend-watch backend-start
|
|
|
|
# TODO: dockerify
|
|
.PHONY: lint
|
|
lint: frontend-lint backend-lint
|
|
|
|
# TODO: dockerify
|
|
.PHONY: test
|
|
test: frontend-test backend-test i18n-check
|
|
|
|
.PHONY: backend-%
|
|
backend-%: # .stack-work.lock # --stack-work-$*
|
|
$(MAKE) -- --backend-$*-dev
|
|
#( $(MAKE) -- --backend-$* || $(MAKE) -- --stack-krow-$* ) && ( $(MAKE) -- --stack-krow-$* )
|
|
|
|
.PHONY: backend-%-prod # TODO deprecated in favor of bins; remove
|
|
backend-%-prod: # .stack-work.lock # --stack-work-$*
|
|
$(MAKE) -- --backend-$*-prod
|
|
|
|
# TODO: this creates more binaries than just bin/uniworx as side effect! Document or change behaviour?
|
|
bin/uniworx:
|
|
$(MAKE) -- --backend-build-prod
|
|
bin/uniworxdev:
|
|
$(MAKE) -- --backend-build-dev
|
|
|
|
# TODO replace with bin/uniworxdev
|
|
.PHONY: --backend-%-dev
|
|
--backend-%-dev: # .develop.env
|
|
$(MAKE) -- --backend-$* stackopts="--flag uniworx:dev"
|
|
|
|
# TODO deprecated in favor of binary targets
|
|
.PHONY: --backend-%-prod
|
|
--backend-%-prod:
|
|
$(MAKE) -- --backend-$* stackopts="--flag uniworx:-dev"
|
|
|
|
.PHONY: --backend-build
|
|
--backend-build: well-known
|
|
stack build --fast --profile --library-profiling --executable-profiling --flag uniworx:-library-only --copy-bins --local-bin-path $$(pwd)/bin $(stackopts)
|
|
|
|
.PHONY: --backend-lint
|
|
--backend-lint:
|
|
stack build --test --fast --flag uniworx:library-only uniworx:test:hlint $(stackopts)
|
|
|
|
.PHONY: backend-dependencies
|
|
backend-dependencies:
|
|
$(MAKE) -- --backend-dependencies
|
|
|
|
.PHONY: backend-dependencies-prod
|
|
backend-dependencies-prod:
|
|
$(MAKE) -- --backend-dependencies
|
|
|
|
.PHONY: --backend-dependencies
|
|
--backend-dependencies:
|
|
stack build --fast --only-dependencies $(stackopts)
|
|
|
|
.PHONY: --backend-test
|
|
--backend-test:
|
|
stack build --test --coverage --fast --flag uniworx:library-only $(stackopts)
|
|
|
|
.PHONY: i18n-check
|
|
i18n-check:
|
|
./missing-translations.sh
|
|
@echo No missing translations.
|
|
|
|
.PHONY: database
|
|
database: .stack-work.lock # --stack-work-build
|
|
$(MAKE) -- --database
|
|
# ( $(MAKE) -- --database || $(MAKE) -- --stack-krow-build ) && ( $(MAKE) -- --stack-krow-build )
|
|
|
|
# TODO maybe move to database target?
|
|
.PHONY: --database
|
|
--database: .stack-work.lock bin/uniworxdb
|
|
export SERVER_SESSION_ACID_FALLBACK=$${SERVER_SESSION_ACID_FALLBACK:-true}
|
|
export AVSPASS=$${AVSPASS:-nopasswordset}
|
|
stack exec uniworxdb -- $(db)
|
|
|
|
# TODO: same behaviour as bin/uniworx! Merge or tweak targets!
|
|
bin/uniworxdb: .stack-work.lock
|
|
stack build --fast --flag uniworx:-library-only --copy-bins\ --local-bin-path\ $$(pwd)/bin\ --flag\ uniworx:-dev
|
|
|
|
.PHONY: frontend-%
|
|
frontend-%: node_modules well-known
|
|
$(MAKE) -- --frontend-$*
|
|
|
|
.PHONY: --frontend-build
|
|
--frontend-build:
|
|
npx -- webpack --progress $(WATCH)
|
|
|
|
.PHONY: --frontend-watch
|
|
--frontend-watch: WATCH=--watch
|
|
--frontend-watch: --frontend-build
|
|
|
|
.PHONY: --frontend-lint
|
|
--frontend-lint: .eslintrc.json
|
|
npx -- eslint frontend/src $(FIX)
|
|
@echo Hooray! There are no hints.
|
|
|
|
.PHONY: --frontend-test
|
|
--frontend-test: karma.conf.js
|
|
npx -- karma start --conf karma.conf.js $(WATCH)
|
|
|
|
.PHONY: --frontend-test-watch
|
|
--frontend-test-watch: WATCH=--single-run false
|
|
--frontend-test-watch: --frontend-test
|
|
|
|
node_modules: package.json
|
|
npm ci --cache .npm --prefer-offline
|
|
|
|
assets/icons: node_modules
|
|
./utils/renamer.pl node_modules/@fortawesome/fontawesome-free/svgs/solid utils/rename-fa.json assets/icons/fradrive
|
|
./utils/renamer.pl node_modules/@fortawesome/fontawesome-free/svgs/regular utils/rename-fa.json assets/icons/fradrive
|
|
|
|
well-known: node_modules assets/icons well-known/.well-known
|
|
npx webpack --progress
|
|
# mark well-known directory as clean after successful webpack run:
|
|
touch well-known/.well-known
|
|
|
|
well-known/.well-known:
|
|
# no-op target
|
|
|
|
# TODO: remove, as no npmrc is needed anymore
|
|
# .npmrc:
|
|
# @# Using @echo instead of echo to avoid printing secret token to stdout
|
|
# @echo '@fortawesome:registry=https://npm.fontawesome.com/' > .npmrc
|
|
# @echo "//npm.fontawesome.com/:_authToken=$(FONTAWESOME_NPM_AUTH_TOKEN)" >> .npmrc
|
|
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rf node_modules .npm assets/icons well-known
|
|
rm -rf .stack-work .stack-work-build .stack-work-run .stack-work-test .stack-work-doc
|
|
rm -rf bin/
|
|
|
|
%.lock:
|
|
[ -e $@ ] || touch $@
|
|
flock -en $@ true
|
|
|
|
.stack-work.lock:
|
|
[ "${FLOCKER}" != "$0" ] && exec env FLOCKER="$0" flock -en .stack-work.lock "$0" "$@" || :
|
|
|
|
.develop.env:
|
|
[ ! -z "$(CI)" -o ! -z "$$PORT_OFFSET" ] || ( echo "Not in develop!" 2>&1 ; exit 1 )
|
|
|
|
# .PHONY: --stack-work-%
|
|
# --stack-work-%: .stack-work.lock
|
|
# [[ -d .stack-work && -d .stack-work-$* ]] && (echo ".stack-work collides with .stack-work-$*, please resolve manually" 1>&2; exit 1) || :
|
|
# [[ ! -d .stack-work-$* ]] || mv .stack-work-$* .stack-work
|
|
#
|
|
# .PHONY: --stack-krow-%
|
|
# --stack-krow-%:
|
|
# [[ ! -d .stack-work-$* ]] || ( echo ".stack-work-$* already exists, please resolve manually" 1>&2 ; exit 1 )
|
|
# mv .stack-work .stack-work-$*
|
|
# flock -u .stack-work.lock true
|
|
|
|
# watch:
|
|
# while true; do \
|
|
#
|
|
# start: frontend-build frontend-build-watch yesod-start
|
|
# run-s frontend:build --parallel "frontend:build:watch" "yesod:start"
|