APP_PROJECT_NAMES=Api Org Blogs APP_PROJECTS=src/Yavsc.Org/Yavsc.Org.csproj src/Yavsc.Api/Yavsc.Api.csproj SLNDIR=.. DESTDIR=/srv/www/yavsc USER_AND_GROUP=yavsc:yavsc CONFIGURATION=Release DOTNET_FRAMEWORK=net10.0 include $(SLNDIR)/.env include .env generated/: @mkdir -p $@ generated/Api.service: generated/Org.service: generated/Blogs.service: generated/yavsc%.service: generated/ template.service $(SLNDIR)/.env @cat template.service | APP_NAME="$*" \ HTTP_HOST="$(HTTP_HOST)" \ HTTP_PORT="$*_$(HTTP_PORT)" \ DESTDIR="$(DESTDIR)" \ APP_SYSLOG_ID="yavsc$*" \ POSTGRES_HOST="$(POSTGRES_HOST)" \ POSTGRES_PORT="$(POSTGRES_PORT)" \ POSTGRES_DB="$(POSTGRES_DB)" \ POSTGRES_USER="$(POSTGRES_USER)" \ POSTGRES_PASSWORD="$(POSTGRES_PASSWORD)" \ ANTHROPIC_API_KEY="$(ANTHROPIC_API_KEY)" \ ANTHROPIC_MAX_TOKENS="$(ANTHROPIC_MAX_TOKENS)" \ envsubst > $@ @echo Created service file: $@ copy-services: copy-service-Org copy-service-Api copy-service-Blogs copy-service-Org: /etc/systemd/system/yavscOrg.service copy-service-Api: /etc/systemd/system/yavscApi.service copy-service-Blogs: /etc/systemd/system/yavscBlogs.service copy-binaries: build_publish_Org build_publish_Api build_publish_Blogs stop-services for project in $(APP_PROJECT_NAMES); do LCAPI=$$(echo $${project}|tr [:upper:] [:lower:]) ; \ mv $(SLNDIR)/src/Yavsc.$${project}/bin/$(CONFIGURATION)/$(DOTNET_FRAMEWORK)/publish/appsettings-$${LCAPI}.json \ $(SLNDIR)/src/Yavsc.$${project}/bin/$(CONFIGURATION)/$(DOTNET_FRAMEWORK)/publish/appsettings-$${LCAPI}-dist.json ;\ sudo cp -a $(SLNDIR)/src/Yavsc.$${project}/bin/$(CONFIGURATION)/$(DOTNET_FRAMEWORK)/publish/* $(DESTDIR) ; \ done sudo chown -R $(USER_AND_GROUP) $(DESTDIR) /etc/systemd/system/yavsc%.service: generated/yavsc%.service sudo cp $^ $@ sudo chown root:root $@ build_publish_%: ASPNETCORE_ENV=$(CONFIGURATION) dotnet publish $(SLNDIR)/src/Yavsc.$*/Yavsc.$*.csproj install: build_publish copy-binaries copy-services sudo systemctl daemon-reload for project in $(APP_PROJECT_NAMES); \ do \ sudo systemctl enable yavsc$${project} ; \ sudo systemctl start yavsc$${project} ; \ done reinstall: copy-binaries for project in $(APP_PROJECT_NAMES); do \ sudo systemctl start yavsc$${project} ; done stop-services: for project in $(APP_PROJECT_NAMES); \ do \ sudo systemctl stop yavsc$${project} ; \ done $(SLNDIR)/src/Yavsc.Org/bin/$(CONFIGURATION)/$(DOTNET_FRAMEWORK)/publish: build_publish $(SLNDIR)/src/Yavsc.Blogs/bin/$(CONFIGURATION)/$(DOTNET_FRAMEWORK)/publish: build_publish $(SLNDIR)/src/Yavsc.Api/bin/$(CONFIGURATION)/$(DOTNET_FRAMEWORK)/publish: build_publish showConfig: @echo CONFIGURATION: $(CONFIGURATION) @echo DESTDIR: $(DESTDIR) clean: rm -rf generated .PHONY: build_publish mep showConfig copy-service-Api copy-service-Org copy-service-Blogs reinstall clean