repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v3.2.0
    hooks:
      - id: trailing-whitespace
      - id: end-of-file-fixer
      - id: check-added-large-files
        exclude: package-lock.json
  # Hook to format many type of files in the repo
  # including solidity contracts.
  - repo: https://github.com/pre-commit/mirrors-prettier
    rev: "v2.7.1"
    hooks:
      - id: prettier
        additional_dependencies:
          - "prettier@2.7.1"
          - "prettier-plugin-solidity@1.0.0-rc.1"
  - repo: local
    hooks:
      # Hooks for the remote executor
      - id: cargo-fmt-remote-executor
        name: Cargo format for remote executor
        language: "rust"
        entry: cargo +nightly-2023-03-01 fmt --manifest-path ./governance/remote_executor/Cargo.toml --all -- --config-path rustfmt.toml
        pass_filenames: false
        files: governance/remote_executor
      - id: cargo-clippy-remote-executor
        name: Cargo clippy for remote executor
        language: "rust"
        entry: cargo +nightly-2023-03-01 clippy --manifest-path ./governance/remote_executor/Cargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings
        pass_filenames: false
        files: governance/remote_executor
      # Hooks for the attester
      - id: cargo-fmt-attester
        name: Cargo format for attester
        language: "rust"
        entry: cargo +nightly-2023-03-01 fmt --manifest-path ./wormhole_attester/Cargo.toml --all -- --config-path rustfmt.toml
        pass_filenames: false
        files: wormhole_attester
      - id: cargo-clippy-attester
        name: Cargo clippy for attester
        language: "rust"
        entry: |
          bash -c 'EMITTER_ADDRESS=0 BRIDGE_ADDRESS=0 cargo +nightly-2023-03-01 clippy --manifest-path \
            ./wormhole_attester/Cargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings'
        pass_filenames: false
        files: wormhole_attester
      # Hooks for cosmwasm contract
      - id: cargo-fmt-cosmwasm
        name: Cargo format for cosmwasm contract
        language: "rust"
        entry: cargo +nightly-2023-03-01 fmt --manifest-path ./target_chains/cosmwasm/Cargo.toml --all -- --config-path rustfmt.toml
        pass_filenames: false
        files: target_chains/cosmwasm
      - id: cargo-clippy-cosmwasm
        name: Cargo clippy for cosmwasm contract
        language: "rust"
        entry: cargo +nightly-2023-03-01 clippy --manifest-path ./target_chains/cosmwasm/Cargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings
        pass_filenames: false
        files: target_chains/cosmwasm
      # Hooks for Hermes
      - id: cargo-fmt-hermes
        name: Cargo format for Pyth Hermes
        language: "rust"
        entry: cargo +nightly-2023-07-23 fmt --manifest-path ./hermes/Cargo.toml --all -- --config-path rustfmt.toml
        pass_filenames: false
        files: hermes
      # Hooks for Fortuna
      - id: cargo-fmt-fortuna
        name: Cargo format for Fortuna
        language: "rust"
        entry: cargo +nightly-2023-07-23 fmt --manifest-path ./fortuna/Cargo.toml --all -- --config-path rustfmt.toml
        pass_filenames: false
        files: fortuna
      # Hooks for message buffer contract
      - id: cargo-fmt-message-buffer
        name: Cargo format for message buffer contract
        language: "rust"
        entry: cargo +nightly-2023-03-01 fmt --manifest-path ./pythnet/message_buffer/Cargo.toml --all -- --config-path rustfmt.toml
        pass_filenames: false
        files: pythnet/message_buffer
      - id: cargo-clippy-message-buffer
        name: Cargo clippy for message buffer contract
        language: "rust"
        entry: cargo +nightly-2023-03-01 clippy --manifest-path ./pythnet/message_buffer/Cargo.toml --tests --fix --allow-dirty --allow-staged --features test-bpf -- -D warnings
        pass_filenames: false
        files: pythnet/message_buffer
      # Hooks for pythnet_sdk
      - id: cargo-fmt-pythnet-sdk
        name: Cargo format for pythnet SDK
        language: "rust"
        entry: cargo +nightly-2023-07-23 fmt --manifest-path ./pythnet/pythnet_sdk/Cargo.toml --all -- --config-path rustfmt.toml
        pass_filenames: false
        files: pythnet/pythnet_sdk
      - id: cargo-clippy-pythnet-sdk
        name: Cargo clippy for pythnet SDK
        language: "rust"
        entry: cargo +nightly-2023-07-23 clippy --manifest-path ./pythnet/pythnet_sdk/Cargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings
        pass_filenames: false
        files: pythnet/pythnet_sdk
      # Hooks for solana receiver contract
      - id: cargo-fmt-pyth-solana-receiver
        name: Cargo format for solana target chain contract
        language: "rust"
        entry: cargo +nightly-2023-03-01 fmt --manifest-path ./target_chains/solana/Cargo.toml --all -- --config-path rustfmt.toml
        pass_filenames: false
        files: target_chains/solana
      - id: cargo-clippy-pyth-solana-receiver
        name: Cargo clippy for solana target chain contract
        language: "rust"
        entry: cargo +nightly-2023-03-01 clippy --manifest-path ./target_chains/solana/Cargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings
        pass_filenames: false
        files: target_chains/solana
