@exilonstudios/cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +342 -0
- package/dist/cli.js +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1275 -0
- package/dist/index.js.map +1 -0
- package/package.json +58 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 ExilonStudios
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
# ExilonCLI
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
**Official CLI for ExilonCMS plugin and theme development**
|
|
8
|
+
|
|
9
|
+
[](https://www.npmjs.com/package/@exiloncms/cli)
|
|
10
|
+
[](https://opensource.org/licenses/MIT)
|
|
11
|
+
[](https://nodejs.org)
|
|
12
|
+
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- 🔌 **Create Plugins** - Scaffold new plugins with interactive prompts
|
|
18
|
+
- 🎨 **Create Themes** - Build beautiful themes from templates
|
|
19
|
+
- 📦 **Package Manager** - Install plugins/themes from marketplace
|
|
20
|
+
- 🔄 **Updates** - Update CMS core and installed packages
|
|
21
|
+
- 🔨 **Build Tools** - Package plugins/themes for distribution
|
|
22
|
+
- ✨ **Beautiful UI** - Modern CLI with colors and animations
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
25
|
+
|
|
26
|
+
### Global Installation (Recommended)
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm install -g @exiloncms/cli
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Local Installation
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install -D @exiloncms/cli
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Using with npx (No Installation)
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npx @exiloncms/cli new plugin
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Quick Start
|
|
45
|
+
|
|
46
|
+
### Create a New Plugin
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
exiloncms new plugin
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
You'll be prompted for:
|
|
53
|
+
- Plugin name
|
|
54
|
+
- Description
|
|
55
|
+
- Author name
|
|
56
|
+
- PHP namespace
|
|
57
|
+
- Starter template (optional)
|
|
58
|
+
- Features to include
|
|
59
|
+
|
|
60
|
+
### Create a New Theme
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
exiloncms new theme
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Install from Marketplace
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
exiloncms install blog
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Update CMS
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Update everything
|
|
76
|
+
exiloncms update
|
|
77
|
+
|
|
78
|
+
# Update core only
|
|
79
|
+
exiloncms update --core
|
|
80
|
+
|
|
81
|
+
# Update packages only
|
|
82
|
+
exiloncms update --packages
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### List Installed Packages
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
exiloncms list
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Build for Distribution
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
exiloncms build --format zip
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Commands
|
|
98
|
+
|
|
99
|
+
### `exiloncms new [type]`
|
|
100
|
+
|
|
101
|
+
Create a new plugin or theme.
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
exiloncms new plugin # Create a new plugin
|
|
105
|
+
exiloncms new theme # Create a new theme
|
|
106
|
+
exiloncms new # Choose interactively
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Plugin Starters:**
|
|
110
|
+
- 📦 **Basic** - Minimal plugin structure
|
|
111
|
+
- 📝 **Blog Extension** - Extend blog functionality
|
|
112
|
+
- 🛒 **Shop Integration** - E-commerce features
|
|
113
|
+
- 📊 **Analytics Provider** - Custom analytics
|
|
114
|
+
- 🔔 **Notification Channel** - Notification integrations
|
|
115
|
+
|
|
116
|
+
**Theme Starters:**
|
|
117
|
+
- 🎨 **Minimal** - Clean, minimal design
|
|
118
|
+
- 📰 **Blog** - Content-focused theme
|
|
119
|
+
- 🎮 **Gaming** - Gaming server theme
|
|
120
|
+
- 💼 **Portfolio** - Personal portfolio
|
|
121
|
+
|
|
122
|
+
**Plugin Features:**
|
|
123
|
+
- 🔧 Admin Panel
|
|
124
|
+
- 🌐 Public Pages
|
|
125
|
+
- 🔌 API Routes
|
|
126
|
+
- 📊 Database Models
|
|
127
|
+
- 🛡️ Middleware
|
|
128
|
+
- ⌨️ Artisan Commands
|
|
129
|
+
- ⚛️ React Components
|
|
130
|
+
- ⚙️ Settings Page
|
|
131
|
+
|
|
132
|
+
### `exiloncms install [name]`
|
|
133
|
+
|
|
134
|
+
Install a plugin or theme from the marketplace.
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
exiloncms install # Search interactively
|
|
138
|
+
exiloncms install blog # Install specific package
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### `exiloncms update`
|
|
142
|
+
|
|
143
|
+
Update ExilonCMS and installed packages.
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
exiloncms update # Update everything
|
|
147
|
+
exiloncms update --core # Update CMS core only
|
|
148
|
+
exiloncms update --packages # Update packages only
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### `exiloncms list`
|
|
152
|
+
|
|
153
|
+
List all installed plugins and themes.
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
exiloncms list
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### `exiloncms build`
|
|
160
|
+
|
|
161
|
+
Build a plugin or theme for distribution.
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
exiloncms build # Build as ZIP
|
|
165
|
+
exiloncms build --format zip # Build as ZIP
|
|
166
|
+
exiloncms build --format tar # Build as TAR
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Examples
|
|
170
|
+
|
|
171
|
+
### Creating a Plugin with React Admin
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
$ exiloncms new plugin
|
|
175
|
+
|
|
176
|
+
? What do you want to create? 🔌 Plugin
|
|
177
|
+
? Project name: my-awesome-plugin
|
|
178
|
+
? Description: An awesome plugin for ExilonCMS
|
|
179
|
+
? Author name: John Doe
|
|
180
|
+
? PHP Namespace: ExilonCMS\Plugins\MyAwesomePlugin
|
|
181
|
+
? Use a starter plugin? Yes
|
|
182
|
+
? Choose a plugin starter: 📦 Basic Plugin
|
|
183
|
+
? Select features:
|
|
184
|
+
✓ 🔧 Admin Panel
|
|
185
|
+
✓ ⚛️ React Components
|
|
186
|
+
✓ 📊 Database Models
|
|
187
|
+
|
|
188
|
+
✓ Creating project structure
|
|
189
|
+
✓ Generating configuration files
|
|
190
|
+
✓ Creating source files
|
|
191
|
+
✓ Installing dependencies
|
|
192
|
+
✓ Initializing git repository
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Project Structure
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
my-awesome-plugin/
|
|
199
|
+
├── src/
|
|
200
|
+
│ ├── Models/ # Database models
|
|
201
|
+
│ ├── Http/
|
|
202
|
+
│ │ ├── Controllers/ # HTTP controllers
|
|
203
|
+
│ │ ├── Middleware/ # Middleware classes
|
|
204
|
+
│ │ └── Requests/ # Form requests
|
|
205
|
+
│ └── MyAwesomePluginServiceProvider.php
|
|
206
|
+
├── database/migrations/ # Database migrations
|
|
207
|
+
├── routes/
|
|
208
|
+
│ ├── web.php # Public routes
|
|
209
|
+
│ └── admin.php # Admin routes
|
|
210
|
+
├── resources/
|
|
211
|
+
│ ├── views/ # Blade templates
|
|
212
|
+
│ ├── js/ # React components
|
|
213
|
+
│ └── css/ # Stylesheets
|
|
214
|
+
├── config/ # Configuration files
|
|
215
|
+
├── tests/ # Tests
|
|
216
|
+
├── composer.json # PHP dependencies
|
|
217
|
+
├── package.json # JS dependencies
|
|
218
|
+
├── plugin.json # Plugin manifest
|
|
219
|
+
└── README.md
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Configuration
|
|
223
|
+
|
|
224
|
+
### Plugin Manifest (`plugin.json`)
|
|
225
|
+
|
|
226
|
+
```json
|
|
227
|
+
{
|
|
228
|
+
"name": "my-plugin",
|
|
229
|
+
"version": "1.0.0",
|
|
230
|
+
"description": "My awesome plugin",
|
|
231
|
+
"author": "Your Name",
|
|
232
|
+
"license": "MIT",
|
|
233
|
+
"type": "plugin",
|
|
234
|
+
"namespace": "ExilonCMS\\Plugins\\MyPlugin",
|
|
235
|
+
"service_provider": "ExilonCMS\\Plugins\\MyPlugin\\MyPluginServiceProvider",
|
|
236
|
+
"autoload": {
|
|
237
|
+
"psr-4": {
|
|
238
|
+
"ExilonCMS\\Plugins\\MyPlugin\\": "src/"
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Theme Manifest (`theme.json`)
|
|
245
|
+
|
|
246
|
+
```json
|
|
247
|
+
{
|
|
248
|
+
"name": "my-theme",
|
|
249
|
+
"version": "1.0.0",
|
|
250
|
+
"description": "My awesome theme",
|
|
251
|
+
"author": "Your Name",
|
|
252
|
+
"license": "MIT",
|
|
253
|
+
"type": "theme",
|
|
254
|
+
"screenshot": "screenshot.png",
|
|
255
|
+
"supports": {
|
|
256
|
+
"exiloncms": "^1.0.0"
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Development
|
|
262
|
+
|
|
263
|
+
### Building the CLI
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
# Clone repository
|
|
267
|
+
git clone https://github.com/ExilonStudios/ExilonCLI.git
|
|
268
|
+
cd ExilonCLI
|
|
269
|
+
|
|
270
|
+
# Install dependencies
|
|
271
|
+
npm install
|
|
272
|
+
|
|
273
|
+
# Build
|
|
274
|
+
npm run build
|
|
275
|
+
|
|
276
|
+
# Link globally
|
|
277
|
+
npm link
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Running in Development
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
npm run dev
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Testing
|
|
287
|
+
|
|
288
|
+
```bash
|
|
289
|
+
# Run tests
|
|
290
|
+
npm test
|
|
291
|
+
|
|
292
|
+
# Lint
|
|
293
|
+
npm run lint
|
|
294
|
+
|
|
295
|
+
# Type check
|
|
296
|
+
npm run typecheck
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
## Roadmap
|
|
300
|
+
|
|
301
|
+
- [ ] Plugin hot-reload
|
|
302
|
+
- [ ] Theme preview server
|
|
303
|
+
- [ ] Package validation
|
|
304
|
+
- [ ] Automated testing
|
|
305
|
+
- [ ] CI/CD integration
|
|
306
|
+
- [ ] Package signing
|
|
307
|
+
- [ ] Marketplace publishing from CLI
|
|
308
|
+
- [ ] Version management
|
|
309
|
+
- [ ] Dependency management
|
|
310
|
+
|
|
311
|
+
## Contributing
|
|
312
|
+
|
|
313
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
314
|
+
|
|
315
|
+
1. Fork the repository
|
|
316
|
+
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
|
|
317
|
+
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
|
|
318
|
+
4. Push to the branch (`git push origin feature/AmazingFeature`)
|
|
319
|
+
5. Open a Pull Request
|
|
320
|
+
|
|
321
|
+
## License
|
|
322
|
+
|
|
323
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
324
|
+
|
|
325
|
+
## Support
|
|
326
|
+
|
|
327
|
+
- 📖 [Documentation](https://docs.exiloncms.fr)
|
|
328
|
+
- 💬 [Discord](https://discord.gg/exiloncms)
|
|
329
|
+
- 🐦 [Twitter](https://twitter.com/exiloncms)
|
|
330
|
+
- 📧 Email: support@exiloncms.fr
|
|
331
|
+
|
|
332
|
+
## Acknowledgments
|
|
333
|
+
|
|
334
|
+
Built with:
|
|
335
|
+
- [Commander.js](https://commander.js.org/) - CLI framework
|
|
336
|
+
- [Clack](https://github.com/natemoo-re/clack) - Interactive prompts
|
|
337
|
+
- [Chalk](https://chalk.js.org/) - Terminal styling
|
|
338
|
+
- [Listr2](https://listr2.kilic.dev/) - Task lists
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
Made with ❤️ by [ExilonStudios](https://exiloncms.fr)
|
package/dist/cli.js
ADDED
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#!/usr/bin/env node
|