PACKAGE_JSONS := package.json PACKAGE_JSONS += packages/backend/package.json PACKAGE_JSONS += packages/client/package.json PACKAGE_JSONS += packages/firefish-js/package.json PACKAGE_JSONS += packages/megalodon/package.json PACKAGE_JSONS += packages/sw/package.json RUST_DIR := packages/backend/native-utils CARGO_TOMLS := $(RUST_DIR)/Cargo.toml CARGO_TOMLS += $(RUST_DIR)/migration/Cargo.toml RUSTY_STUFF := $(foreach dir, $(RUST_DIR)/src, $(wildcard $(dir)/*)) RUSTY_STUFF += $(foreach dir, $(RUST_DIR)/migration/src, $(wildcard $(dir)/*)) RUSTY_STUFF += $(CARGO_TOMLS) .PHONY: build build: build-image .PHONY: pre-commit pre-commit: shellcheck pnpm-lock.yaml $(RUST_DIR)/Cargo.lock regenerate-entities neko/index.js rust-lint pnpm-lock.yaml: pnpm-workspace.yaml $(PACKAGE_JSONS) pnpm install $(RUST_DIR)/Cargo.lock: $(CARGO_TOMLS) cd $(RUST_DIR) && cargo update .PHONY: debug debug: pnpm install pnpm run build:debug pnpm run migrate pnpm run start .PHONY: shellcheck shellcheck: shellcheck --external-sources update.sh shellcheck --external-sources neko/update/* .PHONY: rust-lint rust-lint: cd $(RUST_DIR) && pnpm run lint .PHONY: regenerate-entities regenerate-entities: pnpm run migrate cd $(RUST_DIR) && \ sea-orm-cli generate entity \ --output-dir='src/model/entity' \ --database-url='postgres://firefish:password@localhost:25432/firefish_db' \ --date-time-crate='chrono' \ --model-extra-attributes='NAPI_EXTRA_ATTR_PLACEHOLDER' && \ for file in src/model/entity/*; do \ base=$$(basename -- "$${file}"); \ jsname=$$(printf '%s\n' "$${base%.*}" | perl -pe 's/(^|_)./uc($$&)/ge;s/_//g'); \ attribute=$$(printf 'napi_derive::napi(object, js_name = "%s")' "$${jsname}"); \ sed -i "s/NAPI_EXTRA_ATTR_PLACEHOLDER/$${attribute}/" "$${file}"; \ done sed -i 's/#\[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)\]/#[derive(Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)]\n#[napi_derive::napi]/' \ $(RUST_DIR)/src/model/entity/sea_orm_active_enums.rs neko/index.js: $(RUSTY_STUFF) pnpm --filter='native-utils' run build:debug [ -f $(RUST_DIR)/built/index.js ] pnpm run format rm neko/index.js cp $(RUST_DIR)/built/index.js neko/index.js .PHONY: build-image build-image: . neko/update/utils && \ buildah build \ --no-cache \ --platform linux/amd64 \ --build-arg "VERSION=$$(version_ci)" \ --tag docker.io/naskya/firefish \ --tag registry.code.naskya.net/naskya/firefish \ --tag "registry.code.naskya.net/naskya/firefish:$$(version_ci | cut -d':' -f2)" \ .