leds-spark-lib
Version:
Biblioteca de geração de código
114 lines (108 loc) • 4.55 kB
JavaScript
import fs from "fs";
import { createPath } from "../../../util/generator-utils.js";
import { expandToString } from "../../../util/template-string.js";
import path from "path";
import { generate as generateAPI } from "./api/generate.js";
import { generate as generateAssets } from "./assets/generate.js";
import { generate as generateComponents } from "./components/generate.js";
import { generate as generateIcons } from "./components/icons/generate.js";
import { generate as generateSidenav } from "./components/sidenav/generate.js";
import { generate as generateLayouts } from "./layouts/generate.js";
import { generate as generateModules } from "./modules/generate.js";
import { generate as generatePlugins } from "./plugins/generate.js";
import { generate as generateRoutes } from "./routes/generate.js";
import { generate as generateStores } from "./stores/generate.js";
import { generate as generateTypes } from "./types/generate.js";
import { generate as generateViews } from "./views/generate.js";
import { generate as generateUtils } from "./utils/generate.js";
export function generate(project_abstraction, target_folder) {
const src_folder = createPath(target_folder, "src");
const api_folder = createPath(src_folder, "api");
const assets_folder = createPath(src_folder, "assets");
const components_folder = createPath(src_folder, "components");
const icons_folder = createPath(components_folder, "icons");
const sidenav_folder = createPath(components_folder, "sidenav");
const layouts_folder = createPath(src_folder, "layouts");
const modules_folder = createPath(src_folder, "modules");
const plugins_folder = createPath(src_folder, "plugins");
const routes_folder = createPath(src_folder, "routes");
const stores_folder = createPath(src_folder, "stores");
const types_folder = createPath(src_folder, "types");
const views_folder = createPath(src_folder, "views");
const util_folder = createPath(src_folder, "utils");
fs.mkdirSync(src_folder, { recursive: true });
fs.mkdirSync(api_folder, { recursive: true });
fs.mkdirSync(assets_folder, { recursive: true });
fs.mkdirSync(components_folder, { recursive: true });
fs.mkdirSync(icons_folder, { recursive: true });
fs.mkdirSync(sidenav_folder, { recursive: true });
fs.mkdirSync(layouts_folder, { recursive: true });
fs.mkdirSync(modules_folder, { recursive: true });
fs.mkdirSync(plugins_folder, { recursive: true });
fs.mkdirSync(routes_folder, { recursive: true });
fs.mkdirSync(stores_folder, { recursive: true });
fs.mkdirSync(types_folder, { recursive: true });
fs.mkdirSync(views_folder, { recursive: true });
fs.mkdirSync(util_folder, { recursive: true });
fs.writeFileSync(path.join(src_folder, 'App.vue'), generateApp());
fs.writeFileSync(path.join(src_folder, 'main.ts'), generateMain());
// Estrutura dos Geradores do FrontEnd
// |- api
// |- assets
// |- components
// | |- icons
// | |- sidenav
// |- layouts
// |- modules
// | |- [classe] (OBS: Uma pasta por classe no project_abstractiono)
// | | |- api
// | | |- controllers
// | | |- routes
// | | |- types
// | | |- views
// |- plugins
// |- routes
// |- stores
// |- types
// |- utils
// |- views
generateAPI(project_abstraction, api_folder);
generateAssets(project_abstraction, assets_folder);
generateComponents(project_abstraction, components_folder);
generateIcons(project_abstraction, icons_folder);
generateSidenav(project_abstraction, sidenav_folder);
generateLayouts(project_abstraction, layouts_folder);
generateModules(project_abstraction, modules_folder);
generatePlugins(project_abstraction, plugins_folder);
generateRoutes(project_abstraction, routes_folder);
generateStores(project_abstraction, stores_folder);
generateTypes(project_abstraction, types_folder);
generateViews(project_abstraction, views_folder);
generateUtils(project_abstraction, util_folder);
}
function generateApp() {
return expandToString `
<template>
<RouterView />
</template>
`;
}
function generateMain() {
return expandToString `
/**
* main.ts
*
* Bootstraps Vuetify and other plugins then mounts the App
*/
// Plugins
import { registerPlugins } from '@/plugins'
// Components
import App from './App.vue'
// Composables
import { createApp } from 'vue'
const app = createApp(App)
registerPlugins(app)
app.mount('#app')
`;
}
//# sourceMappingURL=generate.js.map