@dolphjs/cli 1.1.11 โ†’ 1.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,11 @@
1
1
  import { existsSync, mkdirSync, writeFile } from "fs";
2
2
  import path from "path";
3
3
  import chalk from "chalk";
4
+ import { promisify } from "util";
4
5
  import { readConfig } from "../utils/read_user_config_path.js";
5
6
  import { resolveControllerContent } from "./resolvers/resolve_controller_content.js";
6
7
  import { generateController as generateSpringController } from "./spring/generate_spring_controller.js";
8
+ const writeFileAsync = promisify(writeFile);
7
9
  const createControllerDirectory = () => {
8
10
  const projectRoot = path.join(process.cwd());
9
11
  const userControllerFilePath = path.join(projectRoot, "/src/controllers");
@@ -11,36 +13,30 @@ const createControllerDirectory = () => {
11
13
  mkdirSync(userControllerFilePath);
12
14
  }
13
15
  };
14
- // removed other possible dirs to enforce dolphjs style guide
15
16
  const findControllerDirectory = () => {
16
17
  const rootDir = process.cwd();
17
- const possibleDirs = [
18
- "/src/controllers",
19
- // "/src/Controllers",
20
- // "/src/controller",
21
- // "/src/Controller",
22
- // "/Controller",
23
- // "/Controllers",
24
- // "/controllers",
25
- // "/controller",
26
- ];
18
+ const possibleDirs = ["/src/controllers"];
27
19
  const controllerDir = possibleDirs.find((dir) => existsSync(path.join(rootDir, dir)));
28
20
  return controllerDir ? path.join(rootDir, controllerDir) : null;
29
21
  };
30
22
  export const generateControllerFile = async (name, controllerDir, readConfig) => {
31
- await writeFile(controllerDir, resolveControllerContent(readConfig, name), (error) => {
32
- if (error) {
33
- console.log(chalk.bold(chalk.red(error.toString())));
34
- }
35
- });
23
+ try {
24
+ await writeFileAsync(controllerDir, resolveControllerContent(readConfig, name));
25
+ console.log(`${chalk.bold(chalk.green(`${name}.controller.${readConfig().language} generated successfully! ๐Ÿ™ƒ`))}`);
26
+ }
27
+ catch (error) {
28
+ console.log(chalk.bold(chalk.red(error.toString())));
29
+ }
36
30
  };
37
31
  export const generateController = async (name) => {
38
32
  if (readConfig().routing === "spring") {
39
- generateSpringController(name);
33
+ await generateSpringController(name);
40
34
  }
41
35
  else {
42
- if (!name)
43
- chalk.bold(chalk.red("Controller extension or name is required! ๐Ÿคจ"));
36
+ if (!name) {
37
+ console.log(chalk.bold(chalk.red("Controller extension or name is required! ๐Ÿคจ")));
38
+ return;
39
+ }
44
40
  let controllerDir = findControllerDirectory();
45
41
  if (!controllerDir) {
46
42
  createControllerDirectory();
@@ -49,18 +45,13 @@ export const generateController = async (name) => {
49
45
  const controllerDirName = path.join(controllerDir, name);
50
46
  const controllerFilePath = path.join(controllerDirName + `/${name}.controller.${readConfig().language}`);
51
47
  try {
52
- // Create the generate controller path
53
48
  if (readConfig().generateFolder === "true" || true) {
54
49
  mkdirSync(controllerDirName);
55
50
  }
56
- //TODO: if no index.ts file, create one too
57
- generateControllerFile(name, path.join(controllerFilePath), readConfig
58
- // controllerDirName,
59
- );
51
+ await generateControllerFile(name, path.join(controllerFilePath), readConfig);
60
52
  }
61
53
  catch (e) {
62
54
  console.log(chalk.bold(chalk.red(e)));
63
55
  }
64
- console.log(`${chalk.bold(chalk.green(`${name}.controller.${readConfig().language} generated successfully! ๐Ÿ™ƒ`))}`);
65
56
  }
66
57
  };
@@ -1,9 +1,11 @@
1
1
  import { existsSync, mkdirSync, writeFile } from "fs";
2
2
  import path from "path";
3
3
  import chalk from "chalk";
4
+ import { promisify } from "util";
4
5
  import { readConfig } from "../utils/read_user_config_path.js";
5
6
  import { resolveModelContent } from "./resolvers/resolve_model_content.js";
6
7
  import { generateModel as generateSpringModel } from "./spring/generate_spring_model.js";
8
+ const writeFileAsync = promisify(writeFile);
7
9
  const createModelDirectory = () => {
8
10
  const projectRoot = path.join(process.cwd());
9
11
  const userModelFilePath = path.join(projectRoot, "/src/models");
@@ -11,57 +13,43 @@ const createModelDirectory = () => {
11
13
  mkdirSync(userModelFilePath);
12
14
  }
13
15
  };
14
- // removed other possible dirs to enforce dolphjs style guide
15
16
  const findModelDirectory = () => {
16
17
  const rootDir = process.cwd();
17
- const possibleDirs = [
18
- "/src/models",
19
- // "/src/Models",
20
- // "/src/model",
21
- // "/src/Model",
22
- // "/Models",
23
- // "/Model",
24
- // "/models",
25
- // "/model",
26
- ];
18
+ const possibleDirs = ["/src/models"];
27
19
  const modelDir = possibleDirs.find((dir) => existsSync(path.join(rootDir, dir)));
28
20
  return modelDir ? path.join(rootDir, modelDir) : null;
29
21
  };
30
22
  export const generateModelFile = async (name, modelDir, readConfig) => {
31
- await writeFile(modelDir, resolveModelContent(readConfig, name), (error) => {
32
- if (error) {
33
- console.log(chalk.bold(chalk.red(error.toString())));
34
- }
35
- });
23
+ try {
24
+ await writeFileAsync(modelDir, resolveModelContent(readConfig, name));
25
+ console.log(`${chalk.bold(chalk.green(`${name}.model.${readConfig().language} generated successfully! ๐Ÿ™ƒ`))}`);
26
+ }
27
+ catch (error) {
28
+ console.log(chalk.bold(chalk.red(error.toString())));
29
+ }
36
30
  };
37
31
  export const generateModel = async (name) => {
38
32
  if (readConfig().routing === "spring") {
39
- generateSpringModel(name, readConfig().database === "mongo" ? true : false, readConfig().database === "mysql" ? true : false);
33
+ await generateSpringModel(name, readConfig().database === "mongo" ? true : false, readConfig().database === "mysql" ? true : false);
40
34
  }
41
35
  else {
42
- if (!name)
43
- chalk.bold(chalk.red("Model extension or name is required! ๐Ÿคจ"));
36
+ if (!name) {
37
+ console.log(chalk.bold(chalk.red("Model extension or name is required! ๐Ÿคจ")));
38
+ return;
39
+ }
44
40
  let modelDir = findModelDirectory();
45
41
  if (!modelDir) {
46
- //TODO: create one if it doesn't exist
47
- // console.log(chalk.bold(chalk.red("Model directory doesn't exist ๐Ÿคจ")));
48
- // return;
49
42
  createModelDirectory();
50
43
  modelDir = findModelDirectory();
51
44
  }
52
45
  const modelDirName = path.join(modelDir, name);
53
46
  const modelFilePath = path.join(modelDirName + `/${name}.model.${readConfig().language}`);
54
47
  try {
55
- // Create the generate controller path
56
48
  mkdirSync(modelDirName);
57
- //TODO: if no index.ts file, create one too
58
- generateModelFile(name, path.join(modelFilePath), readConfig
59
- // modelDirName,
60
- );
49
+ await generateModelFile(name, path.join(modelFilePath), readConfig);
61
50
  }
62
51
  catch (e) {
63
52
  console.log(chalk.bold(chalk.red(e)));
64
53
  }
65
- console.log(`${chalk.bold(chalk.green(`${name}.model.${readConfig().language} generated successfully! ๐Ÿ™ƒ`))}`);
66
54
  }
67
55
  };
@@ -1,8 +1,11 @@
1
1
  import { existsSync, mkdirSync, writeFile } from "fs";
2
2
  import path from "path";
3
3
  import chalk from "chalk";
4
+ import { promisify } from "util";
4
5
  import { readConfig } from "../utils/read_user_config_path.js";
5
6
  import { resolveMySqlContent } from "./resolvers/resolve_model_content.js";
7
+ import { generateConfig as generateSpringConfig } from "./spring/generate_spring_mysql.js";
8
+ const writeFileAsync = promisify(writeFile);
6
9
  const createConfigDirectory = () => {
7
10
  const projectRoot = path.join(process.cwd());
8
11
  const userConfigFilePath = path.join(projectRoot, "/src/configs");
@@ -10,54 +13,42 @@ const createConfigDirectory = () => {
10
13
  mkdirSync(userConfigFilePath);
11
14
  }
12
15
  };
13
- // removed other possible dirs to enforce dolphjs style guide
14
16
  const findConfigDirectory = () => {
15
17
  const rootDir = process.cwd();
16
- const possibleDirs = [
17
- // "/src/Configs",
18
- // "/src/Config",
19
- "/src/configs",
20
- // "/src/config",
21
- // "/Configs",
22
- // "/configs",
23
- // "/config",
24
- // "/Config",
25
- ];
18
+ const possibleDirs = ["/src/configs"];
26
19
  const configDir = possibleDirs.find((dir) => existsSync(path.join(rootDir, dir)));
27
20
  return configDir ? path.join(rootDir, configDir) : null;
28
21
  };
29
22
  export const generateConfigFile = async (name, configDir, readConfig) => {
30
- await writeFile(configDir, resolveMySqlContent(readConfig), (error) => {
31
- if (error) {
32
- console.log(chalk.bold(chalk.red(error.toString())));
33
- }
34
- });
23
+ try {
24
+ await writeFileAsync(configDir, resolveMySqlContent(readConfig));
25
+ console.log(`${chalk.bold(chalk.green(`db.config.${readConfig().language} generated successfully! ๐Ÿ™ƒ`))}`);
26
+ }
27
+ catch (error) {
28
+ console.log(chalk.bold(chalk.red(error.toString())));
29
+ }
35
30
  };
36
31
  export const generateConfig = async (name) => {
37
- if (!name)
38
- chalk.bold(chalk.red("Config extension or name is required! ๐Ÿคจ"));
39
- let configDir = findConfigDirectory();
40
- if (!configDir) {
41
- //TODO: create one if it doesn't exist
42
- // console.log(chalk.bold(chalk.red("Config directory doesn't exist ๐Ÿคจ")));
43
- // return;
44
- createConfigDirectory();
45
- configDir = findConfigDirectory();
32
+ if (!name) {
33
+ console.log(chalk.bold(chalk.red("Config extension or name is required! ๐Ÿคจ")));
34
+ return;
46
35
  }
47
- const configDirName = configDir;
48
- const configFilePath = path.join(configDirName + `/db.configs.${readConfig().language}`);
49
- try {
50
- // Create the generate controller path
51
- // if (readConfig().generateFolder === "true" || true) {
52
- // mkdirSync(configDirName);
53
- // }
54
- //TODO: if no index.ts file, create one too
55
- generateConfigFile(name, path.join(configFilePath), readConfig
56
- // configDirName,
57
- );
36
+ if (readConfig().routing === "spring") {
37
+ await generateSpringConfig(name);
58
38
  }
59
- catch (e) {
60
- console.log(chalk.bold(chalk.red(e)));
39
+ else {
40
+ let configDir = findConfigDirectory();
41
+ if (!configDir) {
42
+ createConfigDirectory();
43
+ configDir = findConfigDirectory();
44
+ }
45
+ const configDirName = configDir;
46
+ const configFilePath = path.join(configDirName + `/db.configs.${readConfig().language}`);
47
+ try {
48
+ await generateConfigFile(name, path.join(configFilePath), readConfig);
49
+ }
50
+ catch (e) {
51
+ console.log(chalk.bold(chalk.red(e)));
52
+ }
61
53
  }
62
- console.log(`${chalk.bold(chalk.green(`db.config.${readConfig().language} generated successfully! ๐Ÿ™ƒ`))}`);
63
54
  };
@@ -1,8 +1,10 @@
1
1
  import { existsSync, mkdirSync, writeFile } from "fs";
2
2
  import path from "path";
3
3
  import chalk from "chalk";
4
+ import { promisify } from "util";
4
5
  import { readConfig } from "../utils/read_user_config_path.js";
5
6
  import { resolveRoutesContent } from "./resolvers/resolve_routes_content.js";
7
+ const writeFileAsync = promisify(writeFile);
6
8
  const createRoutesDirectory = () => {
7
9
  const projectRoot = path.join(process.cwd());
8
10
  const userRoutesFilePath = path.join(projectRoot, "/src/routes");
@@ -10,50 +12,40 @@ const createRoutesDirectory = () => {
10
12
  mkdirSync(userRoutesFilePath);
11
13
  }
12
14
  };
13
- // removed other possible dirs to enforce dolphjs style guide
14
15
  const findRoutesDirectory = () => {
15
16
  const rootDir = process.cwd();
16
- const possibleDirs = [
17
- "/src/routes",
18
- // "/src/Routes",
19
- // "/Routes",
20
- // "/routes"
21
- ];
17
+ const possibleDirs = ["/src/routes"];
22
18
  const routesDir = possibleDirs.find((dir) => existsSync(path.join(rootDir, dir)));
23
19
  return routesDir ? path.join(rootDir, routesDir) : null;
24
20
  };
25
21
  export const generateRoutesFile = async (name, routesDir, readConfig) => {
26
- await writeFile(routesDir, resolveRoutesContent(readConfig, name), (error) => {
27
- if (error) {
28
- console.log(chalk.bold(chalk.red(error.toString())));
29
- }
30
- });
22
+ try {
23
+ await writeFileAsync(routesDir, resolveRoutesContent(readConfig, name));
24
+ console.log(`${chalk.bold(chalk.green(`${name}.routes.${readConfig().language} generated successfully! ๐Ÿ™ƒ`))}`);
25
+ }
26
+ catch (error) {
27
+ console.log(chalk.bold(chalk.red(error.toString())));
28
+ }
31
29
  };
32
30
  export const generateRouter = async (name) => {
33
- if (!name)
34
- chalk.bold(chalk.red("Routes extension or name is required! ๐Ÿคจ"));
31
+ if (!name) {
32
+ console.log(chalk.bold(chalk.red("Routes extension or name is required! ๐Ÿคจ")));
33
+ return;
34
+ }
35
35
  let routesDir = findRoutesDirectory();
36
36
  if (!routesDir) {
37
- //TODO: create one if it doesn't exist
38
- // console.log(chalk.bold(chalk.red("routes directory doesn't exist ๐Ÿคจ")));
39
- // return;
40
37
  createRoutesDirectory();
41
38
  routesDir = findRoutesDirectory();
42
39
  }
43
40
  const routesDirName = path.join(routesDir, name);
44
41
  const routesFilePath = path.join(routesDirName + `/${name}.routes.${readConfig().language}`);
45
42
  try {
46
- // Create the generate controller path
47
43
  if (readConfig().generateFolder === "true" || true) {
48
44
  mkdirSync(routesDirName);
49
45
  }
50
- //TODO: if no index.ts file, create one too
51
- generateRoutesFile(name, path.join(routesFilePath), readConfig
52
- // routesDirName,
53
- );
46
+ await generateRoutesFile(name, path.join(routesFilePath), readConfig);
54
47
  }
55
48
  catch (e) {
56
49
  console.log(chalk.bold(chalk.red(e)));
57
50
  }
58
- console.log(`${chalk.bold(chalk.green(`${name}.routes.${readConfig().language} generated successfully! ๐Ÿ™ƒ`))}`);
59
51
  };
@@ -1,9 +1,11 @@
1
1
  import { existsSync, mkdirSync, writeFile } from "fs";
2
2
  import path from "path";
3
3
  import chalk from "chalk";
4
+ import { promisify } from "util";
4
5
  import { readConfig } from "../utils/read_user_config_path.js";
5
6
  import { resolveServiceContent } from "./resolvers/resolve_service_content.js";
6
7
  import { generateService as generateSpringService } from "./spring/generate_spring_service.js";
8
+ const writeFileAsync = promisify(writeFile);
7
9
  const createServiceDirectory = () => {
8
10
  const projectRoot = path.join(process.cwd());
9
11
  const userServiceFilePath = path.join(projectRoot, "/src/services");
@@ -11,61 +13,45 @@ const createServiceDirectory = () => {
11
13
  mkdirSync(userServiceFilePath);
12
14
  }
13
15
  };
14
- // removed other possible dirs to enforce dolphjs style guide
15
16
  const findServiceDirectory = () => {
16
17
  const rootDir = process.cwd();
17
- const possibleDirs = [
18
- "/src/services",
19
- // "/src/Services",
20
- // "/src/service",
21
- // "/src/Services",
22
- // "/Service",
23
- // "/Services",
24
- // "/services",
25
- // "/service",
26
- ];
18
+ const possibleDirs = ["/src/services"];
27
19
  const serviceDir = possibleDirs.find((dir) => existsSync(path.join(rootDir, dir)));
28
20
  return serviceDir ? path.join(rootDir, serviceDir) : null;
29
21
  };
30
22
  export const generateServiceFile = async (name, serviceDir, readConfig) => {
31
- await writeFile(serviceDir, resolveServiceContent(readConfig, name), (error) => {
32
- if (error) {
33
- console.log(chalk.bold(chalk.red(error.toString())));
34
- }
35
- });
23
+ try {
24
+ await writeFileAsync(serviceDir, resolveServiceContent(readConfig, name));
25
+ console.log(`${chalk.bold(chalk.green(`${name}.service.${readConfig().language} generated successfully! ๐Ÿ™ƒ`))}`);
26
+ }
27
+ catch (error) {
28
+ console.log(chalk.bold(chalk.red(error.toString())));
29
+ }
36
30
  };
37
31
  export const generateService = async (name) => {
38
32
  if (readConfig().routing === "spring") {
39
- generateSpringService(name, readConfig().database === "mongo" ? true : false, readConfig().database === "mysql" ? true : false);
33
+ await generateSpringService(name, readConfig().database === "mongo" ? true : false, readConfig().database === "mysql" ? true : false);
40
34
  }
41
35
  else {
42
- {
43
- if (!name)
44
- chalk.bold(chalk.red("Service extension or name is required! ๐Ÿคจ"));
45
- let serviceDir = findServiceDirectory();
46
- if (!serviceDir) {
47
- //TODO: create one if it doesn't exist
48
- // console.log(chalk.bold(chalk.red("Service directory doesn't exist ๐Ÿคจ")));
49
- // return;
50
- createServiceDirectory();
51
- serviceDir = findServiceDirectory();
52
- }
53
- const serviceDirName = path.join(serviceDir, name);
54
- const serviceFilePath = path.join(serviceDirName + `/${name}.service.${readConfig().language}`);
55
- try {
56
- // Create the generate controller path
57
- if (readConfig().generateFolder === "true" || true) {
58
- mkdirSync(serviceDirName);
59
- }
60
- //TODO: if no index.ts file, create one too
61
- generateServiceFile(name, path.join(serviceFilePath), readConfig
62
- // serviceDirName,
63
- );
64
- }
65
- catch (e) {
66
- console.log(chalk.bold(chalk.red(e)));
36
+ if (!name) {
37
+ console.log(chalk.bold(chalk.red("Service extension or name is required! ๐Ÿคจ")));
38
+ return;
39
+ }
40
+ let serviceDir = findServiceDirectory();
41
+ if (!serviceDir) {
42
+ createServiceDirectory();
43
+ serviceDir = findServiceDirectory();
44
+ }
45
+ const serviceDirName = path.join(serviceDir, name);
46
+ const serviceFilePath = path.join(serviceDirName + `/${name}.service.${readConfig().language}`);
47
+ try {
48
+ if (readConfig().generateFolder === "true" || true) {
49
+ mkdirSync(serviceDirName);
67
50
  }
51
+ await generateServiceFile(name, path.join(serviceFilePath), readConfig);
52
+ }
53
+ catch (e) {
54
+ console.log(chalk.bold(chalk.red(e)));
68
55
  }
69
- console.log(`${chalk.bold(chalk.green(`${name}.service.${readConfig().language} generated successfully! ๐Ÿ™ƒ`))}`);
70
56
  }
71
57
  };
@@ -3,29 +3,34 @@ import path from "path";
3
3
  import chalk from "chalk";
4
4
  import { generateSpringComponent } from "../../generators/templates/spring_component_template.js";
5
5
  import { dolphMsg } from "../../helpers/messages.js";
6
+ import { promisify } from "util";
7
+ const writeFileAsync = promisify(writeFile);
6
8
  const createComponentDirectory = (componentName) => {
7
9
  const projectRoot = path.join(process.cwd());
8
- const userComponentPath = path.join(projectRoot, `/src/${componentName}`);
10
+ const userComponentPath = path.join(projectRoot, `/src/components/${componentName}`);
9
11
  if (!existsSync(userComponentPath)) {
10
12
  mkdirSync(userComponentPath);
11
13
  }
12
14
  };
13
15
  const findComponentDirectory = (componentName) => {
14
16
  const rootDir = process.cwd();
15
- const possibleDirs = [`src/${componentName}`];
17
+ const possibleDirs = [`src/components/${componentName}`];
16
18
  const componentDir = possibleDirs.find((dir) => existsSync(path.join(rootDir, dir)));
17
19
  return componentDir ? path.join(rootDir, componentDir) : null;
18
20
  };
19
21
  export const generateSpringComponentFile = async (componentName, componentDir) => {
20
- await writeFile(componentDir, generateSpringComponent(componentName), (error) => {
21
- if (error) {
22
- dolphMsg.errorRed(error.toString());
23
- }
24
- });
22
+ try {
23
+ await writeFileAsync(componentDir, generateSpringComponent(componentName));
24
+ }
25
+ catch (error) {
26
+ dolphMsg.errorRed(error.toString());
27
+ }
25
28
  };
26
29
  export const generateComponent = async (name) => {
27
- if (!name)
28
- dolphMsg.errorRed("component extension or name is required! ๐Ÿคจ");
30
+ if (!name) {
31
+ dolphMsg.errorRed("Component extension or name is required! ๐Ÿคจ");
32
+ return;
33
+ }
29
34
  let componentDir = findComponentDirectory(name);
30
35
  if (!componentDir) {
31
36
  createComponentDirectory(name);
@@ -33,10 +38,10 @@ export const generateComponent = async (name) => {
33
38
  }
34
39
  const componentFilePath = path.join(componentDir + `/${name}.component.ts`);
35
40
  try {
36
- generateSpringComponentFile(name, path.join(componentFilePath));
41
+ await generateSpringComponentFile(name, path.join(componentFilePath));
42
+ dolphMsg.info(`${chalk.blue(`${name}.component.ts`)} generated successfully for ${chalk.blue(`${name}`)} component.`);
37
43
  }
38
44
  catch (e) {
39
45
  dolphMsg.errorRed(e);
40
46
  }
41
- dolphMsg.info(`${chalk.blue(`${name}.component.ts`)} generated successfully for ${chalk.blue(`${name}`)} component.`);
42
47
  };
@@ -3,29 +3,34 @@ import path from "path";
3
3
  import chalk from "chalk";
4
4
  import { generateSpringController } from "../../generators/templates/spring_controller_template.js";
5
5
  import { dolphMsg } from "../../helpers/messages.js";
6
+ import { promisify } from "util";
7
+ const writeFileAsync = promisify(writeFile);
6
8
  const createControllerDirectory = (componentName) => {
7
9
  const projectRoot = path.join(process.cwd());
8
- const userCompontrollerPath = path.join(projectRoot, `/src/${componentName}`);
10
+ const userCompontrollerPath = path.join(projectRoot, `/src/components/${componentName}`);
9
11
  if (!existsSync(userCompontrollerPath)) {
10
12
  mkdirSync(userCompontrollerPath);
11
13
  }
12
14
  };
13
15
  const findControllerDirectory = (componentName) => {
14
16
  const rootDir = process.cwd();
15
- const possibleDirs = [`src/${componentName}`];
17
+ const possibleDirs = [`src/components/${componentName}`];
16
18
  const controllerDir = possibleDirs.find((dir) => existsSync(path.join(rootDir, dir)));
17
19
  return controllerDir ? path.join(rootDir, controllerDir) : null;
18
20
  };
19
21
  export const generateSpringControllerFile = async (componentName, controllerDir) => {
20
- await writeFile(controllerDir, generateSpringController(componentName), (error) => {
21
- if (error) {
22
- dolphMsg.errorRed(error.toString());
23
- }
24
- });
22
+ try {
23
+ await writeFileAsync(controllerDir, generateSpringController(componentName));
24
+ }
25
+ catch (error) {
26
+ dolphMsg.errorRed(error.toString());
27
+ }
25
28
  };
26
29
  export const generateController = async (name) => {
27
- if (!name)
28
- dolphMsg.errorRed("controller extension or name is required! ๐Ÿคจ");
30
+ if (!name) {
31
+ dolphMsg.errorRed("Controller extension or name is required! ๐Ÿคจ");
32
+ return;
33
+ }
29
34
  let controllerDir = findControllerDirectory(name);
30
35
  if (!controllerDir) {
31
36
  createControllerDirectory(name);
@@ -33,10 +38,10 @@ export const generateController = async (name) => {
33
38
  }
34
39
  const controllerFilePath = path.join(controllerDir + `/${name}.controller.ts`);
35
40
  try {
36
- generateSpringControllerFile(name, path.join(controllerFilePath));
41
+ await generateSpringControllerFile(name, path.join(controllerFilePath));
42
+ dolphMsg.info(`${chalk.blue(`${name}.controller.ts`)} generated successfully for ${chalk.blue(`${name}`)} component.`);
37
43
  }
38
44
  catch (e) {
39
45
  dolphMsg.errorRed(e);
40
46
  }
41
- dolphMsg.info(`${chalk.blue(`${name}.controller.ts`)} generated successfully for ${chalk.blue(`${name}`)} component.`);
42
47
  };
@@ -3,29 +3,34 @@ import path from "path";
3
3
  import chalk from "chalk";
4
4
  import { generateSpringModel } from "../../generators/templates/spring_model_template.js";
5
5
  import { dolphMsg } from "../../helpers/messages.js";
6
+ import { promisify } from "util";
7
+ const writeFileAsync = promisify(writeFile);
6
8
  const createModelDirectory = (componentName) => {
7
9
  const projectRoot = path.join(process.cwd());
8
- const userModelPath = path.join(projectRoot, `/src/${componentName}`);
10
+ const userModelPath = path.join(projectRoot, `/src/components/${componentName}`);
9
11
  if (!existsSync(userModelPath)) {
10
12
  mkdirSync(userModelPath);
11
13
  }
12
14
  };
13
15
  const findModelDirectory = (componentName) => {
14
16
  const rootDir = process.cwd();
15
- const possibleDirs = [`src/${componentName}`];
17
+ const possibleDirs = [`src/components/${componentName}`];
16
18
  const modelDir = possibleDirs.find((dir) => existsSync(path.join(rootDir, dir)));
17
19
  return modelDir ? path.join(rootDir, modelDir) : null;
18
20
  };
19
21
  export const generateSpringModelFile = async (componentName, modelDir, isMongo, isMySql) => {
20
- await writeFile(modelDir, generateSpringModel(componentName, isMongo, isMySql), (error) => {
21
- if (error) {
22
- dolphMsg.errorRed(error.toString());
23
- }
24
- });
22
+ try {
23
+ await writeFileAsync(modelDir, generateSpringModel(componentName, isMongo, isMySql));
24
+ }
25
+ catch (error) {
26
+ dolphMsg.errorRed(error.toString());
27
+ }
25
28
  };
26
29
  export const generateModel = async (name, isMongo, isMySql) => {
27
- if (!name)
28
- dolphMsg.errorRed("model extension or name is required! ๐Ÿคจ");
30
+ if (!name) {
31
+ dolphMsg.errorRed("Model extension or name is required! ๐Ÿคจ");
32
+ return;
33
+ }
29
34
  let modelDir = findModelDirectory(name);
30
35
  if (!modelDir) {
31
36
  createModelDirectory(name);
@@ -33,10 +38,10 @@ export const generateModel = async (name, isMongo, isMySql) => {
33
38
  }
34
39
  const modelFilePath = path.join(modelDir + `/${name}.model.ts`);
35
40
  try {
36
- generateSpringModelFile(name, path.join(modelFilePath), isMongo, isMySql);
41
+ await generateSpringModelFile(name, path.join(modelFilePath), isMongo, isMySql);
42
+ dolphMsg.info(`${chalk.blue(`${name}.model.ts`)} generated successfully for ${chalk.blue(`${name}`)} component.`);
37
43
  }
38
44
  catch (e) {
39
45
  dolphMsg.errorRed(e);
40
46
  }
41
- dolphMsg.info(`${chalk.blue(`${name}.model.ts`)} generated successfully for ${chalk.blue(`${name}`)} component.`);
42
47
  };
@@ -0,0 +1,48 @@
1
+ import { existsSync, mkdirSync, writeFile } from "fs";
2
+ import path from "path";
3
+ import chalk from "chalk";
4
+ import { promisify } from "util";
5
+ import { readConfig } from "../../utils/read_user_config_path.js";
6
+ import { resolveMySqlContent } from "./../resolvers/resolve_model_content.js";
7
+ const writeFileAsync = promisify(writeFile);
8
+ const createConfigDirectory = () => {
9
+ const projectRoot = path.join(process.cwd());
10
+ const userConfigFilePath = path.join(projectRoot, "/src/shared/configs");
11
+ if (!existsSync(userConfigFilePath)) {
12
+ mkdirSync(userConfigFilePath);
13
+ }
14
+ };
15
+ const findConfigDirectory = () => {
16
+ const rootDir = process.cwd();
17
+ const possibleDirs = ["/src/shared/configs"];
18
+ const configDir = possibleDirs.find((dir) => existsSync(path.join(rootDir, dir)));
19
+ return configDir ? path.join(rootDir, configDir) : null;
20
+ };
21
+ export const generateConfigFile = async (name, configDir, readConfig) => {
22
+ try {
23
+ await writeFileAsync(configDir, resolveMySqlContent(readConfig));
24
+ console.log(`${chalk.bold(chalk.green(`db.config.${readConfig().language} generated successfully! ๐Ÿ™ƒ`))}`);
25
+ }
26
+ catch (error) {
27
+ console.log(chalk.bold(chalk.red(error.toString())));
28
+ }
29
+ };
30
+ export const generateConfig = async (name) => {
31
+ if (!name) {
32
+ console.log(chalk.bold(chalk.red("Config extension or name is required! ๐Ÿคจ")));
33
+ return;
34
+ }
35
+ let configDir = findConfigDirectory();
36
+ if (!configDir) {
37
+ createConfigDirectory();
38
+ configDir = findConfigDirectory();
39
+ }
40
+ const configDirName = configDir;
41
+ const configFilePath = path.join(configDirName + `/db.configs.${readConfig().language}`);
42
+ try {
43
+ await generateConfigFile(name, path.join(configFilePath), readConfig);
44
+ }
45
+ catch (e) {
46
+ console.log(chalk.bold(chalk.red(e)));
47
+ }
48
+ };
@@ -3,29 +3,34 @@ import path from "path";
3
3
  import chalk from "chalk";
4
4
  import { generateSpringService } from "../../generators/templates/spring_service_template.js";
5
5
  import { dolphMsg } from "../../helpers/messages.js";
6
+ import { promisify } from "util";
7
+ const writeFileAsync = promisify(writeFile);
6
8
  const createServiceDirectory = (componentName) => {
7
9
  const projectRoot = path.join(process.cwd());
8
- const userServicePath = path.join(projectRoot, `/src/${componentName}`);
10
+ const userServicePath = path.join(projectRoot, `/src/components/${componentName}`);
9
11
  if (!existsSync(userServicePath)) {
10
12
  mkdirSync(userServicePath);
11
13
  }
12
14
  };
13
15
  const findServiceDirectory = (componentName) => {
14
16
  const rootDir = process.cwd();
15
- const possibleDirs = [`src/${componentName}`];
17
+ const possibleDirs = [`src/components/${componentName}`];
16
18
  const serviceDir = possibleDirs.find((dir) => existsSync(path.join(rootDir, dir)));
17
19
  return serviceDir ? path.join(rootDir, serviceDir) : null;
18
20
  };
19
21
  export const generateSpringServiceFile = async (componentName, serviceDir, isMongo, isMySql) => {
20
- await writeFile(serviceDir, generateSpringService(componentName, isMongo, isMySql), (error) => {
21
- if (error) {
22
- dolphMsg.errorRed(error.toString());
23
- }
24
- });
22
+ try {
23
+ await writeFileAsync(serviceDir, generateSpringService(componentName, isMongo, isMySql));
24
+ }
25
+ catch (error) {
26
+ dolphMsg.errorRed(error.toString());
27
+ }
25
28
  };
26
29
  export const generateService = async (name, isMongo, isMySql) => {
27
- if (!name)
28
- dolphMsg.errorRed("service extension or name is required! ๐Ÿคจ");
30
+ if (!name) {
31
+ dolphMsg.errorRed("Service extension or name is required! ๐Ÿคจ");
32
+ return;
33
+ }
29
34
  let serviceDir = findServiceDirectory(name);
30
35
  if (!serviceDir) {
31
36
  createServiceDirectory(name);
@@ -33,10 +38,10 @@ export const generateService = async (name, isMongo, isMySql) => {
33
38
  }
34
39
  const serviceFilePath = path.join(serviceDir + `/${name}.service.ts`);
35
40
  try {
36
- generateSpringServiceFile(name, path.join(serviceFilePath), isMongo, isMySql);
41
+ await generateSpringServiceFile(name, path.join(serviceFilePath), isMongo, isMySql);
42
+ dolphMsg.info(`${chalk.blue(`${name}.service.ts`)} generated successfully for ${chalk.blue(`${name}`)} component.`);
37
43
  }
38
44
  catch (e) {
39
45
  dolphMsg.errorRed(e);
40
46
  }
41
- dolphMsg.info(`${chalk.blue(`${name}.service.ts`)} generated successfully for ${chalk.blue(`${name}`)} component.`);
42
47
  };
@@ -39,7 +39,7 @@ import { ${capitalizeFirstLetter(componentName)}Model, I${capitalizeFirstLetter(
39
39
 
40
40
  @InjectMongo("${componentName}Model", ${capitalizeFirstLetter(componentName)}Model)
41
41
  export class ${className} extends DolphServiceHandler<Dolph> {
42
- ${componentName}Model!: Model<>;
42
+ ${componentName}Model!: Model<I${capitalizeFirstLetter(componentName)}>;
43
43
 
44
44
  constructor() {
45
45
  super("${className.toLowerCase()}");
@@ -1,9 +1,9 @@
1
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
2
2
  import { dolphMsg } from "../helpers/messages.js";
3
3
  import path from "path";
4
- const createSrcDirectory = () => {
4
+ const createComponentDirectory = () => {
5
5
  const projectRoot = path.join(process.cwd());
6
- const userComponentPath = path.join(projectRoot, `/src`);
6
+ const userComponentPath = path.join(projectRoot, `/src/components`);
7
7
  if (!existsSync(userComponentPath)) {
8
8
  mkdirSync(userComponentPath);
9
9
  }
@@ -48,7 +48,9 @@ dolph.start();
48
48
  if (routesArrayMatch) {
49
49
  const existingCode = routesArrayMatch[1].trim();
50
50
  let fileContents;
51
- fileContents = fileContent.replace(existingCode, `${existingCode.length > 0 ? existingCode + ", " : ""}${newComponentInstance}`);
51
+ fileContents = fileContent.replace(existingCode, `[${existingCode.length > 0
52
+ ? existingCode.slice(0, -1) + `, ${newComponentInstance}]`
53
+ : newComponentInstance}`);
52
54
  const updatedContents = `${importStatement}\n${fileContents}`;
53
55
  writeFileSync(serverPath, updatedContents);
54
56
  }
@@ -24,12 +24,18 @@ export const initDolphCli = (appname) => {
24
24
  const configFolderPath = path.join(process.cwd());
25
25
  const srcPath = path.join(configFolderPath, "src");
26
26
  const userConfigFilePath = path.join(configFolderPath, "dolph_cli.yaml");
27
+ const testPath = path.join(configFolderPath, "tests");
28
+ const sharedDirPath = path.join(srcPath, "shared");
29
+ const componentDirPath = path.join(srcPath, "components");
27
30
  if (!existsSync(configFolderPath)) {
28
31
  mkdirSync(configFolderPath);
29
32
  }
30
33
  if (!existsSync(srcPath)) {
31
34
  mkdirSync(srcPath);
32
35
  }
36
+ if (!existsSync(testPath)) {
37
+ mkdirSync(testPath);
38
+ }
33
39
  const defaultConfig = {
34
40
  language: "ts",
35
41
  paradigm: "oop",
@@ -72,7 +78,7 @@ export const initDolphCli = (appname) => {
72
78
  .then((replies) => {
73
79
  // TODO: add this to the config file:
74
80
  const comment = "# this is an auto-generated file, please do not edit manually\n";
75
- if ((replies.routing = "spring")) {
81
+ if (replies.routing === "spring") {
76
82
  replies.paradigm = "oop";
77
83
  replies.language = "ts";
78
84
  }
@@ -86,6 +92,14 @@ export const initDolphCli = (appname) => {
86
92
  writeDolphConfig();
87
93
  writePackageJsonFile(projectName, userConfig.language);
88
94
  writeGitignore();
95
+ if (userConfig.routing === "spring") {
96
+ if (!existsSync(componentDirPath)) {
97
+ mkdirSync(componentDirPath);
98
+ }
99
+ if (!existsSync(sharedDirPath)) {
100
+ mkdirSync(sharedDirPath);
101
+ }
102
+ }
89
103
  dolphMsg.infoBlue("dolph configurations have been initialized successfully โœจ.");
90
104
  dolphMsg.infoYellow("run `yarn install` to install dependencies in project directory and start building ๐Ÿš€.");
91
105
  process.exit(0);
@@ -15,11 +15,11 @@ export const packageGenerator = () => {
15
15
  program
16
16
  .command("generate")
17
17
  .alias("g")
18
- .option("-s, --service" + chalk.bold(chalk.blue("<name>")), "Generates a dolphjs service file.")
19
- .option("-c, --controller" + chalk.bold(chalk.blue("<name>")), "Generates a dolphjs controller file.")
20
- .option("-r, --route" + chalk.bold(chalk.blue("<name>")), "Generates a dolphjs routes file.")
21
- .option("-m, --model" + chalk.bold(chalk.blue("<name>")), "Generates a dolphjs models file.")
22
- .option("-com, --component" + chalk.bold(chalk.blue("<name>")), "Generates a dolphjs spring component file.")
18
+ .option("-s, --service" + chalk.bold(chalk.blue(" <name>")), "Generates a dolphjs service file.")
19
+ .option("-c, --controller" + chalk.bold(chalk.blue(" <name>")), "Generates a dolphjs controller file.")
20
+ .option("-r, --route" + chalk.bold(chalk.blue(" <name>")), "Generates a dolphjs routes file.")
21
+ .option("-m, --model" + chalk.bold(chalk.blue(" <name>")), "Generates a dolphjs models file.")
22
+ .option("-com, --component" + chalk.bold(chalk.blue(" <name>")), "Generates a dolphjs spring component file.")
23
23
  .option("-a, --all" + chalk.bold(chalk.blue(" <name> ")), "Generates dolphjs controllers, routes, models and services files for the name paramter.")
24
24
  .action(async (name, _options) => {
25
25
  Object.entries(name).forEach(([key, value]) => {
@@ -70,14 +70,5 @@ export const packageGenerator = () => {
70
70
  }
71
71
  }
72
72
  });
73
- // const controllerName = controller ? `${controller}` : undefined;
74
- // const serviceName = service ? `${service}` : undefined;
75
- // const modelName = model ? `${model}` : undefined;
76
- // const routesName = routes ? `${routes}` : undefined;
77
- // const interfacesName = interfaces ? `${interfaces}` : undefined;
78
- // const helperName = helper ? `${helper}` : undefined;
79
- // if (controllerName) {
80
- // controllerGen.generateController(controllerName);
81
- // }
82
73
  });
83
74
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dolphjs/cli",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "The dolphjs-cli is a tool for efficient intialization and management of a dolphjs project",
5
5
  "main": "./dist/index.js",
6
6
  "repository": "https://github.com/dolphjs/dolph-cli.git",