DEVELOPMENT_DOCKER_IMAGE_TAG := "ghcr.io/hongbo-miao/hm-api-node:development"
PRODUCTION_DOCKER_IMAGE_TAG := "ghcr.io/hongbo-miao/hm-api-node:latest"

update-lock-file:
    npm install --package-lock-only

install-dependencies:
    npm install

dev:
    npm run dev

test:
    npm run test

lint-javascript:
    npm run lint-javascript

lint-javascript-fix:
    npm run lint-javascript-fix

static-type-check-typescript:
    npm run static-type-check-typescript

docker-build-development:
    cd ../.. && \
    docker build \
        --file=api/api-node/Dockerfile.development \
        --tag="{{ DEVELOPMENT_DOCKER_IMAGE_TAG }}" \
        .

docker-push-development:
    docker push "{{ DEVELOPMENT_DOCKER_IMAGE_TAG }}"

docker-run-development:
    cd ../.. && \
    docker run \
        --rm \
        --name=hm-api-node \
        --publish=0.0.0.0:58136:58136 \
        --env-file=api/api-node/.env.development.local.example.docker \
        "{{ DEVELOPMENT_DOCKER_IMAGE_TAG }}"

docker-build-production:
    cd ../.. && \
    docker build \
        --file=api/api-node/Dockerfile \
        --tag="{{ PRODUCTION_DOCKER_IMAGE_TAG }}" \
        .

docker-push-production:
    docker push "{{ PRODUCTION_DOCKER_IMAGE_TAG }}"

docker-run-production:
    cd ../.. && \
    docker run \
        --rm \
        --name=hm-api-node \
        --publish=0.0.0.0:58136:58136 \
        --env-file=api/api-node/.env.production.local.example \
        "{{ PRODUCTION_DOCKER_IMAGE_TAG }}"

# Docker Compose
docker-compose-build:
    docker compose --file=docker-compose.development.yaml build
    docker compose --file=docker-compose.playwright.yaml build

docker-compose-up:
    docker compose --file=docker-compose.development.yaml up --detach
    docker compose --file=docker-compose.playwright.yaml up --detach

docker-compose-stop:
    docker compose --file=docker-compose.development.yaml stop
    docker compose --file=docker-compose.playwright.yaml stop

docker-compose-down:
    docker compose --file=docker-compose.development.yaml down --volumes
    docker compose --file=docker-compose.playwright.yaml down --volumes
