Skip to content

Commit 091b9b3

Browse files
author
wipodev
committed
feat!: refactor EverMod CLI architecture and migrate to Git submodule model
BREAKING CHANGE: EverMod is no longer installed locally inside projects. The framework is now always added as a Git submodule, providing a safer, cleaner, and updatable integration model. Major changes: - Migrated EverMod integration to Git submodules (no more local copies) - Added reliable environment detection (mod vs workspace) - Introduced evermod.manifest.json as the source of truth - Reorganized project structure by responsibility (commands, fs, services, io, utils) - Simplified workspace and mod creation flows - Improved Gradle and settings generation logic - Removed legacy utils-based architecture This release represents a full architectural redesign and bumps the version from 1.0.0 to 2.0.0.
1 parent 7a7911e commit 091b9b3

35 files changed

Lines changed: 2026 additions & 2323 deletions

README.md

Lines changed: 147 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,19 @@
55
</p>
66

77
**EverMod CLI** is the official command-line tool for the [EverMod Framework](https://github.com/wipodev/EverMod).
8-
It provides a unified way to **create, organize, and maintain modular Minecraft Forge modding workspaces**.
9-
10-
With a single command, you can generate new mods, manage templates, or collect source code for documentation — all from a single, consistent interface.
8+
designed to simplify the creation and management of **Minecraft Forge modding workspaces**.
9+
It helps you initialize workspaces, create mods, manage templates, and generate documentation packs for analysis or AI-assisted refactoring.
1110

1211
---
1312

14-
## 🚀 Key Features
13+
## Features
1514

16-
- 🧱 **Create ready-to-build Forge mods** using official EverMod templates.
17-
- 🔗 **Add external mods** as Git submodules with automatic workspace registration.
18-
- 📘 **Generate EverMix XML packages** for AI-assisted documentation and analysis.
19-
- 🔄 **Update templates** easily through the `update` command.
20-
- ⚙️ **Integrated release system** for internal packaging and version management.
21-
- 🪶 Works on **Windows**, **Linux**, and **macOS**.
15+
- Initialize Forge modding workspaces
16+
- Create new Forge mods from templates
17+
- Add EverMod support to existing projects
18+
- Manage multiple mods inside a single workspace
19+
- Update global templates easily
20+
- Generate _ContextPack_ XML files with full project context
2221

2322
---
2423

@@ -42,46 +41,162 @@ This initializes your local EverMod template environment, preparing it for use.
4241

4342
---
4443

45-
## 🧭 Basic Commands
44+
## 🚀 Basic Usage
4645

47-
| Command | Description |
48-
| --------------------------------- | ----------------------------------------------------------- |
49-
| `evermod create <name> [version]` | Create a new mod project from a Forge MDK template. |
50-
| `evermod add <user> <repo>` | Add a mod from GitHub as a submodule. |
51-
| `evermod evermix [target]` | Generate an EverMix XML package for documentation. |
52-
| `evermod update [--force]` | Update or reinstall the EverMod templates. |
53-
| `evermod refresh` | Refresh Gradle dependencies and Java indexes. |
54-
| `evermod --version` | Show version information for CLI, framework, and templates. |
46+
All commands follow this structure:
5547

56-
> 💡 The `release` command is reserved for internal framework builds and is hidden from the public CLI help.
48+
```bash
49+
evermod <command> [options]
50+
```
51+
52+
If no command is provided, EverMod will show the help menu.
5753

5854
---
5955

60-
## 📚 Documentation
56+
## 🧩 Commands
57+
58+
### `init` — Initialize a workspace
59+
60+
Creates a new **workspace** directory prepared to host multiple mods.
61+
62+
```bash
63+
evermod init
64+
```
65+
66+
Optional:
67+
68+
```bash
69+
evermod init --path <directory>
70+
```
71+
72+
You will be prompted for:
73+
74+
- Workspace name
75+
- Whether to include EverMod as a Git submodule
76+
77+
---
78+
79+
### `create` — Create a new mod
80+
81+
Creates a new Forge mod from templates.
82+
83+
```bash
84+
evermod create
85+
```
86+
87+
Optional:
88+
89+
```bash
90+
evermod create --space <workspace-path>
91+
```
92+
93+
You will be prompted for:
94+
95+
- Mod name and ID
96+
- Minecraft version
97+
- Author and package name
98+
- Whether to include EverMod (for standalone mods)
99+
100+
If executed inside a workspace, the mod will be created under `mods/` automatically.
101+
102+
---
103+
104+
### `add` — Add EverMod to an existing project
105+
106+
Adds EverMod support to an existing **mod** or **workspace**.
107+
108+
```bash
109+
evermod add
110+
```
111+
112+
Optional:
61113

62-
Detailed documentation is available in the **[`docs/`](./docs/)** folder:
114+
```bash
115+
evermod add --path <project-path>
116+
```
117+
118+
This will:
63119

64-
- [User Guide (docs/)](./docs/) — installation, usage, and workspace setup.
65-
- [Technical Documentation](./docs/) — developer internals and release system.
120+
- Detect the project type
121+
- Update Gradle configuration
122+
- Add EverMod as a Git submodule
123+
- Generate an EverMod manifest
66124

67125
---
68126

69-
## 🪄 Example Workflow
127+
### `update` — Update templates
128+
129+
Updates the global Forge templates used by EverMod.
70130

71131
```bash
72-
# Update templates (first-time setup)
73132
evermod update
133+
```
74134

75-
# Create a new mod project
76-
evermod create SilentMask 1.20.1
135+
Options:
77136

78-
# Add an existing mod from GitHub
79-
evermod add wipodev John666
137+
```bash
138+
evermod update --force
139+
evermod update --silent
140+
```
141+
142+
- `--force`: reinstall templates even if already up to date
143+
- `--silent`: run without prompts
144+
145+
---
80146

81-
# Generate EverMix documentation
82-
evermod evermix
147+
### `contextpack` — Generate ContextPack
148+
149+
Generates a single XML file containing the structure and contents of the project.
150+
151+
```bash
152+
evermod contextpack
83153
```
84154

155+
Optional:
156+
157+
```bash
158+
evermod contextpack <target-path>
159+
```
160+
161+
This is useful for:
162+
163+
- Documentation
164+
- Debugging
165+
- Sharing project context with AI tools
166+
167+
A configuration file (`ContextPack.config.json`) can be used to control exclusions.
168+
169+
---
170+
171+
### `--version` — Version information
172+
173+
Shows CLI and template version information:
174+
175+
```bash
176+
evermod --version
177+
```
178+
179+
---
180+
181+
## 📁 Project Structure
182+
183+
EverMod projects include an `evermod.manifest.json` file used to track:
184+
185+
- Project type (mod or workspace)
186+
- Minecraft versions
187+
- Installed mods
188+
- EverMod integration status
189+
190+
This allows EverMod to work reliably across updates.
191+
192+
---
193+
194+
## 🧠 Notes
195+
196+
- EverMod uses **Git submodules** to manage its framework
197+
- Gradle wrapper files are generated automatically
198+
- The CLI works interactively by default
199+
85200
---
86201

87202
## 👨‍💻 Author

0 commit comments

Comments
 (0)