@sodacore/create
Version:
Sodacore CLI project creation tool.
117 lines (116 loc) • 4 kB
JavaScript
// export function getFiles(packages: string[]) {
// return [
// {
// package: '@sodacore/core@alpha',
// path: './src/main.ts',
// content: `
// import { Application } from '@sodacore/core';
// import { env } from 'bun';
// ${packages.includes('@sodacore/http@alpha') ? `import HttpPlugin from '@sodacore/http';` : '/*REMOVE*/'}
// ${packages.includes('@sodacore/discord@alpha') ? `import DiscordPlugin from '@sodacore/discord';` : '/*REMOVE*/'}
// ${packages.includes('@sodacore/prisma@alpha') ? `import PrismaPlugin from '@sodacore/prisma';` : '/*REMOVE*/'}
// ${packages.includes('@sodacore/cli@alpha') ? `import CliPlugin from '@sodacore/cli';` : '/*REMOVE*/'}
// \n// Initialise application.
// const app = new Application({
// autowire: true,
// });
// ${packages.includes('@sodacore/http@alpha') ? `\n// Install the HTTP plugin.\napp.use(new HttpPlugin({\n\tport: 3110,\n}));` : '/*REMOVE*/'}
// ${packages.includes('@sodacore/discord@alpha') ? `\n// Install the Discord plugin.\napp.use(new DiscordPlugin({\n\ttoken: env.DISCORD_TOKEN,\n\tclientId: env.DISCORD_CLIENT_ID,\n\tguildId: env.DISCORD_GUILD_ID,\n}));` : '/*REMOVE*/'}
// ${packages.includes('@sodacore/prisma@alpha') ? `\n// Install the Prisma plugin.\napp.use(new PrismaPlugin());` : '/*REMOVE*/'}
// ${packages.includes('@sodacore/cli@alpha') ? `\n// Install the CLI plugin.\napp.use(new CliPlugin({\n\tport: env.CLI_PORT,\n\thost: env.CLI_HOST,\n\tpass: env.CLI_PASS\n}));'` : '/*REMOVE*/'}
// \n// Start the application.
// app.start().catch(console.error);
// `.trim().replaceAll('\n/*REMOVE*/', ''),
// },
// {
// package: '@sodacore/core@alpha',
// path: './tsconfig.json',
// content: `
// {
// "compilerOptions": {
export {};
// // Enable latest features
// "lib": ["ESNext"],
// "target": "ESNext",
// "module": "ESNext",
// "moduleDetection": "force",
// "jsx": "react-jsx",
// "allowJs": true,
// // Bundler mode
// "moduleResolution": "bundler",
// "allowImportingTsExtensions": true,
// "verbatimModuleSyntax": true,
// "noEmit": true,
// // Best practices
// "strict": true,
// "skipLibCheck": true,
// "noFallthroughCasesInSwitch": true,
// // Some stricter flags (disabled by default)
// "noUnusedLocals": true,
// "noUnusedParameters": true,
// "noPropertyAccessFromIndexSignature": false,
// // Build.
// "declaration": true,
// "declarationMap": true,
// "esModuleInterop": true,
// // Decorators.
// "experimentalDecorators": true,
// "emitDecoratorMetadata": true,
// "useDefineForClassFields": false,
// }
// }
// `,
// },
// {
// package: '@sodacore/http@alpha',
// path: './src/controller/http.ts',
// content: `
// import { Controller, Get } from '@sodacore/http';
// @Controller('/')
// export class HomeController {
// @Get('/')
// public async index() {
// return 'Hello world!';
// }
// }
// `,
// },
// {
// package: '@sodacore/discord@alpha',
// path: './src/command/home.ts',
// content: `
// import { Command, Interaction, On, SlashCommandBuilder } from '@sodacore/discord';
// import { ChatInputCommandInteraction } from 'discord.js';
// @Command(
// new SlashCommandBuilder()
// .setName('ping')
// .setDescription('Ping the bot!'),
// )
// export class PingCommand {
// @On.Command()
// public async onCommand(@Interaction() interaction: ChatInputCommandInteraction) {
// await interaction.reply('Pong!');
// }
// }
// `,
// },
// {
// package: '@sodacore/discord@alpha',
// path: './src/providers/discord.ts',
// content: `
// import { SlashCommandProvider } from '@sodacore/discord';
// import { Provide, Inject } from '@sodacore/di';
// @Provide()
// export class DiscordProvider {
// @Inject() private slashCommands!: SlashCommandProvider;
// public async register() {
// await this.slashCommands.register();
// }
// public async unregister() {
// await this.slashCommands.unregister();
// }
// }
// `,
// },
// ];
// }