CosmWasm / optimizer

Dockerfile and script to deterministically produce the smallest possible Wasm for your Rust contract
Apache License 2.0
118 stars 57 forks source link

FR: Detect contracts outside the `contracts/` directory using `Cargo.toml` #157

Open srdtrk opened 1 month ago

srdtrk commented 1 month ago

Description

Currently, the optimizer assumes that all contracts in a workspace are located in the contracts/ directory. However, this is not always the case, especially with larger libraries such as ibc-rs. For instance, ibc-rs has its 07-tendermint contract in ./ibc-clients/ics07-tendermint/cw-contract, which is not detected by the optimizer. It would be beneficial to define a build process that specifies the contract packages in Cargo.toml.

Proposal: Look for [package.metadata.optimizer]

Currently, the optimizer only iterates over Cargo.toml files of the packages in the contracts/ directory. While retaining this behavior, extend the optimizer to iterate over all Cargo.toml files of all packages in the workspace and treat the packages that have [package.metadata.optimizer] as contracts to be built.

This enhancement will provide greater flexibility and support for projects with different directory structures, ensuring all relevant contracts are detected and optimized.