- handled process exit
- updated docs + readme
- typos fix
This commit is contained in:
Danya H 2024-10-30 18:31:53 +00:00
parent 7e43e0d106
commit 495217ecd5
5 changed files with 54 additions and 30 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "@entityseven/create-rage-fw", "name": "@entityseven/create-rage-fw",
"version": "0.1.1", "version": "0.1.2",
"bin": { "bin": {
"rage-fw": "dist/index.js" "rage-fw": "dist/index.js"
}, },

View File

@ -1,29 +1,41 @@
# RageFW CLI To make you life easier while using RageFW we created a basic CLI. At the moment automation we have only works via [pnpm](https://pnpm.io/) and [bun](https://bun.sh/)
To make you life easier while using RageFW we created a basic CLI. At the moment automation we have only works via [pnpm](https://pnpm.io/)
``pnpm create @entityseven/rage-fw@latest`` ``pnpm create @entityseven/rage-fw@latest``
## TL;DR ``bun create @entityseven/rage-fw@latest``
# TL;DR
- ``Initialize new project`` - create new template project - ``Initialize new project`` - create new template project
- ``Test our RPC`` - scaffold an example for ``@entityseven/rage-fw-rpc``
- ``Install RAGE:MP updater`` - download and update RAGE:MP server files - ``Install RAGE:MP updater`` - download and update RAGE:MP server files
## Options # Options
For now, you will see a few available options. They are described in detail below For now, you will see a few available options. They are described in detail below
- ``Initialize new project`` - ``Initialize new project``
- ``Test our RPC``
- ``Install RAGE:MP updater`` - ``Install RAGE:MP updater``
### Initialize new project ## Initialize new project
Using this options will forward you to common project-creation menu Using this option will forward you to common project creation menu
- ``Enter project name``
This option will specify a name for your project which is used as a folder name too. Defaults to **rage-fw** - ``Enter project name``
This option will specify a name for your project which is used as a folder name too. Defaults to **rage-fw-example**
- ``Select frontend`` - ``Select front-end``
Use selector menu to choose which front-end framework you want to use. We will do our best to expand this menu with various solutions
Use this selector menu to choose which frontend framework you want to use. We will do our best to expand this menu after some time. ## Test our RPC
Defaults to **React + TypeScript (Vite)** Using this option will forward you to common project creation menu
### Install Rage:MP updater - ``Enter project name``
This option will simplify installation process of Rage:MP server files required to start your server This option will specify a name for your project which is used as a folder name too. Defaults to **rage-fw-rpc-example**
- ``Select front-end``
Use selector menu to choose which front-end framework you want to use. We will do our best to expand this menu with various solutions
## Install Rage:MP updater
This option will simplify installation and update process of Rage:MP server files required to start your server
# Contribution
If you wish to help us in expanding examples selection with different framework you are very welcome to open PRs and Issues

View File

@ -18,19 +18,19 @@ export async function initProject() {
if (!framework) { if (!framework) {
framework = await select({ framework = await select({
message: c.gray('Select frontend:'), message: c.gray('Select front-end:'),
default: 'react-18', default: 'react-18',
loop: true, loop: true,
choices: [ choices: [
{ {
name: 'React + TypeScript (Vite)', name: 'React 18',
value: 'react-18', value: 'react-18',
description: 'React + TypeScript (Vite) as a frontend', description: 'React 18 + TypeScript (Vite) as a front-end',
}, },
], ],
}) })
} else { } else {
console.log(c.gray('Frontend:'), framework) console.log(c.gray('Front-end:'), framework)
} }
console.log( console.log(
@ -38,7 +38,7 @@ export async function initProject() {
folder, folder,
c.gray('with'), c.gray('with'),
framework, framework,
c.gray('as a frontend..'), c.gray('as a front-end..'),
) )
cloneBranch( cloneBranch(
@ -56,5 +56,6 @@ export async function initProject() {
}) })
.catch(e => { .catch(e => {
console.log(c.red('Error occured: \n', e)) console.log(c.red('Error occured: \n', e))
console.log(c.red('Please open an issue if you see this'))
}) })
} }

View File

@ -5,14 +5,14 @@ import { cloneBranch } from '../utils/cloner'
const choices = { const choices = {
'rpc-react-18': { 'rpc-react-18': {
name: 'Vite + React 18 + TypeScript', name: 'React 18',
value: 'rpc-react-18', value: 'rpc-react-18',
description: 'Vite + React 18 + TypeScript as a frontend', description: 'Vite + React 18 + TypeScript as a front-end',
}, },
'rpc-svelte-5': { 'rpc-svelte-5': {
name: 'Vite + Svelte 5 + TypeScript', name: 'Svelte 5',
value: 'rpc-svelte-5', value: 'rpc-svelte-5',
description: 'Vite + Svelte 5 + TypeScript as a frontend', description: 'Vite + Svelte 5 + TypeScript as a front-end',
}, },
} as const } as const
@ -31,13 +31,13 @@ export async function testRpc() {
if (!framework) { if (!framework) {
framework = await select({ framework = await select({
message: c.gray('Select frontend:'), message: c.gray('Select front-end:'),
default: 'rpc-react-18', default: 'rpc-react-18',
loop: true, loop: true,
choices: Object.values(choices), choices: Object.values(choices),
}) })
} else { } else {
console.log(c.gray('Frontend:'), framework) console.log(c.gray('Front-end:'), framework)
} }
console.log( console.log(
@ -63,5 +63,6 @@ export async function testRpc() {
}) })
.catch(e => { .catch(e => {
console.log(c.red('Error occured: \n', e)) console.log(c.red('Error occured: \n', e))
console.log(c.red('Please open an issue if you see this'))
}) })
} }

View File

@ -12,10 +12,19 @@ enum Actions {
UPDATER = 'UPDATER', UPDATER = 'UPDATER',
} }
process.on('exit', () => {
console.log(c.blueBright('\n\nRage FW CLI | Exiting..'))
process.exit(0)
})
process.on('SIGINT', () => {
console.log(c.blueBright('\n\nRage FW CLI | Exiting..'))
process.exit(0)
})
;(async () => { ;(async () => {
await checkForUpdates() await checkForUpdates()
console.log(c.blueBright('Rage FW CLI | Powered by Entity Seven Group <3')) console.log(c.blueBright('Rage FW CLI | Powered by Entity Seven Group <3'))
const action = await select({ const action = await select({
message: c.gray('Select action:'), message: c.gray('Select action:'),
@ -26,16 +35,16 @@ enum Actions {
description: 'Initialize a new project and start developing', description: 'Initialize a new project and start developing',
}, },
{ {
name: 'Test our RPC', name: 'Test our Rpc',
value: Actions.TEST_RPC, value: Actions.TEST_RPC,
description: description:
'Initialize a new skeleton project with our RPC set up', 'Initialize a new skeleton project with our Rpc all set',
}, },
{ {
name: 'Install RAGE:MP updater', name: 'Install RAGE:MP updater',
value: Actions.UPDATER, value: Actions.UPDATER,
description: description:
'Use our tool to download or update RAGE:MP server files in two clicks', 'Use our tool to download or update RAGE:MP server files in just two clicks',
}, },
], ],
loop: true, loop: true,
@ -53,5 +62,6 @@ enum Actions {
break break
default: default:
console.log(c.red('Something went wrong..')) console.log(c.red('Something went wrong..'))
console.log(c.red('Please open an issue if you see this'))
} }
})() })()