mlua-socket 0.2.7

A Rust-native implementation of LuaSocket for mlua.
variables:
  RUST_VERSION: 1.93.1
  CARGO_HOME: $CI_PROJECT_DIR/.cargo

stages:
  - build+test
  - publish

mr-amd64-clippy:
  stage: build+test
  only:
    - merge_requests
  image: rust:$RUST_VERSION
  before_script:
    - apt-get update && apt-get install -y cmake
    - rustup set profile default
    - rustup default $RUST_VERSION
    - rustup component add clippy
  script:
    - cargo clippy --features lua54 -- --no-deps -D warnings

mr-amd64:
  stage: build+test
  only:
    - merge_requests
  image: rust:$RUST_VERSION
  parallel:
    matrix:
      - FEATURE: [lua51, lua52, lua53, lua54, luajit, luajit52]
  cache:
    paths:
      - "./target/criterion"
  before_script:
    - apt-get update && apt-get install -y cmake
  script:
    - cargo test --features $FEATURE

mr-amd64-bench:
  extends: mr-amd64
  script:
    - cargo bench --features $FEATURE

mr-arm-clippy:
  extends: mr-amd64-clippy
  parallel:
    matrix:
      - ARCH: [armhf, arm64]
  tags: [$ARCH]

mr-aarch64:
  stage: build+test
  only:
    - merge_requests
  tags: ["arm64", "cmake", "linux", "rustup"]
  parallel:
    matrix:
      - FEATURE: [lua51, lua52, lua53, lua54, luajit, luajit52]
  before_script:
    - rustup set profile default
    - rustup default $RUST_VERSION
  script:
    - cargo test --features $FEATURE

mr-aarch64-bench:
  extends: mr-aarch64
  tags: ["arm64", "cmake", "linux", "rpi5", "rustup"]
  script:
    - cargo bench --features $FEATURE

mr-armv7:
  stage: build+test
  only:
    - merge_requests
  tags: ["armhf", "cmake", "linux", "rustup"]
  parallel:
    matrix:
      - FEATURE: [lua51, lua52, lua53, lua54]
  before_script:
    - rustup set profile default
    - rustup default $RUST_VERSION
  script:
    - cargo test --features $FEATURE

mr-armv7-bench:
  extends: mr-armv7
  tags: ["armhf", "cmake", "linux", "rpi4", "rustup"]
  script:
    - cargo bench --features $FEATURE

crates.io:
  stage: publish
  only:
    - tags
  image: rust:$RUST_VERSION
  script:
    - cargo publish --features lua54 --allow-dirty --token ${CARGO_REGISTRY_TOKEN}