cli rework
This commit is contained in:
@@ -1,31 +1,11 @@
|
||||
import type { CommandModule, Argv, ArgumentsCamelCase } from 'yargs'
|
||||
import c from 'chalk'
|
||||
import { input, select } from '@inquirer/prompts'
|
||||
import clone from 'git-clone'
|
||||
import path from 'node:path'
|
||||
|
||||
import { checkForUpdate } from '../utils/update'
|
||||
|
||||
function builder(yargs: Argv) {
|
||||
return yargs
|
||||
.option('projectName', {
|
||||
alias: 'p',
|
||||
description: 'Name of the folder to scaffold a project to',
|
||||
type: 'string',
|
||||
demandOption: false,
|
||||
})
|
||||
.option('template', {
|
||||
alias: 't',
|
||||
description: 'Frontend framework to use for CEF',
|
||||
type: 'string',
|
||||
demandOption: false,
|
||||
})
|
||||
.middleware(async () => await checkForUpdate())
|
||||
}
|
||||
|
||||
async function handler(args: ArgumentsCamelCase) {
|
||||
let folder = (args.projectName as string) ?? args.p
|
||||
let framework = (args.template as string) ?? args.t
|
||||
export async function initProject() {
|
||||
let folder
|
||||
let framework
|
||||
|
||||
if (!folder) {
|
||||
folder = await input({
|
||||
@@ -84,13 +64,3 @@ async function handler(args: ArgumentsCamelCase) {
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
const init: CommandModule = {
|
||||
command: 'create [folderName] [template]',
|
||||
aliases: 'c',
|
||||
describe: 'Scaffold a template project using RageFW',
|
||||
builder,
|
||||
handler,
|
||||
}
|
||||
|
||||
export default init
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
import axios from 'axios'
|
||||
import * as fs from 'node:fs'
|
||||
|
||||
const latestReleases =
|
||||
'https://git.entityseven.com/api/v1/repos/entityseven/rage-server-downloader/releases?page=1&limit=1'
|
||||
|
||||
type Release = {
|
||||
id: number
|
||||
}
|
||||
|
||||
type Asset = {
|
||||
browser_download_url: string
|
||||
}
|
||||
|
||||
export async function downloadUpdater(): Promise<void> {
|
||||
const id = await getLatestReleaseID()
|
||||
|
||||
const latestAssets = `https://git.entityseven.com/api/v1/repos/entityseven/rage-server-downloader/releases/${id}/assets?page=1&limit=1`
|
||||
|
||||
axios.get<Asset[]>(latestAssets).then(async ({ data }) => {
|
||||
const downloadURL = data[0].browser_download_url
|
||||
|
||||
const file = await axios.get(data[0].browser_download_url, {
|
||||
responseType: 'arraybuffer',
|
||||
})
|
||||
const fileData = Buffer.from(file.data, 'binary')
|
||||
|
||||
const fileSplit = downloadURL.split('/')
|
||||
const fileName = fileSplit[fileSplit.length - 1]
|
||||
|
||||
fs.writeFileSync(`./${fileName}`, fileData)
|
||||
})
|
||||
}
|
||||
|
||||
async function getLatestReleaseID() {
|
||||
return axios.get<Release[]>(latestReleases).then(({ data }) => data[0].id)
|
||||
}
|
||||
Reference in New Issue
Block a user