Skip to content

Commit b2a0d70

Browse files
committed
Merge branch 'pass-sf-template' of github.com:scaffold-eth/create-eth into pass-sf-template
2 parents ce53580 + c7d8731 commit b2a0d70

77 files changed

Lines changed: 545 additions & 2386 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.changeset/dark-icons-like.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"create-eth": patch
3+
---
4+
5+
- (foundry) https://github.com/scaffold-eth/scaffold-eth-2/pull/1180
6+
- (foundry) https://github.com/scaffold-eth/scaffold-eth-2/pull/1197

.changeset/fresh-carrots-run.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"create-eth": patch
3+
---
4+
5+
validate foundry version

.github/workflows/lint-instances.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ jobs:
4343
uses: foundry-rs/foundry-toolchain@v1
4444
with:
4545
cache: false
46-
version: v1.3.0
46+
version: v1.4.0
4747

4848
- name: Install foundryup
4949
if: matrix.config == 'foundry' || matrix.config == 'foundry_with_extension'

CHANGELOG.md

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,31 @@
11
# create-eth
22

3+
## 2.0.0
4+
5+
### Major Changes
6+
7+
This update replaces most of the built-in UI components from Scaffold-ETH 2 codebase with the new [Scaffold-UI](https://github.com/scaffold-eth/scaffold-ui) library.
8+
9+
[Scaffold-UI](https://github.com/scaffold-eth/scaffold-ui) provides a clean set of reusable components + hooks that expose everything you need to build ethereum components.
10+
11+
#### For Extension Developers
12+
13+
If your extension previously imported components directly from Scaffold-ETH 2, you'll need to update those import paths.
14+
15+
To help with the migration, we've released a **codemod**:
16+
17+
```
18+
cd your-extension-directory
19+
npx create-eth-codemod migrate-scaffold-ui-imports .
20+
```
21+
22+
This should automatically refactor your imports to use scaffold-ui where appropriate.
23+
24+
### Patch Changes
25+
26+
- 6841903: Add drizzle-neon to curated extensions
27+
Accept `postContent` args in `.gitignores` tempaltes
28+
329
## 1.0.6
430

531
### Patch Changes
@@ -695,9 +721,7 @@
695721

696722
### Patch Changes
697723

698-
- 9c967d9: 1. Fix RainbowKitCustomConnectButton dropdown styles (#500) 2. chore: footer missalignment & home page on small screens (#502) 3. Update and typescript version (#499) 4. fix: header links wrapping icons and text (#510) 5. Fix typos in useScaffoldContractWrite logs (#512)
699-
6. fix: spelling in test file name (#522)
700-
724+
- 9c967d9: 1. Fix RainbowKitCustomConnectButton dropdown styles (#500) 2. chore: footer missalignment & home page on small screens (#502) 3. Update and typescript version (#499) 4. fix: header links wrapping icons and text (#510) 5. Fix typos in useScaffoldContractWrite logs (#512) 6. fix: spelling in test file name (#522)
701725
7. Add polygonZkEvm and polygonZkEvmTestnet (#309)
702726

703727
8. fix: eth price showing 0 on sepolia network (#532)
@@ -728,9 +752,7 @@
728752

729753
### Patch Changes
730754

731-
- 32caee5: 1. Fix RainbowKitCustomConnectButton dropdown styles #500 2. chore: footer missalignment on mobile screens #502 3. Update and typescript version #499 4. add grid and grid-flow class to li manually #510 5. Fix typos in getScaffoldContractWrite lines 57 & 65 #512
732-
6. fix: test file name #522
733-
755+
- 32caee5: 1. Fix RainbowKitCustomConnectButton dropdown styles #500 2. chore: footer missalignment on mobile screens #502 3. Update and typescript version #499 4. add grid and grid-flow class to li manually #510 5. Fix typos in getScaffoldContractWrite lines 57 & 65 #512 6. fix: test file name #522
734756
7. add support for `yarn verify --network networkName` in foundry similar to hardhat #489
735757

736758
8. updated the Git task title from "Initializing Git repository" => "Initializing Git repository and submodules" when the user selects foundry as an extension

contributors/TEMPLATE-FILES.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@ If you're interested in developing third-party extensions, the [THIRD-PARTY-EXTE
1515
| [(script) `Deploy.s.sol.template.mjs`](https://github.com/scaffold-eth/create-eth/blob/main/templates/solidity-frameworks/foundry/packages/foundry/script/Deploy.s.sol.template.mjs) | [`Deploy.s.sol.args.mjs`](https://github.com/scaffold-eth/create-eth-extensions/blob/example/extension/packages/foundry/script/Deploy.s.sol.args.mjs) |
1616
| [(config) `foundry.toml.template.mjs`](https://github.com/scaffold-eth/create-eth/blob/main/templates/solidity-frameworks/foundry/packages/foundry/foundry.toml.template.mjs) | [`foundry.toml.args.mjs`](https://github.com/scaffold-eth/create-eth-extensions/blob/example/extension/packages/foundry/foundry.toml.args.mjs) |
1717
| [(config) `Makefile.template.mjs`](https://github.com/scaffold-eth/create-eth/blob/main/templates/solidity-frameworks/foundry/packages/foundry/Makefile.template.mjs) | [`Makefile.args.mjs`](https://github.com/scaffold-eth/create-eth-extensions/blob/example/extension/packages/foundry/Makefile.args.mjs) |
18+
| [(gitignore) `.gitignore.template.mjs`](https://github.com/scaffold-eth/create-eth/blob/main/templates/solidity-frameworks/foundry/packages/foundry/.gitignore.template.mjs) | [`.gitignore.args.mjs`](https://github.com/scaffold-eth/create-eth-extensions/blob/example/extension/packages/foundry/.gitignore.args.mjs) |
1819

1920
#### Hardhat
2021

2122
| Template | Example args file |
2223
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
2324
| [(config) `hardhat.config.ts.template.mjs`](https://github.com/scaffold-eth/create-eth/blob/main/templates/solidity-frameworks/hardhat/packages/hardhat/hardhat.config.ts.template.mjs) | [`hardhat.config.ts.args.mjs`](https://github.com/scaffold-eth/create-eth-extensions/blob/example/extension/packages/hardhat/hardhat.config.ts.args.mjs) |
25+
| [(gitignore) `.gitignore.template.mjs`](https://github.com/scaffold-eth/create-eth/blob/main/templates/solidity-frameworks/hardhat/packages/hardhat/.gitignore.template.mjs) | [`.gitignore.args.mjs`](https://github.com/scaffold-eth/create-eth-extensions/blob/example/extension/packages/hardhat/.gitignore.args.mjs) |
2426

2527
#### NextJS
2628

@@ -40,12 +42,14 @@ If you're interested in developing third-party extensions, the [THIRD-PARTY-EXTE
4042
| [(config) `getMetadata.ts.template.mjs`](https://github.com/scaffold-eth/create-eth/blob/main/templates/base/packages/nextjs/utils/scaffold-eth/getMetadata.ts.args.mjs) | [`getMetadata.ts.teamplte.args.mjs`](https://github.com/scaffold-eth/create-eth-extensions/tree/example/extension/packages/nextjs/utils/scaffold-eth/getMetadata.ts.args.mjs) |
4143
| [(types) `abi.d.ts.template.mjs`](https://github.com/scaffold-eth/create-eth/blob/main/templates/base/packages/nextjs/types/abitype/abi.d.ts.template.mjs) | [`abi.d.ts.args.mjs`](https://github.com/scaffold-eth/create-eth-extensions/blob/example/extension/packages/nextjs/types/abitype/abi.d.ts.args.mjs) |
4244
| [(env) `.env.example.template.mjs`](https://github.com/scaffold-eth/create-eth/blob/main/templates/base/packages/nextjs/.env.example.template.mjs) | [`.env.example.args.mjs`](https://github.com/scaffold-eth/create-eth-extensions/blob/example/extension/packages/nextjs/.env.example.args.mjs) |
45+
| [(gitignore) `.gitignore.template.mjs`](https://github.com/scaffold-eth/create-eth/blob/main/templates/base/packages/nextjs/.gitignore.template.mjs) | [`.gitignore.args.mjs`](https://github.com/scaffold-eth/create-eth-extensions/blob/example/extension/packages/nextjs/.gitignore.args.mjs) |
4346

4447
#### Root
4548

46-
| Template | Example args file |
47-
| ---------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
48-
| [(doc) `README.md.template.mjs`](https://github.com/scaffold-eth/create-eth/blob/main/templates/base/README.md.template.mjs) | [`README.md.args.mjs`](https://github.com/scaffold-eth/create-eth-extensions/blob/example/extension/README.md.args.mjs) |
49+
| Template | Example args file |
50+
| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- |
51+
| [(doc) `README.md.template.mjs`](https://github.com/scaffold-eth/create-eth/blob/main/templates/base/README.md.template.mjs) | [`README.md.args.mjs`](https://github.com/scaffold-eth/create-eth-extensions/blob/example/extension/README.md.args.mjs) |
52+
| [(gitignore) `.gitignore.template.mjs`](https://github.com/scaffold-eth/create-eth/blob/main/templates/base/.gitignore.template.mjs) | [`.gitignore.args.mjs`](https://github.com/scaffold-eth/create-eth-extensions/blob/example/extension/.gitignore.args.mjs) |
4953

5054
### create-eth internal use
5155

@@ -69,6 +73,6 @@ If you're interested in developing third-party extensions, the [THIRD-PARTY-EXTE
6973
| [(env) `.env.template.mjs`](https://github.com/scaffold-eth/create-eth/blob/main/templates/solidity-frameworks/foundry/packages/foundry/.env.template.mjs) | we need to create a `.env` file for the foundry to work properly out of box |
7074
| [(gitignore) `.gitignore.template.mjs`](https://github.com/scaffold-eth/create-eth/blob/main/templates/solidity-frameworks/foundry/packages/foundry/deployments/.gitignore.template.mjs) | this makes sure we have empty `deployments` out of box |
7175

72-
We also have `.gitignore.template.mjs` files in [root](https://github.com/scaffold-eth/create-eth/blob/main/templates/base/.gitignore.template.mjs), [nextjs](https://github.com/scaffold-eth/create-eth/blob/main/templates/base/packages/nextjs/.gitignore.template.mjs), [hardhat](https://github.com/scaffold-eth/create-eth/blob/main/templates/solidity-frameworks/hardhat/packages/hardhat/.gitignore.template.mjs), [foundry](https://github.com/scaffold-eth/create-eth/blob/main/templates/solidity-frameworks/foundry/packages/foundry/.env.template.mjs) that are used to prevent npm from ignoring the `.gitignore` files in the generated project.
76+
We have `.gitignore.template.mjs` files in [root](https://github.com/scaffold-eth/create-eth/blob/main/templates/base/.gitignore.template.mjs), [nextjs](https://github.com/scaffold-eth/create-eth/blob/main/templates/base/packages/nextjs/.gitignore.template.mjs), [hardhat](https://github.com/scaffold-eth/create-eth/blob/main/templates/solidity-frameworks/hardhat/packages/hardhat/.gitignore.template.mjs), [foundry](https://github.com/scaffold-eth/create-eth/blob/main/templates/solidity-frameworks/foundry/packages/foundry/.env.template.mjs) that are used to prevent npm from ignoring the `.gitignore` files in the generated project.
7377

7478
For more information on how templating works in this project, please refer to the [TEMPLATING.md](./TEMPLATING.md) document.

contributors/THIRD-PARTY-EXTENSION.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,3 +191,60 @@ This phase allows you to test your extension locally and see how it works when u
191191
```
192192

193193
Next time users call your extension via `npx create-eth@latest -e`, they will get the updated version.
194+
195+
## Contributing to the Curated Extensions List
196+
197+
If your organization has created an extension and you'd like to add it to create-eth's curated extensions list (allowing users to install it via short flag names), you can submit a PR.
198+
199+
**Note**: This list is curated for established organizations and projects. Individual developers can still publish and share their extensions via the standard GitHub URL format (`npx create-eth@latest -e owner/repo:branch`).
200+
201+
### Extension Registry Structure
202+
203+
Extensions are organized in `src/extensions/` by category:
204+
205+
- **`create-eth-extensions.ts`** - Core extensions from scaffold-eth organization
206+
- **`challenges.ts`** - SpeedRunEthereum challenge extensions
207+
- **`organizations.ts`** - Third-party organization extensions (your extension goes here!)
208+
209+
### Adding Your Extension
210+
211+
1. **Edit `src/extensions/organizations.ts`** to add your extension:
212+
213+
```typescript
214+
import { Extension } from "./types";
215+
216+
export const organizations: Extension[] = [
217+
// ... other extensions
218+
{
219+
extensionFlagValue: "metamask/gator-extension", // Must follow: githubOrg/repoName
220+
name: "Delegation Toolkit Extension", // Optional: Human-readable name
221+
description: "Clear description of what your extension does",
222+
repository: "https://github.com/metamask/gator-extension",
223+
branch: "main", // Optional: specific branch
224+
installCommand: "npx create-eth@latest -e metamask/gator-extension", // Optional
225+
},
226+
];
227+
```
228+
229+
2. **Required fields** (TypeScript will enforce these):
230+
- `extensionFlagValue` - **Must follow the format `githubOrg/repoName`** to avoid conflicts (e.g., "metamask/gator-extension", "envio/hyperindex")
231+
- `description` - What the extension provides
232+
- `repository` - Full GitHub repository URL
233+
234+
3. **Optional fields**:
235+
- `branch` - Specific branch (defaults to repo default branch)
236+
- `name` - Display name for UI (defaults to extensionFlagValue)
237+
- `createEthVersion` - create-eth version specification (defaults to latest)
238+
239+
4. **Test your addition**:
240+
241+
```bash
242+
yarn type-check # Ensures all required fields are present
243+
yarn build # Builds the project
244+
```
245+
246+
5. **Submit your PR** with:
247+
- Updated TypeScript file (`src/extensions/organizations.ts`)
248+
- Brief description of your organization and the extension's purpose
249+
250+
Your PR will be reviewed by the maintainers. We prioritize extensions from established organizations that provide value to the broader Ethereum development community.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "create-eth",
3-
"version": "1.0.6",
3+
"version": "2.0.0",
44
"description": "Create a Scaffold-ETH-2 app",
55
"repository": {
66
"type": "git",

src/cli.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { renderIntroMessage } from "./utils/render-intro-message";
55
import type { Args } from "./types";
66
import chalk from "chalk";
77
import { SOLIDITY_FRAMEWORKS } from "./utils/consts";
8-
import { validateFoundryUp, checkSystemRequirements } from "./utils/system-validation";
8+
import { validateFoundry, checkSystemRequirements } from "./utils/system-validation";
99
import { showHelpMessage } from "./utils/show-help-message";
1010

1111
export async function cli(args: Args) {
@@ -28,7 +28,7 @@ export async function cli(args: Args) {
2828

2929
const options = await promptForMissingOptions(rawOptions, solidityFrameworkChoices);
3030
if (options.solidityFramework === SOLIDITY_FRAMEWORKS.FOUNDRY) {
31-
await validateFoundryUp();
31+
await validateFoundry();
3232
}
3333

3434
await createProject(options);

src/dev/create-extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ const copyChanges = async (
165165
const defaultArgs = extractWithDefaultsArg(templateContent);
166166

167167
if (!defaultArgs) {
168-
prettyLog.info(`.gitignore and .env files could not be changed`, 3);
168+
prettyLog.info(`${file} could not be changed (does not accept arguments)`, 3);
169169
console.log("\n");
170170
continue;
171171
}

0 commit comments

Comments
 (0)