create-l3-app
Advanced tools
Comparing version 1.0.8 to 1.0.9
87
bin.js
@@ -5,2 +5,3 @@ #!/usr/bin/env Node | ||
const { spawn, exec } = require('child_process'); | ||
const fs = require('fs'); | ||
@@ -36,5 +37,9 @@ const rl = readline.createInterface({ | ||
function createProject(projectName) { | ||
let PROJECT_NAME = ''; | ||
let WEB_PORT = 5170; | ||
let API_PORT = 3001; | ||
function createProject() { | ||
return new Promise(resolve => { | ||
const process = spawn('git', ['clone', 'https://github.com/lukeb06/create-l3-app', `./${projectName}`, '--depth', '1']); | ||
const process = spawn('git', ['clone', 'https://github.com/lukeb06/create-l3-app', `./${PROJECT_NAME}`, '--depth', '1']); | ||
@@ -49,4 +54,4 @@ process.on('close', code => { | ||
return new Promise(resolve => { | ||
exec(command, (error, stdout, stderr) => { | ||
resolve(error); | ||
exec(`cd ${PROJECT_NAME} && ${command}`, () => { | ||
resolve(); | ||
}); | ||
@@ -56,18 +61,57 @@ }); | ||
async function removeDefaultGit(projectName) { | ||
return await runCommand(`cd ${projectName} && rm -rf .git`); | ||
async function removeDefaultGit() { | ||
return await runCommand('rm -rf .git && rm README.md'); | ||
} | ||
async function createNewGit(projectName) { | ||
return await runCommand(`cd ${projectName} && git init`); | ||
async function createNewGit() { | ||
return await runCommand('git init'); | ||
} | ||
async function installDeps(projectName) { | ||
return await runCommand(`cd ${projectName} && bun install`); | ||
async function installDeps() { | ||
return await runCommand('bun install'); | ||
} | ||
async function initialCommit(projectName) { | ||
return await runCommand(`cd ${projectName} && git add . && git commit -m "Initialized with create-l3-app"`); | ||
async function initialCommit() { | ||
return await runCommand('git add . && git commit -m "Initialized with create-l3-app"'); | ||
} | ||
function replaceInFile(file, search, replace) { | ||
return new Promise((resolve, reject) => { | ||
fs.readFile(`./${PROJECT_NAME}/file`, 'utf8', (err, data) => { | ||
if (err) return reject(err); | ||
const newContent = data.replaceAll(search, replace); | ||
fs.writeFile(`./${PROJECT_NAME}/file`, newContent, 'utf8', err => { | ||
if (err) return reject(err); | ||
resolve(); | ||
}); | ||
}); | ||
}); | ||
} | ||
function createFile(file, content) { | ||
return new Promise((resolve, reject) => { | ||
fs.writeFile(`./${PROJECT_NAME}/${file}`, content, 'utf8', err => { | ||
if (err) return reject(err); | ||
resolve(); | ||
}); | ||
}); | ||
} | ||
async function rewritePackageJSON() { | ||
await replaceInFile('package.json', 'create-l3-app', PROJECT_NAME); | ||
await replaceInFile('package.json', '-p 5170', `-p ${WEB_PORT}`) | ||
} | ||
async function rewriteServerPort() { | ||
await createFile('.env', `PORT=${API_PORT}`); | ||
await replaceInFile('src/lib/api.ts', '3001', API_PORT); | ||
await replaceInFile('src/hooks/use-api.ts', '3001', API_PORT); | ||
} | ||
async function createREADME() { | ||
await createFile('README.md', `# ${PROJECT_NAME}\n\nCreated with [create-l3-app](https://github.com/lukeb06/create-l3-app)`); | ||
} | ||
async function main() { | ||
@@ -78,11 +122,20 @@ const projectName = await getProjectName(); | ||
PROJECT_NAME = projectName; | ||
WEB_PORT = webPort; | ||
API_PORT = apiPort; | ||
console.log('Creating project...'); | ||
await createProject(projectName); | ||
await removeDefaultGit(projectName); | ||
await createNewGit(projectName); | ||
await createProject(); | ||
await removeDefaultGit(); | ||
await createNewGit(); | ||
console.log('Installing dependencies...'); | ||
await installDeps(projectName); | ||
await initialCommit(projectName); | ||
await installDeps(); | ||
await rewritePackageJSON(); | ||
await rewriteServerPort(); | ||
await createREADME(); | ||
await initialCommit(); | ||
console.log('Project created!'); | ||
@@ -89,0 +142,0 @@ |
{ | ||
"name": "create-l3-app", | ||
"version": "1.0.8", | ||
"version": "1.0.9", | ||
"bin": { | ||
@@ -5,0 +5,0 @@ "create-l3-app": "bin.js" |
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
3622
112
2