# Printing Calldata on Pull Requests

## Overview

The following guide explains how to create a GitHub Action that prints the proposal output on PRs. The output includes calldata, newly deployed addresses, changed addresses, and proposal actions. Once the action is executed, the output will be printed in a comment on the PR. It's worth noting that if a PR touches multiple proposals, the comment will only contain the output of the proposal with the greatest number.

## Creating the Workflow

To create the workflow, follow these steps:

1. Copy the code from [fps-example-repo](https://github.com/solidity-labs-io/fps-example-repo/blob/main/.github/workflows/run-latest-proposal.yml) and paste it into a new file named `run-proposal.yml` in the `.github/workflows` folder.
2. Change the `PROPOSALS_FOLDER` to the folder where the proposals are located.
3. Add the Forge Proposal Simulator path before the `run-proposal.sh` script: `lib/forge-proposal-simulator/run-proposal.sh`.
4. In case the proposal names are different from `*Proposal_1.sol`, copy the [script](https://github.com/solidity-labs-io/fps-example-repo/blob/main/run-proposal.sh) into your repository and customize it as needed. Update the path in step 3 to `./run-proposal.sh`.
5. Check the Github repository settings and make sure Read and Write Permissions are enabled in the Workflow Permissions section.

Whenever a Pull Request that involves a proposal is created, the action will automatically execute and display the output of the proposal in a comment on the PR. This enables the developer to locally run the proposal and validate whether the output corresponds with the one shown on the PR.

## Example implementation

The above workflow has been implemented in [fps-example-repo](https://github.com/solidity-labs-io/fps-example-repo/.github/workflows/run-latest-proposal.yml).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.soliditylabs.io/forge-proposal-simulator/github-actions/print-calldata.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
