mirror of
https://github.com/EvernodeXRPL/hp-devkit.git
synced 2026-04-29 15:37:58 +00:00
## Change Add a guard to the `disparate_dir` cleanup in `sync_instance` to prevent accidental deletion of the contract state directory when `DISPARATE_DIR` is not set. ## Background The `disparate` directory feature was introduced in the beta devkit image to support multisig deployments. The cluster script assumes `DISPARATE_DIR` is always set, however older NPM packages (below v0.6.8) do not pass this environment variable, leaving `$disparate_dir` as an empty string. With an empty `$disparate_dir` this line: ```bash [ -d $contract_dir/contract_fs/seed/state/$disparate_dir ] && rm -r $contract_dir/contract_fs/seed/state/$disparate_dir ``` Evaluates to: ```bash [ -d $contract_dir/contract_fs/seed/state/ ] && rm -r $contract_dir/contract_fs/seed/state/ ``` Deleting the entire state directory immediately after the contract bundle is copied in. ## Change Add a guard so the deletion only runs when `$disparate_dir` is actually set: ```bash # Before [ -d $contract_dir/contract_fs/seed/state/$disparate_dir ] && rm -r $contract_dir/contract_fs/seed/state/$disparate_dir # After [ -n "$disparate_dir" ] && [ -d $contract_dir/contract_fs/seed/state/$disparate_dir ] && rm -r $contract_dir/contract_fs/seed/state/$disparate_dir ``` ## Notes - NPM v0.6.8 correctly passes `DISPARATE_DIR=disparate` and is required for full beta devkit compatibility - This guard is defensive programming to protect against the state directory being accidentally deleted if an older NPM package is used with the beta image - For non-multisig deployments the disparate directory cleanup is skipped entirely which is the correct behaviour