# Build stage
FROM rust:slim AS builder

WORKDIR /build

# Copy workspace manifests for dependency caching
COPY Cargo.toml Cargo.lock ./
COPY aws-local-core/Cargo.toml aws-local-core/
COPY aws-local-cognito/Cargo.toml aws-local-cognito/
COPY aws-local-sts/Cargo.toml aws-local-sts/
COPY aws-local-iam/Cargo.toml aws-local-iam/
COPY aws-local-organizations/Cargo.toml aws-local-organizations/
COPY aws-local-sqs/Cargo.toml aws-local-sqs/
COPY aws-local-s3/Cargo.toml aws-local-s3/
COPY aws-local-dynamodb/Cargo.toml aws-local-dynamodb/
COPY aws-local-ses/Cargo.toml aws-local-ses/
COPY aws-local-sns/Cargo.toml aws-local-sns/
COPY aws-local-rds/Cargo.toml aws-local-rds/
COPY aws-local-bedrock/Cargo.toml aws-local-bedrock/

# Stub sources for dependency pre-build
RUN for d in . aws-local-core aws-local-cognito aws-local-sts aws-local-iam \
      aws-local-organizations aws-local-sqs aws-local-s3 aws-local-dynamodb \
      aws-local-ses aws-local-sns aws-local-rds aws-local-bedrock; do \
      mkdir -p $d/src && echo 'fn main(){}' > $d/src/main.rs && touch $d/src/lib.rs; \
    done
RUN cargo build --release -p aws-local && rm -rf */src

# Real build
COPY . .
RUN touch src/main.rs && cargo build --release -p aws-local

# Runtime stage
FROM debian:bookworm-slim

RUN apt-get update \
    && apt-get install -y --no-install-recommends ca-certificates curl \
    && rm -rf /var/lib/apt/lists/*

COPY --from=builder /build/target/release/aws-local /usr/local/bin/aws-local

ENV PORT=4566
ENV AWS_REGION=us-east-1
ENV DATA_DIR=/data
ENV RUST_LOG=info

EXPOSE 4566
VOLUME ["/data"]

HEALTHCHECK --interval=5s --timeout=3s \
    CMD curl -f http://localhost:4566/_aws-local/health || exit 1

CMD ["aws-local"]
