Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate hardhat ignition to hardhat monorepo #6066

Open
wants to merge 1,385 commits into
base: main
Choose a base branch
from
Open

Conversation

zoeyTM
Copy link
Contributor

@zoeyTM zoeyTM commented Dec 19, 2024

This is the initial migration of the https://github.com/NomicFoundation/hardhat-ignition repo into the hardhat monorepo. The commit history should be preserved from the original ignition repo, and the entire project should now live in this repo within packages/hardhat-ignition.

The ignition project is not yet functional within this repo, that will come in a follow-up PR. This PR is simply the merge of the commit histories.

kanej and others added 30 commits October 13, 2023 09:51
Update the deployment complete displays for error messages as well.

Adds some tests to allow us to iterate quickly.
Redisplay batches on every future init and complete event. Not all 
events were triggering a redisplay of the batch, now both init and
 complete events do.

Init events where overwriting the batch init for futures, and setting
them to pending (aka timeout).

The fix is to set them to unstarted (the same as the batch init).

This fixes the flash of pending/timed out displayed for futures.

Fixes #545.
Update the different status displays to match the new styling of deploy.

The status display has been separated out from the console logging, so that the display can be brought under test.

Resolves #550
The template changes from `network-<CHAINID>` to `chain-<CHAINID>`.

There is now also a validation test against the user provided deployment
id to ensure it matches our rules. Specifically that it starts with an
upper or lowercase letter, and then only includes alpha numerics,
underscores or dashes.

Resolves #551.
The blank line is also removed from status displays.

Resolves #554.
Display a warning message in the `deploy` task. It indicates that
deployment is against an ephemeral network.

The implementation is to add extra information to the start run event,
specifically the `deploymentDir`, which then allows the UI event handler
to determine if the deployment is ephemeral.

This means injecting that information down throught the
`deploy`/`deployer` barrier. This is not ideal, but I think it is
legitimate to assume the UI should have access to all the passed in
config.

Resolves #553.
Switch the `artifact` version of `contractAt` to:

```js
m.contractAt(name, artifact, address)
```

This brings it into line with other artifact based signatures.

Resolves #557.
* update the status text for success
* update text of timed out futures
* update the failed text
* update status text for started futures
* don't expose strategy level information

This also updates the identifiers in the tests.
Define call ids based on the entire id of the contract being called, not just its name (PR 2)
…messages

Better validation error messages
Support fully qualified contract names (PR 3)
It splits the errors into two cases, with different messages:

- An autogenerated id is duplicated.
- An id provided by the user is duplicated.

It also changes the wording, so that we use the full id ("Module#autoId") only
 in the autogenerated case, and just the id ("userProvidedId") when the user 
provides it. This change is because the user may not recognize that 
"Module#userProvidedId" refers to the string they provided, as it has 
been changed.

Moves the `add future id to the builder` (used for checking duplicates across
modules and submodules) out from the assertion method and into each api
action. When a future is added to the module, we consider it safe to add
the future id to the list of previously seen future ids.

---------

Co-authored-by: John Kane <[email protected]>
Our display of the deployment starting panel is dependent on the
`RUN_START` event. This event was being triggered only once for a
deployment, on initialization of the deployment state, on the very first
run of the deployment. The panel was not being displayed on subsequent
runs.

Several moves have been made to fix this:

1. The original run start has been renamed to `DEPLOYMENT_INITIALIZE` and
   only has responsibility for setting the `chainId`. It is only ever run
   as the first message in a new deployment.
2. The execution engine is no longer invoked if there are no batches to
   run (i.e. no uncompleted futures).
3. A new `RUN_START` that is UI only has been added to the deployer.
   If there is a batch to execute, and the execution engine is being
   invoked, we trigger the new `RUN_START`.
4. The deployment initialize event in the state reducer only sets the
   `chainId` (rather than clearing executionStates as well).

The UI for displaying the execution panel has been shifted to the new
run start event.

These changes gives us the correct UI combinations:

- Show Deploying panel on fresh deploy
- Only show complete on rerun with no new futures
- Show Deploying panel on rerun with new futures

Fixes #566.
Add the reconciliation warnings to the deploying panel.

Refactor the test format utility used in display tests as well.

Fixes #567
zoeyTM and others added 23 commits October 24, 2024 04:30
Update the packages versions and changelogs for the `0.15.7 -
2024-10-24` release.
* fix: add additional validation for global parameters

Default values for parameters masked the test cases for our global parameters
feature.

This commit adds additional tests for parameters without default values and
enhances the validations to support Global Parameters as an option.

* fix: use global params where other module params exist

If there is a parameter defined in Global parameters,
and a different parameter defined at the module level,
we were failing to find the global parameter.

This has been fixed with a more explicit lookup in
`resolveModuleParameter`. Two tests have been added
to check module param lookup where a different global
parameter exists, and global parameter lookup where
a different module parameter exists.

* refactor: pull out shared validation code

Pull out the shared validation resolution code for module/global/default value
resolution for module parameters.

Fixes #834
To ensure we work with nested parameters we use a replacer function on
stringify, rather than swapping out individual params.
Update the packages versions and changelogs for the `0.15.8 -
2024-11-22` release.
Update the packages versions and changelogs for the `0.15.9 -
2024-12-18` release.
Copy link

changeset-bot bot commented Dec 19, 2024

⚠️ No Changeset found

Latest commit: 760f691

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copy link

vercel bot commented Dec 19, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
hardhat ✅ Ready (Inspect) Visit Preview 💬 Add feedback Dec 19, 2024 11:44am

@zoeyTM zoeyTM requested a review from kanej December 19, 2024 11:44
@zoeyTM zoeyTM requested a review from alcuadrado December 19, 2024 11:44
@zoeyTM zoeyTM added the no changeset needed This PR doesn't require a changeset label Dec 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
no changeset needed This PR doesn't require a changeset status:triaging
Projects
Status: Backlog
Development

Successfully merging this pull request may close these issues.