68 lines
1.8 KiB
TypeScript
68 lines
1.8 KiB
TypeScript
import c from 'chalk'
|
|
import { input, select } from '@inquirer/prompts'
|
|
import path from 'node:path'
|
|
import { cloneBranch } from '../utils/cloner'
|
|
|
|
const choices = {
|
|
'rpc-react-18': {
|
|
name: 'Vite + React 18 + TypeScript',
|
|
value: 'rpc-react-18',
|
|
description: 'Vite + React 18 + TypeScript as a frontend',
|
|
},
|
|
'rpc-svelte-5': {
|
|
name: 'Vite + Svelte 5 + TypeScript',
|
|
value: 'rpc-svelte-5',
|
|
description: 'Vite + Svelte 5 + TypeScript as a frontend',
|
|
},
|
|
} as const
|
|
|
|
export async function testRpc() {
|
|
let folder
|
|
let framework
|
|
|
|
if (!folder) {
|
|
folder = await input({
|
|
message: c.gray('Enter project name:'),
|
|
default: 'rage-fw-rpc-example',
|
|
})
|
|
} else {
|
|
console.log(c.gray('Project name:'), folder)
|
|
}
|
|
|
|
if (!framework) {
|
|
framework = await select({
|
|
message: c.gray('Select frontend:'),
|
|
default: 'rpc-react-18',
|
|
loop: true,
|
|
choices: Object.values(choices),
|
|
})
|
|
} else {
|
|
console.log(c.gray('Frontend:'), framework)
|
|
}
|
|
|
|
console.log(
|
|
c.gray('\nScaffolding template project into'),
|
|
folder,
|
|
c.gray('with'),
|
|
choices[framework].name,
|
|
c.gray('as a frontend..'),
|
|
)
|
|
|
|
cloneBranch(
|
|
'https://git.entityseven.com/entityseven/rage-framework-example',
|
|
path.join(process.cwd(), folder),
|
|
framework,
|
|
)
|
|
.then(() => {
|
|
console.log(c.gray('Scaffolded project into'), folder)
|
|
console.log(
|
|
c.gray(
|
|
`Project was created at dir: ${path.join(process.cwd(), folder)}`,
|
|
),
|
|
)
|
|
})
|
|
.catch(e => {
|
|
console.log(c.red('Error occured: \n', e))
|
|
})
|
|
}
|