2021-08-06 08:57:50 +02:00
|
|
|
.PHONY: all build dev npm dep dep-go dep-js dep-list dep-tensorflow dep-upgrade dep-upgrade-js \
|
2021-08-14 18:18:25 +02:00
|
|
|
test test-js test-go install generate fmt fmt-go fmt-js upgrade start stop \
|
2021-08-06 08:57:50 +02:00
|
|
|
terminal root-terminal packer-digitalocean acceptance clean tidy;
|
2020-08-18 00:45:53 +02:00
|
|
|
.SILENT: ; # no need for @
|
|
|
|
.ONESHELL: ; # recipes execute in same shell
|
|
|
|
.NOTPARALLEL: ; # wait for target to finish
|
|
|
|
.EXPORT_ALL_VARIABLES: ; # send all vars to shell
|
|
|
|
|
2018-09-05 20:26:03 +02:00
|
|
|
export GO111MODULE=on
|
2020-08-18 00:45:53 +02:00
|
|
|
|
2018-10-31 07:14:33 +01:00
|
|
|
GOIMPORTS=goimports
|
2018-09-05 20:26:03 +02:00
|
|
|
BINARY_NAME=photoprism
|
|
|
|
|
2021-02-14 19:15:29 +01:00
|
|
|
DOCKER_TAG := $(shell date -u +%Y%m%d)
|
|
|
|
UID := $(shell id -u)
|
2019-06-03 16:31:15 +02:00
|
|
|
HASRICHGO := $(shell which richgo)
|
2020-08-18 00:45:53 +02:00
|
|
|
|
2019-06-03 16:31:15 +02:00
|
|
|
ifdef HASRICHGO
|
|
|
|
GOTEST=richgo test
|
|
|
|
else
|
|
|
|
GOTEST=go test
|
|
|
|
endif
|
|
|
|
|
2019-05-09 06:18:22 +02:00
|
|
|
all: dep build
|
|
|
|
dep: dep-tensorflow dep-js dep-go
|
2020-01-13 11:08:50 +01:00
|
|
|
build: generate build-js build-go
|
2019-06-05 18:25:20 +02:00
|
|
|
install: install-bin install-assets
|
2020-05-23 20:58:58 +02:00
|
|
|
test: test-js test-go
|
|
|
|
test-go: reset-test-db run-test-go
|
2021-04-19 12:24:14 +02:00
|
|
|
test-api: reset-test-db run-test-api
|
2020-05-23 20:58:58 +02:00
|
|
|
test-short: reset-test-db run-test-short
|
2021-08-13 21:21:03 +02:00
|
|
|
acceptance-private-run-chromium: acceptance-private-restart acceptance-private acceptance-private-stop
|
|
|
|
acceptance-public-run-chromium: acceptance-restart acceptance acceptance-stop
|
|
|
|
acceptance-private-run-firefox: acceptance-private-restart acceptance-private-firefox acceptance-private-stop
|
|
|
|
acceptance-public-run-firefox: acceptance-restart acceptance-firefox acceptance-stop
|
|
|
|
acceptance-run-chromium: acceptance-private-restart acceptance-private acceptance-private-stop acceptance-restart acceptance acceptance-stop
|
|
|
|
acceptance-run-firefox: acceptance-private-restart acceptance-private-firefox acceptance-private-stop acceptance-restart acceptance-firefox acceptance-stop
|
2021-01-15 17:08:33 +01:00
|
|
|
test-all: test acceptance-run-chromium
|
2021-08-14 18:18:25 +02:00
|
|
|
fmt: fmt-js fmt-go
|
2020-01-12 15:39:45 +01:00
|
|
|
upgrade: dep-upgrade-js dep-upgrade
|
2021-01-07 18:51:56 +01:00
|
|
|
clean-local: clean-local-config clean-local-cache
|
2020-01-04 10:10:55 +01:00
|
|
|
clean-install: clean-local dep build-js install-bin install-assets
|
2021-08-05 11:09:26 +02:00
|
|
|
dev: dev-npm dev-go-amd64
|
|
|
|
dev-npm:
|
|
|
|
$(info Upgrading NPM in local dev environment...)
|
|
|
|
sudo npm update -g npm
|
|
|
|
dev-go-amd64:
|
|
|
|
$(info Installing Go in local AMD64 dev environment...)
|
|
|
|
sudo docker/scripts/install-go.sh amd64
|
|
|
|
go build -v ./...
|
2020-06-05 18:04:37 +02:00
|
|
|
acceptance-restart:
|
|
|
|
cp -f storage/acceptance/backup.db storage/acceptance/index.db
|
2020-12-17 18:26:58 +01:00
|
|
|
cp -f storage/acceptance/config/settingsBackup.yml storage/acceptance/config/settings.yml
|
2021-02-17 15:51:21 +01:00
|
|
|
rm -rf storage/acceptance/sidecar/2020
|
|
|
|
rm -rf storage/acceptance/sidecar/2011
|
2020-06-05 18:04:37 +02:00
|
|
|
rm -rf storage/acceptance/originals/2010
|
2021-02-07 13:10:46 +01:00
|
|
|
rm -rf storage/acceptance/originals/2020
|
|
|
|
rm -rf storage/acceptance/originals/2011
|
2020-06-05 18:04:37 +02:00
|
|
|
rm -rf storage/acceptance/originals/2013
|
2020-10-20 18:10:38 +02:00
|
|
|
rm -rf storage/acceptance/originals/2017
|
2021-02-17 15:51:21 +01:00
|
|
|
go run cmd/photoprism/photoprism.go --public --upload-nsfw=false --database-driver sqlite --database-dsn ./storage/acceptance/index.db --import-path ./storage/acceptance/import --http-port=2343 --config-path ./storage/acceptance/config --originals-path ./storage/acceptance/originals --storage-path ./storage/acceptance --test --backup-path ./storage/acceptance/backup --disable-backups start -d
|
2021-02-07 13:10:46 +01:00
|
|
|
acceptance-stop:
|
2021-02-17 15:51:21 +01:00
|
|
|
go run cmd/photoprism/photoprism.go --public --upload-nsfw=false --database-driver sqlite --database-dsn ./storage/acceptance/index.db --import-path ./storage/acceptance/import --http-port=2343 --config-path ./storage/acceptance/config --originals-path ./storage/acceptance/originals --storage-path ./storage/acceptance --test --backup-path ./storage/acceptance/backup --disable-backups stop
|
2021-08-13 21:21:03 +02:00
|
|
|
acceptance-private-restart:
|
|
|
|
cp -f storage/acceptance/backup.db storage/acceptance/index.db
|
|
|
|
cp -f storage/acceptance/config/settingsBackup.yml storage/acceptance/config/settings.yml
|
|
|
|
go run cmd/photoprism/photoprism.go --public=false --upload-nsfw=false --database-driver sqlite --database-dsn ./storage/acceptance/index.db --import-path ./storage/acceptance/import --http-port=2343 --config-path ./storage/acceptance/config --originals-path ./storage/acceptance/originals --storage-path ./storage/acceptance --test --backup-path ./storage/acceptance/backup --disable-backups start -d
|
|
|
|
acceptance-private-stop:
|
|
|
|
go run cmd/photoprism/photoprism.go --public=false --upload-nsfw=false --database-driver sqlite --database-dsn ./storage/acceptance/index.db --import-path ./storage/acceptance/import --http-port=2343 --config-path ./storage/acceptance/config --originals-path ./storage/acceptance/originals --storage-path ./storage/acceptance --test --backup-path ./storage/acceptance/backup --disable-backups stop
|
2019-05-09 06:18:22 +02:00
|
|
|
start:
|
2019-06-30 05:38:39 +02:00
|
|
|
go run cmd/photoprism/photoprism.go start -d
|
|
|
|
stop:
|
|
|
|
go run cmd/photoprism/photoprism.go stop
|
2019-09-19 18:22:44 +02:00
|
|
|
terminal:
|
2021-01-15 15:02:06 +01:00
|
|
|
docker-compose exec -u $(UID) photoprism bash
|
2020-10-08 08:52:03 +02:00
|
|
|
root-terminal:
|
|
|
|
docker-compose exec -u root photoprism bash
|
2019-05-09 06:18:22 +02:00
|
|
|
migrate:
|
|
|
|
go run cmd/photoprism/photoprism.go migrate
|
2020-01-13 11:08:50 +01:00
|
|
|
generate:
|
|
|
|
go generate ./pkg/... ./internal/...
|
|
|
|
go fmt ./pkg/... ./internal/...
|
2018-09-14 12:44:15 +02:00
|
|
|
install-bin:
|
2019-06-29 19:34:55 +02:00
|
|
|
scripts/build.sh prod ~/.local/bin/$(BINARY_NAME)
|
2018-09-14 12:44:15 +02:00
|
|
|
install-assets:
|
2019-12-30 20:10:03 +01:00
|
|
|
$(info Installing assets)
|
2020-12-18 09:11:42 +01:00
|
|
|
mkdir -p ~/.photoprism/storage/config
|
2020-05-31 02:09:52 +02:00
|
|
|
mkdir -p ~/.photoprism/storage/cache
|
|
|
|
mkdir -p ~/.photoprism/storage
|
|
|
|
mkdir -p ~/.photoprism/assets
|
2019-06-29 19:34:55 +02:00
|
|
|
mkdir -p ~/Pictures/Originals
|
|
|
|
mkdir -p ~/Pictures/Import
|
2021-07-16 12:16:56 +02:00
|
|
|
cp -r assets/locales assets/facenet assets/nasnet assets/nsfw assets/profiles assets/static assets/templates ~/.photoprism/assets
|
2020-05-31 02:09:52 +02:00
|
|
|
find ~/.photoprism/assets -name '.*' -type f -delete
|
|
|
|
clean-local-assets:
|
|
|
|
rm -rf ~/.photoprism/assets/*
|
2020-01-04 10:10:55 +01:00
|
|
|
clean-local-cache:
|
2020-05-31 02:09:52 +02:00
|
|
|
rm -rf ~/.photoprism/storage/cache/*
|
2020-01-04 10:10:55 +01:00
|
|
|
clean-local-config:
|
2020-12-18 09:11:42 +01:00
|
|
|
rm -f ~/.photoprism/storage/config/*
|
2020-08-19 12:01:54 +02:00
|
|
|
dep-list:
|
|
|
|
go list -u -m -json all | go-mod-outdated -direct
|
2019-05-09 06:18:22 +02:00
|
|
|
dep-js:
|
2021-06-02 11:04:31 +02:00
|
|
|
(cd frontend && npm install --silent --legacy-peer-deps)
|
2019-05-09 06:18:22 +02:00
|
|
|
dep-go:
|
|
|
|
go build -v ./...
|
2020-01-12 15:39:45 +01:00
|
|
|
dep-upgrade:
|
|
|
|
go get -u -t ./...
|
|
|
|
dep-upgrade-js:
|
2020-11-02 00:30:26 +01:00
|
|
|
(cd frontend && npm --depth 3 update --legacy-peer-deps)
|
2019-05-09 06:18:22 +02:00
|
|
|
dep-tensorflow:
|
2021-07-16 12:16:56 +02:00
|
|
|
scripts/download-facenet.sh
|
2019-05-09 06:18:22 +02:00
|
|
|
scripts/download-nasnet.sh
|
2019-12-14 15:41:37 +01:00
|
|
|
scripts/download-nsfw.sh
|
2021-07-16 15:17:27 +02:00
|
|
|
zip-facenet:
|
|
|
|
(cd assets && zip -r facenet.zip facenet -x "*/.*" -x "*/version.txt")
|
2019-05-16 08:41:16 +02:00
|
|
|
zip-nasnet:
|
2020-05-31 02:09:52 +02:00
|
|
|
(cd assets && zip -r nasnet.zip nasnet -x "*/.*" -x "*/version.txt")
|
2019-12-14 15:41:37 +01:00
|
|
|
zip-nsfw:
|
2020-05-31 02:09:52 +02:00
|
|
|
(cd assets && zip -r nsfw.zip nsfw -x "*/.*" -x "*/version.txt")
|
2019-05-07 17:02:15 +02:00
|
|
|
build-js:
|
|
|
|
(cd frontend && env NODE_ENV=production npm run build)
|
2019-05-09 06:18:22 +02:00
|
|
|
build-go:
|
2019-06-09 04:37:02 +02:00
|
|
|
rm -f $(BINARY_NAME)
|
2019-05-09 06:18:22 +02:00
|
|
|
scripts/build.sh debug $(BINARY_NAME)
|
2020-05-28 21:20:42 +02:00
|
|
|
build-race:
|
|
|
|
rm -f $(BINARY_NAME)
|
|
|
|
scripts/build.sh race $(BINARY_NAME)
|
2019-06-22 23:14:30 +02:00
|
|
|
build-static:
|
|
|
|
rm -f $(BINARY_NAME)
|
|
|
|
scripts/build.sh static $(BINARY_NAME)
|
2020-04-28 11:51:42 +02:00
|
|
|
build-tensorflow:
|
|
|
|
docker build -t photoprism/tensorflow:build docker/tensorflow
|
|
|
|
docker run -ti photoprism/tensorflow:build bash
|
|
|
|
build-tensorflow-arm64:
|
|
|
|
docker build -t photoprism/tensorflow:arm64 docker/tensorflow/arm64
|
|
|
|
docker run -ti photoprism/tensorflow:arm64 bash
|
2019-05-21 02:27:08 +02:00
|
|
|
watch-js:
|
2019-06-07 00:04:34 +02:00
|
|
|
(cd frontend && env NODE_ENV=development npm run watch)
|
2019-05-07 15:41:33 +02:00
|
|
|
test-js:
|
2019-06-03 23:55:01 +02:00
|
|
|
$(info Running JS unit tests...)
|
2020-05-31 12:52:41 +02:00
|
|
|
(cd frontend && env NODE_ENV=development BABEL_ENV=test npm run test)
|
2019-12-05 03:58:54 +01:00
|
|
|
acceptance:
|
2019-06-03 23:55:01 +02:00
|
|
|
$(info Running JS acceptance tests in Chrome...)
|
2020-06-05 18:04:37 +02:00
|
|
|
(cd frontend && npm run acceptance && cd ..)
|
2019-12-05 03:58:54 +01:00
|
|
|
acceptance-firefox:
|
2019-06-03 23:55:01 +02:00
|
|
|
$(info Running JS acceptance tests in Firefox...)
|
2020-06-05 18:04:37 +02:00
|
|
|
(cd frontend && npm run acceptance-firefox && cd ..)
|
2021-08-13 21:21:03 +02:00
|
|
|
acceptance-private:
|
|
|
|
$(info Running JS acceptance-private tests in Chrome...)
|
|
|
|
(cd frontend && npm run acceptance-private && cd ..)
|
|
|
|
acceptance-private-firefox:
|
|
|
|
$(info Running JS acceptance-private tests in Firefox...)
|
|
|
|
(cd frontend && npm run acceptance-private-firefox && cd ..)
|
2020-06-27 14:15:25 +02:00
|
|
|
reset-photoprism-db:
|
|
|
|
$(info Purging photoprism database...)
|
|
|
|
mysql < scripts/reset-photoprism-db.sql
|
2020-05-09 11:00:22 +02:00
|
|
|
reset-test-db:
|
2020-05-30 14:52:47 +02:00
|
|
|
$(info Purging test databases...)
|
2020-05-09 11:00:22 +02:00
|
|
|
mysql < scripts/reset-test-db.sql
|
2020-05-30 14:52:47 +02:00
|
|
|
find ./internal -type f -name '.test.*' -delete
|
2020-05-23 20:58:58 +02:00
|
|
|
run-test-short:
|
|
|
|
$(info Running short Go unit tests in parallel mode...)
|
|
|
|
$(GOTEST) -parallel 2 -count 1 -cpu 2 -short -timeout 5m ./pkg/... ./internal/...
|
|
|
|
run-test-go:
|
2019-06-03 23:55:01 +02:00
|
|
|
$(info Running all Go unit tests...)
|
2020-04-08 13:24:06 +02:00
|
|
|
$(GOTEST) -parallel 1 -count 1 -cpu 1 -tags slow -timeout 20m ./pkg/... ./internal/...
|
2021-04-19 12:24:14 +02:00
|
|
|
run-test-api:
|
|
|
|
$(info Running all API unit tests...)
|
|
|
|
$(GOTEST) -parallel 2 -count 1 -cpu 2 -tags slow -timeout 20m ./internal/api/...
|
2020-04-30 16:43:08 +02:00
|
|
|
test-parallel:
|
|
|
|
$(info Running all Go unit tests in parallel mode...)
|
|
|
|
$(GOTEST) -parallel 2 -count 1 -cpu 2 -tags slow -timeout 20m ./pkg/... ./internal/...
|
2019-06-04 18:26:35 +02:00
|
|
|
test-verbose:
|
2019-06-03 23:55:01 +02:00
|
|
|
$(info Running all Go unit tests in verbose mode...)
|
2020-04-08 13:24:06 +02:00
|
|
|
$(GOTEST) -parallel 1 -count 1 -cpu 1 -tags slow -timeout 20m -v ./pkg/... ./internal/...
|
2018-11-06 16:17:49 +01:00
|
|
|
test-race:
|
2019-06-03 23:55:01 +02:00
|
|
|
$(info Running all Go unit tests with race detection in verbose mode...)
|
2020-04-08 13:24:06 +02:00
|
|
|
$(GOTEST) -tags slow -race -timeout 60m -v ./pkg/... ./internal/...
|
2018-11-06 16:47:17 +01:00
|
|
|
test-codecov:
|
2019-06-03 23:55:01 +02:00
|
|
|
$(info Running all Go unit tests with code coverage report for codecov...)
|
2020-04-30 17:00:05 +02:00
|
|
|
go test -parallel 1 -count 1 -cpu 1 -failfast -tags slow -timeout 30m -coverprofile coverage.txt -covermode atomic ./pkg/... ./internal/...
|
2020-08-19 08:26:35 +02:00
|
|
|
scripts/codecov.sh -t $(CODECOV_TOKEN)
|
2018-11-06 16:47:17 +01:00
|
|
|
test-coverage:
|
2019-06-03 23:55:01 +02:00
|
|
|
$(info Running all Go unit tests with code coverage report...)
|
2020-04-30 17:00:05 +02:00
|
|
|
go test -parallel 1 -count 1 -cpu 1 -failfast -tags slow -timeout 30m -coverprofile coverage.txt -covermode atomic ./pkg/... ./internal/...
|
2018-11-14 23:55:23 +01:00
|
|
|
go tool cover -html=coverage.txt -o coverage.html
|
2018-09-05 20:26:03 +02:00
|
|
|
clean:
|
|
|
|
rm -f $(BINARY_NAME)
|
2019-05-07 16:16:39 +02:00
|
|
|
rm -f *.log
|
|
|
|
rm -rf node_modules
|
2020-05-31 02:09:52 +02:00
|
|
|
rm -rf storage/testdata
|
2020-12-04 11:02:19 +01:00
|
|
|
rm -rf storage/backup
|
2020-05-31 02:09:52 +02:00
|
|
|
rm -rf storage/cache
|
2019-05-07 16:16:39 +02:00
|
|
|
rm -rf frontend/node_modules
|
2019-05-04 00:53:02 +02:00
|
|
|
docker-development:
|
2021-07-15 16:26:21 +02:00
|
|
|
scripts/install-qemu.sh
|
2021-06-02 11:04:31 +02:00
|
|
|
docker pull --platform=amd64 ubuntu:21.04
|
|
|
|
docker pull --platform=arm64 ubuntu:21.04
|
|
|
|
docker pull --platform=arm ubuntu:21.04
|
|
|
|
scripts/docker-buildx.sh development linux/amd64,linux/arm64,linux/arm $(DOCKER_TAG)
|
|
|
|
docker-preview:
|
2021-07-08 18:39:13 +02:00
|
|
|
scripts/docker-buildx.sh photoprism linux/amd64,linux/arm64,linux/arm
|
2021-06-02 11:04:31 +02:00
|
|
|
docker-release:
|
|
|
|
scripts/docker-buildx.sh photoprism linux/amd64,linux/arm64,linux/arm $(DOCKER_TAG)
|
|
|
|
docker-local:
|
2020-12-26 17:02:15 +01:00
|
|
|
scripts/docker-build.sh photoprism
|
2021-06-02 11:04:31 +02:00
|
|
|
docker-pull:
|
2020-10-13 22:46:20 +02:00
|
|
|
docker pull photoprism/photoprism:latest
|
2019-05-04 00:53:02 +02:00
|
|
|
docker-demo:
|
2018-12-11 02:00:30 +01:00
|
|
|
scripts/docker-build.sh demo $(DOCKER_TAG)
|
|
|
|
scripts/docker-push.sh demo $(DOCKER_TAG)
|
2020-12-11 23:08:49 +01:00
|
|
|
docker-demo-local:
|
|
|
|
scripts/docker-build.sh photoprism
|
2020-12-26 17:02:15 +01:00
|
|
|
scripts/docker-build.sh demo $(DOCKER_TAG)
|
|
|
|
scripts/docker-push.sh demo $(DOCKER_TAG)
|
2020-03-27 11:01:41 +01:00
|
|
|
docker-webdav:
|
2021-06-02 12:25:35 +02:00
|
|
|
docker pull --platform=amd64 golang:1
|
|
|
|
docker pull --platform=arm64 golang:1
|
|
|
|
docker pull --platform=arm golang:1
|
|
|
|
scripts/docker-buildx.sh webdav linux/amd64,linux/arm64,linux/arm $(DOCKER_TAG)
|
2021-08-06 08:57:50 +02:00
|
|
|
packer-digitalocean:
|
|
|
|
$(info Buildinng DigitalOcean marketplace image...)
|
|
|
|
(cd ./docker/examples/cloud && packer build digitalocean.json)
|
2019-05-09 06:18:22 +02:00
|
|
|
lint-js:
|
|
|
|
(cd frontend && npm run lint)
|
|
|
|
fmt-js:
|
|
|
|
(cd frontend && npm run fmt)
|
2020-01-17 01:37:06 +01:00
|
|
|
fmt-go:
|
2020-01-12 14:00:56 +01:00
|
|
|
go fmt ./pkg/... ./internal/... ./cmd/...
|
2021-08-14 18:18:25 +02:00
|
|
|
goimports -w pkg internal cmd
|
2019-04-26 02:22:53 +02:00
|
|
|
tidy:
|
|
|
|
go mod tidy
|