Skip to content

Commit

Permalink
🚀 code optimisation
Browse files Browse the repository at this point in the history
  • Loading branch information
abdrahmanES1 committed Nov 13, 2023
1 parent 1136b0f commit aea7ef4
Show file tree
Hide file tree
Showing 9 changed files with 49 additions and 176 deletions.
10 changes: 3 additions & 7 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
#!/usr/bin/env node
import commander, { Command } from "commander";
import createApp from '../util/createAppv2'
const figlet = require("figlet");
import chalk from "chalk";
import cliSelect from "cli-select";
import packageJson from '../package.json'
import createApp from '../util/createApp'
import createResources from "../util/createResources";
import createResource from "../util/createResourcev2";
import createResource from "../util/createResource";


const program = new Command();
Expand Down Expand Up @@ -57,13 +57,9 @@ program.command('new')

});





program.command('g')
.description("Generate new App Resource controller, model, middleware, route, resource")
.addArgument(new commander.Argument('<file-type>', 'file type Controller Service').choices(['controller', 'model', 'middleware', "route", "resource", "view"]))
.addArgument(new commander.Argument('<file-type>', 'file type Controller Service').choices(['controller', 'model', 'middleware', "route", "resource", "config"]))
.argument('<file-name>', 'file name ex. users ')
.action((fileType, fileName, options) => {
if (fileType == "resource") {
Expand Down
48 changes: 25 additions & 23 deletions util/createApp.ts
Original file line number Diff line number Diff line change
@@ -1,32 +1,34 @@
import { exec } from "child_process";
import createResource from './createResource'
import { mkdir, writeFile } from "fs/promises";
import chalk from "chalk";
import { appTemplate, indexTemplate, errorMiddlewareTemplate } from '../templates/js'
import projectStructure from './projectStructure'
import createFiles from './createFilev2'
import { DirectoryStructure } from "../types";
import { appTemplate, indexTemplate, errorMiddlewareTemplate } from "../templates/js"
import createDirectory from "./createDirectory"
import createFile from "./createFile"
import createResources from "./createResources";

export default async (appName: string, options: any, callback: Function) => {

export default async (appName: string, options: any) => {
const getFilesExtention = (options: any) => options?.typescript ? ".ts" : ".js";

try {
// Create Directories

await createDirectory(`${appName}`)
await createDirectory(`${appName}/src`)
await createDirectory(`${appName}/src/controllers`)
await createDirectory(`${appName}/src/middlewares`)
await createDirectory(`${appName}/src/models`)
await createDirectory(`${appName}/src/routes`)
await createDirectory(`${appName}/configs`)
await createDirectory(`${appName}/public`)

// Create files

await createResources(appName, "users", options)
await createFile(`${appName}/src/middlewares/error.middleware${getFilesExtention(options)}`, errorMiddlewareTemplate())
await createFile(`${appName}/index${getFilesExtention(options)}`, indexTemplate());
await createFile(`${appName}/src/app${getFilesExtention(options)}`, appTemplate());
await exec(`cd ${appName} && npm init -y`)


// await mkdir(`${appName}`)
// await mkdir(`${appName}/src`)
// await mkdir(`${appName}/src/controllers`)
// await mkdir(`${appName}/src/middlewares`)
// await mkdir(`${appName}/src/models`)
// await mkdir(`${appName}/src/routes`)
// await mkdir(`${appName}/config`)
// await exec(`cd ${appName} && touch index${getFilesExtention(options)}`)
// await exec(`cd ${appName}/src && touch app${getFilesExtention(options)}`)
// await exec(`cd ${appName} && npm init -y`)
// await createResource(appName, "users", options)
// await writeFile(`${appName}/src/app${getFilesExtention(options)}`, appTemplate())
// await writeFile(`${appName}/index${getFilesExtention(options)}`, indexTemplate())
// await writeFile(`${appName}/src/middlewares/error.middleware${getFilesExtention(options)}`, errorMiddlewareTemplate())
// callback()
} catch (error: any) {
console.log(chalk.red("🚨 " + error.message));
return
Expand Down
40 changes: 0 additions & 40 deletions util/createAppv2.ts

This file was deleted.

24 changes: 11 additions & 13 deletions util/createFile.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
import chalk from "chalk";
import { existsSync } from "fs";
import { writeFile } from "fs/promises";
import { existsSync } from "fs";
export default async (filePath: string, fileContent = "") => {

export default async (appName: string, fileType: string, fileName: string, options: any, fileContent = "") => {
const getFilesExtention = (options: any) => options?.typescript ? ".ts" : ".js";

if(existsSync(`${appName}/src/${fileType}s`)){
await writeFile(`${appName}/src/${fileType}s/${fileName}.${fileType}${getFilesExtention(options)}`, fileContent).then(() => {
console.log(chalk.green(`🚀 CREATE /src/${fileType}s/${fileName}.${fileType}${getFilesExtention(options)}`));
if (!await existsSync(filePath)) {
await writeFile(filePath, fileContent).then(() => {
console.log(chalk.green(`🚀 CREATE ${filePath}`));
}).catch((err) => {
console.log(chalk.bgRed(`${err}`));
console.log(chalk.red(`🚨 FAILED ${filePath}`));
console.log(chalk.red(`🚦 Initilize Project first`));
})
}else
{
console.log(chalk.red(`🚨 FAILED /src/${fileType}s/${fileName}.${fileType}${getFilesExtention(options)}`));
console.log(chalk.red(`🚦 Initilize Project first`));
return
}



}
17 changes: 0 additions & 17 deletions util/createFilev2.ts

This file was deleted.

35 changes: 9 additions & 26 deletions util/createResource.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,11 @@

import createFile from './createFile'
import { routeTemplate, controllerTemplate } from '../templates/js'
import { existsSync } from 'fs'
import chalk from 'chalk'

export default async (appName: string, fileName: string, options: any) => {

if (existsSync(`${appName}/src`)) {
await Promise.race(
[
createFile(appName, "controller", fileName, options, controllerTemplate(fileName)),
createFile(appName, "middleware", fileName, options),
createFile(appName, "model", fileName, options),
createFile(appName, "route", fileName, options, routeTemplate(fileName)),
// createFile(appName, "view", fileName, options),
]
)
import createFile from "./createFile";
export default async (appName: string, fileType: string, fileName: string, options: any, fileContent = "") => {
const getFilesExtention = (options: any) => options?.typescript ? ".ts" : ".js";

if (fileType == "config") {
await createFile(`${appName}/${fileType}s/${fileName}.${fileType}${getFilesExtention(options)}`, fileContent)
} else {
console.log(chalk.red(`🚨 FAILED Creating Resource`));
console.log(chalk.underline.cyan(`🚦 Initilize Project first`));
return
await createFile(`${appName}/src/${fileType}s/${fileName}.${fileType}${getFilesExtention(options)}`, fileContent)
}

}




}
2 changes: 1 addition & 1 deletion util/createResources.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { routeTemplate, controllerTemplate } from '../templates/js'
import { existsSync } from 'fs'
import chalk from 'chalk'
import createResource from './createResourcev2'
import createResource from './createResource'

export default async (appName: string, fileName: string, options: any) => {
if (existsSync(`${appName}/src`)) {
Expand Down
12 changes: 0 additions & 12 deletions util/createResourcev2.ts

This file was deleted.

37 changes: 0 additions & 37 deletions util/projectStructure.ts

This file was deleted.

0 comments on commit aea7ef4

Please sign in to comment.