@tsed/cli-core 4.3.0 → 4.4.1

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.
@@ -6,13 +6,25 @@ const di_1 = require("@tsed/di");
6
6
  const change_case_1 = require("change-case");
7
7
  const CliYaml_1 = require("./CliYaml");
8
8
  const core_1 = require("@tsed/core");
9
+ const path_1 = require("path");
10
+ const CliFs_1 = require("./CliFs");
11
+ const ProjectPackageJson_1 = require("./ProjectPackageJson");
9
12
  let CliDockerComposeYaml = class CliDockerComposeYaml {
10
13
  cliYaml;
14
+ fs;
15
+ projectPackageJson;
11
16
  async read() {
12
- return this.cliYaml.read("docker-compose.yml");
17
+ const path = "docker-compose.yml";
18
+ const file = !this.fs.exists(path) ? this.fs.findUpFile(this.projectPackageJson.dir, path) : path;
19
+ if (file) {
20
+ return this.cliYaml.read("docker-compose.yml");
21
+ }
22
+ return {};
13
23
  }
14
24
  async write(obj) {
15
- return this.cliYaml.write("docker-compose.yml", obj);
25
+ const path = "docker-compose.yml";
26
+ const file = this.fs.findUpFile(this.projectPackageJson.dir, path) || (0, path_1.join)(this.projectPackageJson.dir, path);
27
+ return this.cliYaml.write(file, obj);
16
28
  }
17
29
  async addDatabaseService(name, database) {
18
30
  const dockerCompose = await this.read();
@@ -78,6 +90,14 @@ tslib_1.__decorate([
78
90
  (0, di_1.Inject)(),
79
91
  tslib_1.__metadata("design:type", CliYaml_1.CliYaml)
80
92
  ], CliDockerComposeYaml.prototype, "cliYaml", void 0);
93
+ tslib_1.__decorate([
94
+ (0, di_1.Inject)(),
95
+ tslib_1.__metadata("design:type", CliFs_1.CliFs)
96
+ ], CliDockerComposeYaml.prototype, "fs", void 0);
97
+ tslib_1.__decorate([
98
+ (0, di_1.Inject)(),
99
+ tslib_1.__metadata("design:type", ProjectPackageJson_1.ProjectPackageJson)
100
+ ], CliDockerComposeYaml.prototype, "projectPackageJson", void 0);
81
101
  CliDockerComposeYaml = tslib_1.__decorate([
82
102
  (0, di_1.Injectable)()
83
103
  ], CliDockerComposeYaml);
@@ -1 +1 @@
1
- {"version":3,"file":"CliDockerComposeYaml.js","sourceRoot":"","sources":["../../../src/services/CliDockerComposeYaml.ts"],"names":[],"mappings":";;;;AAAA,iCAA4C;AAC5C,6CAAsC;AACtC,uCAAkC;AAClC,qCAAoC;AAG7B,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAErB,OAAO,CAAU;IAE3B,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAQ;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAY,EAAE,QAAgB;QACrD,MAAM,aAAa,GAAQ,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,aAAa,EAAE;YACjB,IAAI,KAAU,CAAC;YACf,QAAQ,QAAQ,EAAE;gBAChB,KAAK,OAAO,CAAC;gBACb,KAAK,SAAS;oBACZ,KAAK,GAAG;wBACN,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB;wBACtE,KAAK,EAAE,CAAC,WAAW,CAAC;wBACpB,WAAW,EAAE;4BACX,mBAAmB,EAAE,OAAO;4BAC5B,UAAU,EAAE,MAAM;4BAClB,cAAc,EAAE,MAAM;4BACtB,cAAc,EAAE,MAAM;yBACvB;qBACF,CAAC;oBACF,MAAM;gBACR,KAAK,UAAU;oBACb,KAAK,GAAG;wBACN,KAAK,EAAE,gBAAgB;wBACvB,KAAK,EAAE,CAAC,WAAW,CAAC;wBACpB,OAAO,EAAE,CAAC,mCAAmC,CAAC;wBAC9C,WAAW,EAAE;4BACX,aAAa,EAAE,MAAM;4BACrB,iBAAiB,EAAE,MAAM;4BACzB,WAAW,EAAE,MAAM;yBACpB;qBACF,CAAC;oBACF,MAAM;gBACR,KAAK,aAAa;oBAChB,KAAK,GAAG;wBACN,KAAK,EAAE,8BAA8B;wBACrC,OAAO,EAAE,kBAAkB;wBAC3B,KAAK,EAAE,CAAC,aAAa,CAAC;qBACvB,CAAC;oBACF,MAAM;gBACR,KAAK,OAAO;oBACV,KAAK,GAAG;wBACN,KAAK,EAAE,4CAA4C;wBACnD,OAAO,EAAE,kBAAkB;wBAC3B,KAAK,EAAE,CAAC,WAAW,CAAC;wBACpB,WAAW,EAAE;4BACX,WAAW,EAAE,YAAY;4BACzB,WAAW,EAAE,GAAG;yBACjB;qBACF,CAAC;oBACF,MAAM;gBACR,KAAK,SAAS;oBACZ,KAAK,GAAG;wBACN,KAAK,EAAE,aAAa;wBACpB,KAAK,EAAE,CAAC,aAAa,CAAC;qBACvB,CAAC;oBACF,MAAM;aACT;YAED,IAAA,eAAQ,EAAC,aAAa,EAAE,YAAY,IAAA,uBAAS,EAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC9D,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;SACjC;IACH,CAAC;CACF,CAAA;AAvEC;IAAC,IAAA,WAAM,GAAE;sCACU,iBAAO;qDAAC;AAFhB,oBAAoB;IADhC,IAAA,eAAU,GAAE;GACA,oBAAoB,CAwEhC;AAxEY,oDAAoB","sourcesContent":["import {Inject, Injectable} from \"@tsed/di\";\nimport {snakeCase} from \"change-case\";\nimport {CliYaml} from \"./CliYaml\";\nimport {setValue} from \"@tsed/core\";\n\n@Injectable()\nexport class CliDockerComposeYaml {\n @Inject()\n protected cliYaml: CliYaml;\n\n async read() {\n return this.cliYaml.read(\"docker-compose.yml\");\n }\n\n async write(obj: any) {\n return this.cliYaml.write(\"docker-compose.yml\", obj);\n }\n\n async addDatabaseService(name: string, database: string) {\n const dockerCompose: any = await this.read();\n if (dockerCompose) {\n let value: any;\n switch (database) {\n case \"mysql\":\n case \"mariadb\":\n value = {\n image: database === \"mysql\" ? \"mysql:8.0.28-oracle\" : \"mariadb:10.7.3\",\n ports: [\"3306:3306\"],\n environment: {\n MYSQL_ROOT_PASSWORD: \"admin\",\n MYSQL_USER: \"test\",\n MYSQL_PASSWORD: \"test\",\n MYSQL_DATABASE: \"test\"\n }\n };\n break;\n case \"postgres\":\n value = {\n image: \"postgres:9.6.1\",\n ports: [\"5432:5432\"],\n volumes: [\"./pgdata:/var/lib/postgresql/data\"],\n environment: {\n POSTGRES_USER: \"test\",\n POSTGRES_PASSWORD: \"test\",\n POSTGRES_DB: \"test\"\n }\n };\n break;\n case \"cockroachdb\":\n value = {\n image: \"cockroachdb/cockroach:v2.1.4\",\n command: \"start --insecure\",\n ports: [\"26257:26257\"]\n };\n break;\n case \"mssql\":\n value = {\n image: \"mcr.microsoft.com/mssql/server:2017-latest\",\n command: \"start --insecure\",\n ports: [\"1433:1433\"],\n environment: {\n SA_PASSWORD: \"Admin12345\",\n ACCEPT_EULA: \"Y\"\n }\n };\n break;\n case \"mongodb\":\n value = {\n image: \"mongo:5.0.8\",\n ports: [\"27017:27017\"]\n };\n break;\n }\n\n setValue(dockerCompose, `services.${snakeCase(name)}`, value);\n await this.write(dockerCompose);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"CliDockerComposeYaml.js","sourceRoot":"","sources":["../../../src/services/CliDockerComposeYaml.ts"],"names":[],"mappings":"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","sourcesContent":["import {Inject, Injectable} from \"@tsed/di\";\nimport {snakeCase} from \"change-case\";\nimport {CliYaml} from \"./CliYaml\";\nimport {setValue} from \"@tsed/core\";\nimport {join} from \"path\";\nimport {CliFs} from \"./CliFs\";\nimport {ProjectPackageJson} from \"./ProjectPackageJson\";\n\n@Injectable()\nexport class CliDockerComposeYaml {\n @Inject()\n protected cliYaml: CliYaml;\n\n @Inject()\n protected fs: CliFs;\n\n @Inject()\n protected projectPackageJson: ProjectPackageJson;\n\n async read() {\n const path = \"docker-compose.yml\";\n const file = !this.fs.exists(path) ? this.fs.findUpFile(this.projectPackageJson.dir, path) : path;\n\n if (file) {\n return this.cliYaml.read(\"docker-compose.yml\");\n }\n\n return {};\n }\n\n async write(obj: any) {\n const path = \"docker-compose.yml\";\n const file = this.fs.findUpFile(this.projectPackageJson.dir, path) || join(this.projectPackageJson.dir, path);\n\n return this.cliYaml.write(file, obj);\n }\n\n async addDatabaseService(name: string, database: string) {\n const dockerCompose: any = await this.read();\n if (dockerCompose) {\n let value: any;\n switch (database) {\n case \"mysql\":\n case \"mariadb\":\n value = {\n image: database === \"mysql\" ? \"mysql:8.0.28-oracle\" : \"mariadb:10.7.3\",\n ports: [\"3306:3306\"],\n environment: {\n MYSQL_ROOT_PASSWORD: \"admin\",\n MYSQL_USER: \"test\",\n MYSQL_PASSWORD: \"test\",\n MYSQL_DATABASE: \"test\"\n }\n };\n break;\n case \"postgres\":\n value = {\n image: \"postgres:9.6.1\",\n ports: [\"5432:5432\"],\n volumes: [\"./pgdata:/var/lib/postgresql/data\"],\n environment: {\n POSTGRES_USER: \"test\",\n POSTGRES_PASSWORD: \"test\",\n POSTGRES_DB: \"test\"\n }\n };\n break;\n case \"cockroachdb\":\n value = {\n image: \"cockroachdb/cockroach:v2.1.4\",\n command: \"start --insecure\",\n ports: [\"26257:26257\"]\n };\n break;\n case \"mssql\":\n value = {\n image: \"mcr.microsoft.com/mssql/server:2017-latest\",\n command: \"start --insecure\",\n ports: [\"1433:1433\"],\n environment: {\n SA_PASSWORD: \"Admin12345\",\n ACCEPT_EULA: \"Y\"\n }\n };\n break;\n case \"mongodb\":\n value = {\n image: \"mongo:5.0.8\",\n ports: [\"27017:27017\"]\n };\n break;\n }\n\n setValue(dockerCompose, `services.${snakeCase(name)}`, value);\n await this.write(dockerCompose);\n }\n }\n}\n"]}
@@ -17,6 +17,9 @@ let CliFs = class CliFs {
17
17
  async readFile(file, encoding) {
18
18
  return this.raw.readFile(file, encoding);
19
19
  }
20
+ async writeJson(file, data, options) {
21
+ await this.raw.writeFile(file, JSON.stringify(data, null, 2), options || { encoding: "utf8" });
22
+ }
20
23
  writeFileSync(path, data, options) {
21
24
  return this.raw.writeFileSync(path, data, options);
22
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CliFs.js","sourceRoot":"","sources":["../../../src/services/CliFs.ts"],"names":[],"mappings":";;;;AAAA,iCAAoC;AAEpC,gEAA0B;AAE1B,+BAA0B;AAC1B,yDAAmD;AAG5C,IAAM,KAAK,GAAX,MAAM,KAAK;IAChB,GAAG,GAAG,kBAAE,CAAC;IAET,MAAM,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,GAAG,IAAc;QACpB,OAAO,IAAA,8BAAa,EAAC,IAAA,WAAI,EAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAA8B,EAAE,QAAc;QAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAQ,CAAC;IAClD,CAAC;IAED,aAAa,CAAC,IAAuB,EAAE,IAAS,EAAE,OAA0B;QAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,SAAS,CAAC,IAA8B,EAAE,IAAS,EAAE,OAAmC;QACtF,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAc,CAAC,CAAC;IACxD,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,OAAgC;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,OAAgC;QAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,IAAY;QACnC,OAAO,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAA,WAAI,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAA,WAAI,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAA,WAAI,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAChI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAClB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,OAAe,OAAO,CAAC,GAAG,EAAE;QAC1D,IAAI;YACF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;gBAC1C,OAAO,gEAAa,GAAG,GAAC,CAAC;aAC1B;SACF;QAAC,OAAO,EAAE,EAAE,GAAE;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAA,WAAI,EAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;QAE9D,IAAI,IAAI,EAAE;YACR,iEAAc,IAAI,IAAE;SACrB;QAED,iEAAc,GAAG,IAAE;IACrB,CAAC;CACF,CAAA;AApDY,KAAK;IADjB,IAAA,eAAU,GAAE;GACA,KAAK,CAoDjB;AApDY,sBAAK","sourcesContent":["import {Injectable} from \"@tsed/di\";\nimport {PathLike, WriteFileOptions} from \"fs\";\nimport Fs from \"fs-extra\";\nimport {EnsureOptions} from \"fs-extra\";\nimport {join} from \"path\";\nimport {normalizePath} from \"@tsed/normalize-path\";\n\n@Injectable()\nexport class CliFs {\n raw = Fs;\n\n exists(path: string) {\n return this.raw.existsSync(path);\n }\n\n join(...args: string[]) {\n return normalizePath(join(...args));\n }\n\n async readFile(file: string | Buffer | number, encoding?: any): Promise<string> {\n return this.raw.readFile(file, encoding) as any;\n }\n\n writeFileSync(path: PathLike | number, data: any, options?: WriteFileOptions) {\n return this.raw.writeFileSync(path, data, options);\n }\n\n writeFile(file: string | Buffer | number, data: any, options?: WriteFileOptions | string) {\n return this.raw.writeFile(file, data, options as any);\n }\n\n ensureDir(path: string, options?: EnsureOptions | number) {\n return this.raw.ensureDir(path, options);\n }\n\n ensureDirSync(path: string, options?: EnsureOptions | number): void {\n return this.raw.ensureDirSync(path, options);\n }\n\n findUpFile(root: string, file: string) {\n return [join(root, file), join(root, \"..\", file), join(root, \"..\", \"..\", file), join(root, \"..\", \"..\", \"..\", file)].find((path) =>\n this.exists(path)\n );\n }\n\n async importModule(mod: string, root: string = process.cwd()) {\n try {\n if (process.env.NODE_ENV === \"development\") {\n return await import(mod);\n }\n } catch (er) {}\n\n const path = this.findUpFile(root, join(\"node_modules\", mod));\n\n if (path) {\n return import(path);\n }\n\n return import(mod);\n }\n}\n"]}
1
+ {"version":3,"file":"CliFs.js","sourceRoot":"","sources":["../../../src/services/CliFs.ts"],"names":[],"mappings":";;;;AAAA,iCAAoC;AAEpC,gEAA0B;AAE1B,+BAA0B;AAC1B,yDAAmD;AAG5C,IAAM,KAAK,GAAX,MAAM,KAAK;IAChB,GAAG,GAAG,kBAAE,CAAC;IAET,MAAM,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,GAAG,IAAc;QACpB,OAAO,IAAA,8BAAa,EAAC,IAAA,WAAI,EAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAA8B,EAAE,QAAc;QAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAQ,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAA8B,EAAE,IAAS,EAAE,OAAmC;QAC5F,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,IAAK,EAAC,QAAQ,EAAE,MAAM,EAAS,CAAC,CAAC;IACxG,CAAC;IAED,aAAa,CAAC,IAAuB,EAAE,IAAS,EAAE,OAA0B;QAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,SAAS,CAAC,IAA8B,EAAE,IAAS,EAAE,OAAmC;QACtF,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAc,CAAC,CAAC;IACxD,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,OAAgC;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,OAAgC;QAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,IAAY;QACnC,OAAO,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAA,WAAI,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAA,WAAI,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAA,WAAI,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAChI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAClB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,OAAe,OAAO,CAAC,GAAG,EAAE;QAC1D,IAAI;YACF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;gBAC1C,OAAO,gEAAa,GAAG,GAAC,CAAC;aAC1B;SACF;QAAC,OAAO,EAAE,EAAE,GAAE;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAA,WAAI,EAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;QAE9D,IAAI,IAAI,EAAE;YACR,iEAAc,IAAI,IAAE;SACrB;QAED,iEAAc,GAAG,IAAE;IACrB,CAAC;CACF,CAAA;AAxDY,KAAK;IADjB,IAAA,eAAU,GAAE;GACA,KAAK,CAwDjB;AAxDY,sBAAK","sourcesContent":["import {Injectable} from \"@tsed/di\";\nimport {PathLike, WriteFileOptions} from \"fs\";\nimport Fs from \"fs-extra\";\nimport {EnsureOptions} from \"fs-extra\";\nimport {join} from \"path\";\nimport {normalizePath} from \"@tsed/normalize-path\";\n\n@Injectable()\nexport class CliFs {\n raw = Fs;\n\n exists(path: string) {\n return this.raw.existsSync(path);\n }\n\n join(...args: string[]) {\n return normalizePath(join(...args));\n }\n\n async readFile(file: string | Buffer | number, encoding?: any): Promise<string> {\n return this.raw.readFile(file, encoding) as any;\n }\n\n async writeJson(file: string | Buffer | number, data: any, options?: WriteFileOptions | string): Promise<any> {\n await this.raw.writeFile(file, JSON.stringify(data, null, 2), options || ({encoding: \"utf8\"} as any));\n }\n\n writeFileSync(path: PathLike | number, data: any, options?: WriteFileOptions) {\n return this.raw.writeFileSync(path, data, options);\n }\n\n writeFile(file: string | Buffer | number, data: any, options?: WriteFileOptions | string) {\n return this.raw.writeFile(file, data, options as any);\n }\n\n ensureDir(path: string, options?: EnsureOptions | number) {\n return this.raw.ensureDir(path, options);\n }\n\n ensureDirSync(path: string, options?: EnsureOptions | number): void {\n return this.raw.ensureDirSync(path, options);\n }\n\n findUpFile(root: string, file: string) {\n return [join(root, file), join(root, \"..\", file), join(root, \"..\", \"..\", file), join(root, \"..\", \"..\", \"..\", file)].find((path) =>\n this.exists(path)\n );\n }\n\n async importModule(mod: string, root: string = process.cwd()) {\n try {\n if (process.env.NODE_ENV === \"development\") {\n return await import(mod);\n }\n } catch (er) {}\n\n const path = this.findUpFile(root, join(\"node_modules\", mod));\n\n if (path) {\n return import(path);\n }\n\n return import(mod);\n }\n}\n"]}
@@ -4,30 +4,18 @@ exports.CliYaml = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const di_1 = require("@tsed/di");
6
6
  const js_yaml_1 = tslib_1.__importDefault(require("js-yaml"));
7
- const path_1 = require("path");
8
7
  const CliFs_1 = require("./CliFs");
9
- const ProjectPackageJson_1 = require("./ProjectPackageJson");
10
8
  let CliYaml = class CliYaml {
11
- projectPackageJson;
12
9
  fs;
13
10
  async read(path) {
14
- const file = !this.fs.exists(path) ? this.fs.findUpFile(this.projectPackageJson.dir, path) : path;
15
- if (file) {
16
- const content = await this.fs.readFile(file, { encoding: "utf8" });
17
- return js_yaml_1.default.load(content);
18
- }
19
- return {};
11
+ const content = await this.fs.readFile(path, { encoding: "utf8" });
12
+ return js_yaml_1.default.load(content);
20
13
  }
21
14
  async write(path, obj) {
22
15
  const content = js_yaml_1.default.dump(obj);
23
- const file = this.fs.findUpFile(this.projectPackageJson.dir, path) || (0, path_1.join)(this.projectPackageJson.dir, path);
24
- return this.fs.writeFile(file, content, { encoding: "utf8" });
16
+ return this.fs.writeFile(path, content, { encoding: "utf8" });
25
17
  }
26
18
  };
27
- tslib_1.__decorate([
28
- (0, di_1.Inject)(),
29
- tslib_1.__metadata("design:type", ProjectPackageJson_1.ProjectPackageJson)
30
- ], CliYaml.prototype, "projectPackageJson", void 0);
31
19
  tslib_1.__decorate([
32
20
  (0, di_1.Inject)(),
33
21
  tslib_1.__metadata("design:type", CliFs_1.CliFs)
@@ -1 +1 @@
1
- {"version":3,"file":"CliYaml.js","sourceRoot":"","sources":["../../../src/services/CliYaml.ts"],"names":[],"mappings":";;;;AAAA,iCAA4C;AAC5C,8DAA6B;AAC7B,+BAA0B;AAC1B,mCAA8B;AAC9B,6DAAwD;AAGjD,IAAM,OAAO,GAAb,MAAM,OAAO;IAER,kBAAkB,CAAqB;IAGvC,EAAE,CAAQ;IAEpB,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAElG,IAAI,IAAI,EAAE;YACR,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC;YAEjE,OAAO,iBAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC7B;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,GAAQ;QAChC,MAAM,OAAO,GAAG,iBAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEjC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,IAAA,WAAI,EAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAE9G,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC;IAC9D,CAAC;CACF,CAAA;AAzBC;IAAC,IAAA,WAAM,GAAE;sCACqB,uCAAkB;mDAAC;AAEjD;IAAC,IAAA,WAAM,GAAE;sCACK,aAAK;mCAAC;AALT,OAAO;IADnB,IAAA,eAAU,GAAE;GACA,OAAO,CA0BnB;AA1BY,0BAAO","sourcesContent":["import {Inject, Injectable} from \"@tsed/di\";\nimport JsYaml from \"js-yaml\";\nimport {join} from \"path\";\nimport {CliFs} from \"./CliFs\";\nimport {ProjectPackageJson} from \"./ProjectPackageJson\";\n\n@Injectable()\nexport class CliYaml {\n @Inject()\n protected projectPackageJson: ProjectPackageJson;\n\n @Inject()\n protected fs: CliFs;\n\n async read(path: string) {\n const file = !this.fs.exists(path) ? this.fs.findUpFile(this.projectPackageJson.dir, path) : path;\n\n if (file) {\n const content = await this.fs.readFile(file, {encoding: \"utf8\"});\n\n return JsYaml.load(content);\n }\n\n return {};\n }\n\n async write(path: string, obj: any) {\n const content = JsYaml.dump(obj);\n\n const file = this.fs.findUpFile(this.projectPackageJson.dir, path) || join(this.projectPackageJson.dir, path);\n\n return this.fs.writeFile(file, content, {encoding: \"utf8\"});\n }\n}\n"]}
1
+ {"version":3,"file":"CliYaml.js","sourceRoot":"","sources":["../../../src/services/CliYaml.ts"],"names":[],"mappings":";;;;AAAA,iCAA4C;AAC5C,8DAA6B;AAC7B,mCAA8B;AAGvB,IAAM,OAAO,GAAb,MAAM,OAAO;IAER,EAAE,CAAQ;IAEpB,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC;QAEjE,OAAO,iBAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,GAAQ;QAChC,MAAM,OAAO,GAAG,iBAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEjC,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC;IAC9D,CAAC;CACF,CAAA;AAdC;IAAC,IAAA,WAAM,GAAE;sCACK,aAAK;mCAAC;AAFT,OAAO;IADnB,IAAA,eAAU,GAAE;GACA,OAAO,CAenB;AAfY,0BAAO","sourcesContent":["import {Inject, Injectable} from \"@tsed/di\";\nimport JsYaml from \"js-yaml\";\nimport {CliFs} from \"./CliFs\";\n\n@Injectable()\nexport class CliYaml {\n @Inject()\n protected fs: CliFs;\n\n async read(path: string) {\n const content = await this.fs.readFile(path, {encoding: \"utf8\"});\n\n return JsYaml.load(content);\n }\n\n async write(path: string, obj: any) {\n const content = JsYaml.dump(obj);\n\n return this.fs.writeFile(path, content, {encoding: \"utf8\"});\n }\n}\n"]}
@@ -3,13 +3,25 @@ import { Inject, Injectable } from "@tsed/di";
3
3
  import { snakeCase } from "change-case";
4
4
  import { CliYaml } from "./CliYaml.js";
5
5
  import { setValue } from "@tsed/core";
6
+ import { join } from "path";
7
+ import { CliFs } from "./CliFs.js";
8
+ import { ProjectPackageJson } from "./ProjectPackageJson.js";
6
9
  let CliDockerComposeYaml = class CliDockerComposeYaml {
7
10
  cliYaml;
11
+ fs;
12
+ projectPackageJson;
8
13
  async read() {
9
- return this.cliYaml.read("docker-compose.yml");
14
+ const path = "docker-compose.yml";
15
+ const file = !this.fs.exists(path) ? this.fs.findUpFile(this.projectPackageJson.dir, path) : path;
16
+ if (file) {
17
+ return this.cliYaml.read("docker-compose.yml");
18
+ }
19
+ return {};
10
20
  }
11
21
  async write(obj) {
12
- return this.cliYaml.write("docker-compose.yml", obj);
22
+ const path = "docker-compose.yml";
23
+ const file = this.fs.findUpFile(this.projectPackageJson.dir, path) || join(this.projectPackageJson.dir, path);
24
+ return this.cliYaml.write(file, obj);
13
25
  }
14
26
  async addDatabaseService(name, database) {
15
27
  const dockerCompose = await this.read();
@@ -75,6 +87,14 @@ __decorate([
75
87
  Inject(),
76
88
  __metadata("design:type", CliYaml)
77
89
  ], CliDockerComposeYaml.prototype, "cliYaml", void 0);
90
+ __decorate([
91
+ Inject(),
92
+ __metadata("design:type", CliFs)
93
+ ], CliDockerComposeYaml.prototype, "fs", void 0);
94
+ __decorate([
95
+ Inject(),
96
+ __metadata("design:type", ProjectPackageJson)
97
+ ], CliDockerComposeYaml.prototype, "projectPackageJson", void 0);
78
98
  CliDockerComposeYaml = __decorate([
79
99
  Injectable()
80
100
  ], CliDockerComposeYaml);
@@ -1 +1 @@
1
- {"version":3,"file":"CliDockerComposeYaml.js","sourceRoot":"","sources":["../../../src/services/CliDockerComposeYaml.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAG7B,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAErB,OAAO,CAAU;IAE3B,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAQ;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAY,EAAE,QAAgB;QACrD,MAAM,aAAa,GAAQ,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,aAAa,EAAE;YACjB,IAAI,KAAU,CAAC;YACf,QAAQ,QAAQ,EAAE;gBAChB,KAAK,OAAO,CAAC;gBACb,KAAK,SAAS;oBACZ,KAAK,GAAG;wBACN,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB;wBACtE,KAAK,EAAE,CAAC,WAAW,CAAC;wBACpB,WAAW,EAAE;4BACX,mBAAmB,EAAE,OAAO;4BAC5B,UAAU,EAAE,MAAM;4BAClB,cAAc,EAAE,MAAM;4BACtB,cAAc,EAAE,MAAM;yBACvB;qBACF,CAAC;oBACF,MAAM;gBACR,KAAK,UAAU;oBACb,KAAK,GAAG;wBACN,KAAK,EAAE,gBAAgB;wBACvB,KAAK,EAAE,CAAC,WAAW,CAAC;wBACpB,OAAO,EAAE,CAAC,mCAAmC,CAAC;wBAC9C,WAAW,EAAE;4BACX,aAAa,EAAE,MAAM;4BACrB,iBAAiB,EAAE,MAAM;4BACzB,WAAW,EAAE,MAAM;yBACpB;qBACF,CAAC;oBACF,MAAM;gBACR,KAAK,aAAa;oBAChB,KAAK,GAAG;wBACN,KAAK,EAAE,8BAA8B;wBACrC,OAAO,EAAE,kBAAkB;wBAC3B,KAAK,EAAE,CAAC,aAAa,CAAC;qBACvB,CAAC;oBACF,MAAM;gBACR,KAAK,OAAO;oBACV,KAAK,GAAG;wBACN,KAAK,EAAE,4CAA4C;wBACnD,OAAO,EAAE,kBAAkB;wBAC3B,KAAK,EAAE,CAAC,WAAW,CAAC;wBACpB,WAAW,EAAE;4BACX,WAAW,EAAE,YAAY;4BACzB,WAAW,EAAE,GAAG;yBACjB;qBACF,CAAC;oBACF,MAAM;gBACR,KAAK,SAAS;oBACZ,KAAK,GAAG;wBACN,KAAK,EAAE,aAAa;wBACpB,KAAK,EAAE,CAAC,aAAa,CAAC;qBACvB,CAAC;oBACF,MAAM;aACT;YAED,QAAQ,CAAC,aAAa,EAAE,YAAY,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC9D,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;SACjC;IACH,CAAC;CACF,CAAA;AAvEC;IAAC,MAAM,EAAE;8BACU,OAAO;qDAAC;AAFhB,oBAAoB;IADhC,UAAU,EAAE;GACA,oBAAoB,CAwEhC;SAxEY,oBAAoB","sourcesContent":["import {Inject, Injectable} from \"@tsed/di\";\nimport {snakeCase} from \"change-case\";\nimport {CliYaml} from \"./CliYaml\";\nimport {setValue} from \"@tsed/core\";\n\n@Injectable()\nexport class CliDockerComposeYaml {\n @Inject()\n protected cliYaml: CliYaml;\n\n async read() {\n return this.cliYaml.read(\"docker-compose.yml\");\n }\n\n async write(obj: any) {\n return this.cliYaml.write(\"docker-compose.yml\", obj);\n }\n\n async addDatabaseService(name: string, database: string) {\n const dockerCompose: any = await this.read();\n if (dockerCompose) {\n let value: any;\n switch (database) {\n case \"mysql\":\n case \"mariadb\":\n value = {\n image: database === \"mysql\" ? \"mysql:8.0.28-oracle\" : \"mariadb:10.7.3\",\n ports: [\"3306:3306\"],\n environment: {\n MYSQL_ROOT_PASSWORD: \"admin\",\n MYSQL_USER: \"test\",\n MYSQL_PASSWORD: \"test\",\n MYSQL_DATABASE: \"test\"\n }\n };\n break;\n case \"postgres\":\n value = {\n image: \"postgres:9.6.1\",\n ports: [\"5432:5432\"],\n volumes: [\"./pgdata:/var/lib/postgresql/data\"],\n environment: {\n POSTGRES_USER: \"test\",\n POSTGRES_PASSWORD: \"test\",\n POSTGRES_DB: \"test\"\n }\n };\n break;\n case \"cockroachdb\":\n value = {\n image: \"cockroachdb/cockroach:v2.1.4\",\n command: \"start --insecure\",\n ports: [\"26257:26257\"]\n };\n break;\n case \"mssql\":\n value = {\n image: \"mcr.microsoft.com/mssql/server:2017-latest\",\n command: \"start --insecure\",\n ports: [\"1433:1433\"],\n environment: {\n SA_PASSWORD: \"Admin12345\",\n ACCEPT_EULA: \"Y\"\n }\n };\n break;\n case \"mongodb\":\n value = {\n image: \"mongo:5.0.8\",\n ports: [\"27017:27017\"]\n };\n break;\n }\n\n setValue(dockerCompose, `services.${snakeCase(name)}`, value);\n await this.write(dockerCompose);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"CliDockerComposeYaml.js","sourceRoot":"","sources":["../../../src/services/CliDockerComposeYaml.ts"],"names":[],"mappings":"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","sourcesContent":["import {Inject, Injectable} from \"@tsed/di\";\nimport {snakeCase} from \"change-case\";\nimport {CliYaml} from \"./CliYaml\";\nimport {setValue} from \"@tsed/core\";\nimport {join} from \"path\";\nimport {CliFs} from \"./CliFs\";\nimport {ProjectPackageJson} from \"./ProjectPackageJson\";\n\n@Injectable()\nexport class CliDockerComposeYaml {\n @Inject()\n protected cliYaml: CliYaml;\n\n @Inject()\n protected fs: CliFs;\n\n @Inject()\n protected projectPackageJson: ProjectPackageJson;\n\n async read() {\n const path = \"docker-compose.yml\";\n const file = !this.fs.exists(path) ? this.fs.findUpFile(this.projectPackageJson.dir, path) : path;\n\n if (file) {\n return this.cliYaml.read(\"docker-compose.yml\");\n }\n\n return {};\n }\n\n async write(obj: any) {\n const path = \"docker-compose.yml\";\n const file = this.fs.findUpFile(this.projectPackageJson.dir, path) || join(this.projectPackageJson.dir, path);\n\n return this.cliYaml.write(file, obj);\n }\n\n async addDatabaseService(name: string, database: string) {\n const dockerCompose: any = await this.read();\n if (dockerCompose) {\n let value: any;\n switch (database) {\n case \"mysql\":\n case \"mariadb\":\n value = {\n image: database === \"mysql\" ? \"mysql:8.0.28-oracle\" : \"mariadb:10.7.3\",\n ports: [\"3306:3306\"],\n environment: {\n MYSQL_ROOT_PASSWORD: \"admin\",\n MYSQL_USER: \"test\",\n MYSQL_PASSWORD: \"test\",\n MYSQL_DATABASE: \"test\"\n }\n };\n break;\n case \"postgres\":\n value = {\n image: \"postgres:9.6.1\",\n ports: [\"5432:5432\"],\n volumes: [\"./pgdata:/var/lib/postgresql/data\"],\n environment: {\n POSTGRES_USER: \"test\",\n POSTGRES_PASSWORD: \"test\",\n POSTGRES_DB: \"test\"\n }\n };\n break;\n case \"cockroachdb\":\n value = {\n image: \"cockroachdb/cockroach:v2.1.4\",\n command: \"start --insecure\",\n ports: [\"26257:26257\"]\n };\n break;\n case \"mssql\":\n value = {\n image: \"mcr.microsoft.com/mssql/server:2017-latest\",\n command: \"start --insecure\",\n ports: [\"1433:1433\"],\n environment: {\n SA_PASSWORD: \"Admin12345\",\n ACCEPT_EULA: \"Y\"\n }\n };\n break;\n case \"mongodb\":\n value = {\n image: \"mongo:5.0.8\",\n ports: [\"27017:27017\"]\n };\n break;\n }\n\n setValue(dockerCompose, `services.${snakeCase(name)}`, value);\n await this.write(dockerCompose);\n }\n }\n}\n"]}
@@ -14,6 +14,9 @@ let CliFs = class CliFs {
14
14
  async readFile(file, encoding) {
15
15
  return this.raw.readFile(file, encoding);
16
16
  }
17
+ async writeJson(file, data, options) {
18
+ await this.raw.writeFile(file, JSON.stringify(data, null, 2), options || { encoding: "utf8" });
19
+ }
17
20
  writeFileSync(path, data, options) {
18
21
  return this.raw.writeFileSync(path, data, options);
19
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CliFs.js","sourceRoot":"","sources":["../../../src/services/CliFs.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,OAAO,EAAC,IAAI,EAAC,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAG5C,IAAM,KAAK,GAAX,MAAM,KAAK;IAChB,GAAG,GAAG,EAAE,CAAC;IAET,MAAM,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,GAAG,IAAc;QACpB,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAA8B,EAAE,QAAc;QAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAQ,CAAC;IAClD,CAAC;IAED,aAAa,CAAC,IAAuB,EAAE,IAAS,EAAE,OAA0B;QAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,SAAS,CAAC,IAA8B,EAAE,IAAS,EAAE,OAAmC;QACtF,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAc,CAAC,CAAC;IACxD,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,OAAgC;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,OAAgC;QAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,IAAY;QACnC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAChI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAClB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,OAAe,OAAO,CAAC,GAAG,EAAE;QAC1D,IAAI;YACF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;gBAC1C,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;aAC1B;SACF;QAAC,OAAO,EAAE,EAAE,GAAE;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;QAE9D,IAAI,IAAI,EAAE;YACR,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;SACrB;QAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;CACF,CAAA;AApDY,KAAK;IADjB,UAAU,EAAE;GACA,KAAK,CAoDjB;SApDY,KAAK","sourcesContent":["import {Injectable} from \"@tsed/di\";\nimport {PathLike, WriteFileOptions} from \"fs\";\nimport Fs from \"fs-extra\";\nimport {EnsureOptions} from \"fs-extra\";\nimport {join} from \"path\";\nimport {normalizePath} from \"@tsed/normalize-path\";\n\n@Injectable()\nexport class CliFs {\n raw = Fs;\n\n exists(path: string) {\n return this.raw.existsSync(path);\n }\n\n join(...args: string[]) {\n return normalizePath(join(...args));\n }\n\n async readFile(file: string | Buffer | number, encoding?: any): Promise<string> {\n return this.raw.readFile(file, encoding) as any;\n }\n\n writeFileSync(path: PathLike | number, data: any, options?: WriteFileOptions) {\n return this.raw.writeFileSync(path, data, options);\n }\n\n writeFile(file: string | Buffer | number, data: any, options?: WriteFileOptions | string) {\n return this.raw.writeFile(file, data, options as any);\n }\n\n ensureDir(path: string, options?: EnsureOptions | number) {\n return this.raw.ensureDir(path, options);\n }\n\n ensureDirSync(path: string, options?: EnsureOptions | number): void {\n return this.raw.ensureDirSync(path, options);\n }\n\n findUpFile(root: string, file: string) {\n return [join(root, file), join(root, \"..\", file), join(root, \"..\", \"..\", file), join(root, \"..\", \"..\", \"..\", file)].find((path) =>\n this.exists(path)\n );\n }\n\n async importModule(mod: string, root: string = process.cwd()) {\n try {\n if (process.env.NODE_ENV === \"development\") {\n return await import(mod);\n }\n } catch (er) {}\n\n const path = this.findUpFile(root, join(\"node_modules\", mod));\n\n if (path) {\n return import(path);\n }\n\n return import(mod);\n }\n}\n"]}
1
+ {"version":3,"file":"CliFs.js","sourceRoot":"","sources":["../../../src/services/CliFs.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,OAAO,EAAC,IAAI,EAAC,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAG5C,IAAM,KAAK,GAAX,MAAM,KAAK;IAChB,GAAG,GAAG,EAAE,CAAC;IAET,MAAM,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,GAAG,IAAc;QACpB,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAA8B,EAAE,QAAc;QAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAQ,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAA8B,EAAE,IAAS,EAAE,OAAmC;QAC5F,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,IAAK,EAAC,QAAQ,EAAE,MAAM,EAAS,CAAC,CAAC;IACxG,CAAC;IAED,aAAa,CAAC,IAAuB,EAAE,IAAS,EAAE,OAA0B;QAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,SAAS,CAAC,IAA8B,EAAE,IAAS,EAAE,OAAmC;QACtF,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAc,CAAC,CAAC;IACxD,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,OAAgC;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,OAAgC;QAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,IAAY;QACnC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAChI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAClB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,OAAe,OAAO,CAAC,GAAG,EAAE;QAC1D,IAAI;YACF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;gBAC1C,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;aAC1B;SACF;QAAC,OAAO,EAAE,EAAE,GAAE;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;QAE9D,IAAI,IAAI,EAAE;YACR,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;SACrB;QAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;CACF,CAAA;AAxDY,KAAK;IADjB,UAAU,EAAE;GACA,KAAK,CAwDjB;SAxDY,KAAK","sourcesContent":["import {Injectable} from \"@tsed/di\";\nimport {PathLike, WriteFileOptions} from \"fs\";\nimport Fs from \"fs-extra\";\nimport {EnsureOptions} from \"fs-extra\";\nimport {join} from \"path\";\nimport {normalizePath} from \"@tsed/normalize-path\";\n\n@Injectable()\nexport class CliFs {\n raw = Fs;\n\n exists(path: string) {\n return this.raw.existsSync(path);\n }\n\n join(...args: string[]) {\n return normalizePath(join(...args));\n }\n\n async readFile(file: string | Buffer | number, encoding?: any): Promise<string> {\n return this.raw.readFile(file, encoding) as any;\n }\n\n async writeJson(file: string | Buffer | number, data: any, options?: WriteFileOptions | string): Promise<any> {\n await this.raw.writeFile(file, JSON.stringify(data, null, 2), options || ({encoding: \"utf8\"} as any));\n }\n\n writeFileSync(path: PathLike | number, data: any, options?: WriteFileOptions) {\n return this.raw.writeFileSync(path, data, options);\n }\n\n writeFile(file: string | Buffer | number, data: any, options?: WriteFileOptions | string) {\n return this.raw.writeFile(file, data, options as any);\n }\n\n ensureDir(path: string, options?: EnsureOptions | number) {\n return this.raw.ensureDir(path, options);\n }\n\n ensureDirSync(path: string, options?: EnsureOptions | number): void {\n return this.raw.ensureDirSync(path, options);\n }\n\n findUpFile(root: string, file: string) {\n return [join(root, file), join(root, \"..\", file), join(root, \"..\", \"..\", file), join(root, \"..\", \"..\", \"..\", file)].find((path) =>\n this.exists(path)\n );\n }\n\n async importModule(mod: string, root: string = process.cwd()) {\n try {\n if (process.env.NODE_ENV === \"development\") {\n return await import(mod);\n }\n } catch (er) {}\n\n const path = this.findUpFile(root, join(\"node_modules\", mod));\n\n if (path) {\n return import(path);\n }\n\n return import(mod);\n }\n}\n"]}
@@ -1,30 +1,18 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { Inject, Injectable } from "@tsed/di";
3
3
  import JsYaml from "js-yaml";
4
- import { join } from "path";
5
4
  import { CliFs } from "./CliFs.js";
6
- import { ProjectPackageJson } from "./ProjectPackageJson.js";
7
5
  let CliYaml = class CliYaml {
8
- projectPackageJson;
9
6
  fs;
10
7
  async read(path) {
11
- const file = !this.fs.exists(path) ? this.fs.findUpFile(this.projectPackageJson.dir, path) : path;
12
- if (file) {
13
- const content = await this.fs.readFile(file, { encoding: "utf8" });
14
- return JsYaml.load(content);
15
- }
16
- return {};
8
+ const content = await this.fs.readFile(path, { encoding: "utf8" });
9
+ return JsYaml.load(content);
17
10
  }
18
11
  async write(path, obj) {
19
12
  const content = JsYaml.dump(obj);
20
- const file = this.fs.findUpFile(this.projectPackageJson.dir, path) || join(this.projectPackageJson.dir, path);
21
- return this.fs.writeFile(file, content, { encoding: "utf8" });
13
+ return this.fs.writeFile(path, content, { encoding: "utf8" });
22
14
  }
23
15
  };
24
- __decorate([
25
- Inject(),
26
- __metadata("design:type", ProjectPackageJson)
27
- ], CliYaml.prototype, "projectPackageJson", void 0);
28
16
  __decorate([
29
17
  Inject(),
30
18
  __metadata("design:type", CliFs)
@@ -1 +1 @@
1
- {"version":3,"file":"CliYaml.js","sourceRoot":"","sources":["../../../src/services/CliYaml.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,UAAU,CAAC;AAC5C,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAC,IAAI,EAAC,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAGjD,IAAM,OAAO,GAAb,MAAM,OAAO;IAER,kBAAkB,CAAqB;IAGvC,EAAE,CAAQ;IAEpB,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAElG,IAAI,IAAI,EAAE;YACR,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC;YAEjE,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC7B;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,GAAQ;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEjC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAE9G,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC;IAC9D,CAAC;CACF,CAAA;AAzBC;IAAC,MAAM,EAAE;8BACqB,kBAAkB;mDAAC;AAEjD;IAAC,MAAM,EAAE;8BACK,KAAK;mCAAC;AALT,OAAO;IADnB,UAAU,EAAE;GACA,OAAO,CA0BnB;SA1BY,OAAO","sourcesContent":["import {Inject, Injectable} from \"@tsed/di\";\nimport JsYaml from \"js-yaml\";\nimport {join} from \"path\";\nimport {CliFs} from \"./CliFs\";\nimport {ProjectPackageJson} from \"./ProjectPackageJson\";\n\n@Injectable()\nexport class CliYaml {\n @Inject()\n protected projectPackageJson: ProjectPackageJson;\n\n @Inject()\n protected fs: CliFs;\n\n async read(path: string) {\n const file = !this.fs.exists(path) ? this.fs.findUpFile(this.projectPackageJson.dir, path) : path;\n\n if (file) {\n const content = await this.fs.readFile(file, {encoding: \"utf8\"});\n\n return JsYaml.load(content);\n }\n\n return {};\n }\n\n async write(path: string, obj: any) {\n const content = JsYaml.dump(obj);\n\n const file = this.fs.findUpFile(this.projectPackageJson.dir, path) || join(this.projectPackageJson.dir, path);\n\n return this.fs.writeFile(file, content, {encoding: \"utf8\"});\n }\n}\n"]}
1
+ {"version":3,"file":"CliYaml.js","sourceRoot":"","sources":["../../../src/services/CliYaml.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,UAAU,CAAC;AAC5C,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAGvB,IAAM,OAAO,GAAb,MAAM,OAAO;IAER,EAAE,CAAQ;IAEpB,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC;QAEjE,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,GAAQ;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEjC,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC;IAC9D,CAAC;CACF,CAAA;AAdC;IAAC,MAAM,EAAE;8BACK,KAAK;mCAAC;AAFT,OAAO;IADnB,UAAU,EAAE;GACA,OAAO,CAenB;SAfY,OAAO","sourcesContent":["import {Inject, Injectable} from \"@tsed/di\";\nimport JsYaml from \"js-yaml\";\nimport {CliFs} from \"./CliFs\";\n\n@Injectable()\nexport class CliYaml {\n @Inject()\n protected fs: CliFs;\n\n async read(path: string) {\n const content = await this.fs.readFile(path, {encoding: \"utf8\"});\n\n return JsYaml.load(content);\n }\n\n async write(path: string, obj: any) {\n const content = JsYaml.dump(obj);\n\n return this.fs.writeFile(path, content, {encoding: \"utf8\"});\n }\n}\n"]}
@@ -1,6 +1,10 @@
1
1
  import { CliYaml } from "./CliYaml";
2
+ import { CliFs } from "./CliFs";
3
+ import { ProjectPackageJson } from "./ProjectPackageJson";
2
4
  export declare class CliDockerComposeYaml {
3
5
  protected cliYaml: CliYaml;
6
+ protected fs: CliFs;
7
+ protected projectPackageJson: ProjectPackageJson;
4
8
  read(): Promise<unknown>;
5
9
  write(obj: any): Promise<void>;
6
10
  addDatabaseService(name: string, database: string): Promise<void>;
@@ -8,6 +8,7 @@ export declare class CliFs {
8
8
  exists(path: string): boolean;
9
9
  join(...args: string[]): string;
10
10
  readFile(file: string | Buffer | number, encoding?: any): Promise<string>;
11
+ writeJson(file: string | Buffer | number, data: any, options?: WriteFileOptions | string): Promise<any>;
11
12
  writeFileSync(path: PathLike | number, data: any, options?: WriteFileOptions): void;
12
13
  writeFile(file: string | Buffer | number, data: any, options?: WriteFileOptions | string): void;
13
14
  ensureDir(path: string, options?: EnsureOptions | number): Promise<void>;
@@ -1,7 +1,5 @@
1
1
  import { CliFs } from "./CliFs";
2
- import { ProjectPackageJson } from "./ProjectPackageJson";
3
2
  export declare class CliYaml {
4
- protected projectPackageJson: ProjectPackageJson;
5
3
  protected fs: CliFs;
6
4
  read(path: string): Promise<unknown>;
7
5
  write(path: string, obj: any): Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsed/cli-core",
3
- "version": "4.3.0",
3
+ "version": "4.4.1",
4
4
  "description": "Build your CLI with TypeScript and Decorators",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/cjs/index.js",