---
kind: pipeline
type: docker
name: default

steps:
  - name: web_build
    image: node:21
    volumes:
      - name: web_app
        path: /tmp/web_build
    commands:
      - cd central_frontend
      - npm install
      - npm run build
      - mv dist /tmp/web_build

  - name: backend_check
    image: rust
    volumes:
      - name: rust_registry
        path: /usr/local/cargo/registry
    commands:
      - rustup component add clippy
      - cd central_backend
      - cargo clippy -- -D warnings
      - cargo test

  - name: custom_consumption_check
    image: rust
    volumes:
      - name: rust_registry
        path: /usr/local/cargo/registry
    commands:
      - rustup component add clippy
      - cd custom_consumption
      - cargo clippy -- -D warnings
      - cargo test
    depends_on:
      - backend_check

  - name: backend_compile
    image: rust
    volumes:
      - name: rust_registry
        path: /usr/local/cargo/registry
      - name: web_app
        path: /tmp/web_build
    depends_on:
      - backend_check
      - web_build
    commands:
      - cd central_backend
      - mv /tmp/web_build/dist static
      - cargo build --release
      - ls -lah target/release/central_backend

  - name: esp32_compile
    image: espressif/idf:v5.3.1
    commands:
      - cd esp32_device
      - /opt/esp/entrypoint.sh idf.py build
      - ls -lah build/main.bin


volumes:
  - name: rust_registry
    temp: {}
  - name: web_app
    temp: {}