@wocker/ws 1.0.23 → 1.0.24

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.
Files changed (83) hide show
  1. package/lib/{AppModule.d.ts → RootModule.d.ts} +1 -1
  2. package/lib/{AppModule.js → RootModule.js} +32 -30
  3. package/lib/controllers/DebugController.d.ts +1 -2
  4. package/lib/controllers/DebugController.js +4 -6
  5. package/lib/controllers/ExperimentalController.d.ts +1 -1
  6. package/lib/controllers/ExperimentalController.js +1 -2
  7. package/lib/controllers/PluginController.d.ts +1 -1
  8. package/lib/controllers/PluginController.js +1 -2
  9. package/lib/controllers/ProjectController.d.ts +7 -10
  10. package/lib/controllers/ProjectController.js +64 -202
  11. package/lib/controllers/index.d.ts +0 -1
  12. package/lib/controllers/index.js +0 -1
  13. package/lib/env.d.ts +2 -2
  14. package/lib/env.js +3 -3
  15. package/lib/main.js +5 -9
  16. package/lib/makes/index.d.ts +0 -1
  17. package/lib/makes/index.js +0 -1
  18. package/lib/modules/app/index.js +17 -1
  19. package/lib/modules/docker/index.d.ts +2 -2
  20. package/lib/modules/docker/index.js +5 -5
  21. package/lib/modules/docker/services/DockerService.d.ts +2 -2
  22. package/lib/modules/docker/services/DockerService.js +5 -5
  23. package/lib/modules/docker/services/ModemService.d.ts +1 -0
  24. package/lib/modules/docker/services/ModemService.js +1 -0
  25. package/lib/modules/index.d.ts +3 -0
  26. package/lib/modules/index.js +3 -0
  27. package/lib/modules/keystore/controllers/KeystoreController.d.ts +1 -1
  28. package/lib/modules/keystore/controllers/KeystoreController.js +1 -2
  29. package/lib/modules/keystore/providers/FileKeystoreProvider.d.ts +3 -4
  30. package/lib/modules/keystore/providers/FileKeystoreProvider.js +4 -5
  31. package/lib/modules/keystore/services/KeystoreService.d.ts +4 -3
  32. package/lib/modules/keystore/services/KeystoreService.js +9 -6
  33. package/lib/modules/preset/controllers/PresetController.d.ts +18 -0
  34. package/lib/modules/preset/controllers/PresetController.js +157 -0
  35. package/lib/modules/preset/controllers/PresetListener.d.ts +14 -0
  36. package/lib/modules/preset/controllers/PresetListener.js +140 -0
  37. package/lib/modules/preset/index.d.ts +5 -0
  38. package/lib/modules/preset/index.js +39 -0
  39. package/lib/modules/preset/repositories/PresetRepository.d.ts +16 -0
  40. package/lib/{repositories → modules/preset/repositories}/PresetRepository.js +9 -11
  41. package/lib/{services → modules/preset/services}/PresetService.d.ts +4 -12
  42. package/lib/{services → modules/preset/services}/PresetService.js +20 -24
  43. package/lib/modules/project/controllers/ProjectController.d.ts +13 -0
  44. package/lib/modules/project/controllers/ProjectController.js +127 -0
  45. package/lib/modules/project/index.d.ts +5 -0
  46. package/lib/modules/project/index.js +39 -0
  47. package/lib/modules/project/repositories/ProjectRepository.d.ts +13 -0
  48. package/lib/modules/project/repositories/ProjectRepository.js +90 -0
  49. package/lib/modules/project/services/ProjectService.d.ts +21 -0
  50. package/lib/modules/project/services/ProjectService.js +211 -0
  51. package/lib/modules/proxy/controllers/CertController.d.ts +1 -1
  52. package/lib/modules/proxy/controllers/CertController.js +2 -2
  53. package/lib/modules/proxy/controllers/ProxyController.d.ts +4 -6
  54. package/lib/modules/proxy/controllers/ProxyController.js +9 -11
  55. package/lib/modules/proxy/index.js +3 -1
  56. package/lib/modules/proxy/services/CertService.d.ts +3 -4
  57. package/lib/modules/proxy/services/CertService.js +5 -6
  58. package/lib/modules/proxy/services/ProxyService.d.ts +3 -3
  59. package/lib/modules/proxy/services/ProxyService.js +14 -15
  60. package/lib/services/PluginService.d.ts +1 -3
  61. package/lib/services/PluginService.js +9 -13
  62. package/package.json +5 -5
  63. package/lib/controllers/PresetController.d.ts +0 -27
  64. package/lib/controllers/PresetController.js +0 -364
  65. package/lib/makes/Logger.d.ts +0 -9
  66. package/lib/makes/Logger.js +0 -34
  67. package/lib/repositories/PresetRepository.d.ts +0 -23
  68. package/lib/repositories/index.d.ts +0 -1
  69. package/lib/repositories/index.js +0 -17
  70. package/lib/services/AppConfigService.d.ts +0 -24
  71. package/lib/services/AppConfigService.js +0 -154
  72. package/lib/services/AppEventsService.d.ts +0 -9
  73. package/lib/services/AppEventsService.js +0 -43
  74. package/lib/services/LogService.d.ts +0 -15
  75. package/lib/services/LogService.js +0 -67
  76. package/lib/services/ProjectService.d.ts +0 -27
  77. package/lib/services/ProjectService.js +0 -206
  78. package/presets/go/Dockerfile +0 -19
  79. package/presets/go/config.json +0 -14
  80. package/presets/php-fpm/Dockerfile +0 -173
  81. package/presets/php-fpm/bin/compare-version +0 -3
  82. package/presets/php-fpm/config.json +0 -55
  83. package/presets/php-fpm/etc/nginx/sites-available/default.conf +0 -36
@@ -5,11 +5,11 @@ import { ContainerService } from "./ContainerService";
5
5
  import { ModemService } from "./ModemService";
6
6
  import { ImageService } from "./ImageService";
7
7
  export declare class DockerService extends CoreDockerService {
8
- protected readonly logService: LogService;
9
8
  protected readonly modemService: ModemService;
10
9
  protected readonly containerService: ContainerService;
11
10
  protected readonly imageService: ImageService;
12
- constructor(logService: LogService, modemService: ModemService, containerService: ContainerService, imageService: ImageService);
11
+ protected readonly logService: LogService;
12
+ constructor(modemService: ModemService, containerService: ContainerService, imageService: ImageService, logService: LogService);
13
13
  get docker(): Docker;
14
14
  createVolume(name: string): Promise<VolumeCreateResponse>;
15
15
  hasVolume(name: string): Promise<boolean>;
@@ -15,12 +15,12 @@ const ContainerService_1 = require("./ContainerService");
15
15
  const ModemService_1 = require("./ModemService");
16
16
  const ImageService_1 = require("./ImageService");
17
17
  let DockerService = class DockerService extends core_1.DockerService {
18
- constructor(logService, modemService, containerService, imageService) {
18
+ constructor(modemService, containerService, imageService, logService) {
19
19
  super();
20
- this.logService = logService;
21
20
  this.modemService = modemService;
22
21
  this.containerService = containerService;
23
22
  this.imageService = imageService;
23
+ this.logService = logService;
24
24
  }
25
25
  get docker() {
26
26
  return this.modemService.docker;
@@ -261,8 +261,8 @@ let DockerService = class DockerService extends core_1.DockerService {
261
261
  exports.DockerService = DockerService;
262
262
  exports.DockerService = DockerService = __decorate([
263
263
  (0, core_1.Injectable)("DOCKER_SERVICE"),
264
- __metadata("design:paramtypes", [core_1.LogService,
265
- ModemService_1.ModemService,
264
+ __metadata("design:paramtypes", [ModemService_1.ModemService,
266
265
  ContainerService_1.ContainerService,
267
- ImageService_1.ImageService])
266
+ ImageService_1.ImageService,
267
+ core_1.LogService])
268
268
  ], DockerService);
@@ -6,6 +6,7 @@ export declare class ModemService extends CoreModemService {
6
6
  protected readonly protoService: ProtoService;
7
7
  protected _modem?: Modem;
8
8
  protected _docker?: Docker;
9
+ protected record?: boolean;
9
10
  constructor(protoService: ProtoService);
10
11
  get modem(): Modem;
11
12
  get docker(): Docker;
@@ -17,6 +17,7 @@ let ModemService = class ModemService extends core_1.ModemService {
17
17
  constructor(protoService) {
18
18
  super();
19
19
  this.protoService = protoService;
20
+ this.record = true;
20
21
  }
21
22
  get modem() {
22
23
  if (!this._modem) {
@@ -1,3 +1,6 @@
1
+ export * from "./app";
1
2
  export * from "./docker";
2
3
  export * from "./keystore";
4
+ export * from "./preset";
5
+ export * from "./project";
3
6
  export * from "./proxy";
@@ -14,6 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./app"), exports);
17
18
  __exportStar(require("./docker"), exports);
18
19
  __exportStar(require("./keystore"), exports);
20
+ __exportStar(require("./preset"), exports);
21
+ __exportStar(require("./project"), exports);
19
22
  __exportStar(require("./proxy"), exports);
@@ -1,4 +1,4 @@
1
- import { AppConfigService } from "../../../services/AppConfigService";
1
+ import { AppConfigService } from "@wocker/core";
2
2
  import { KeystoreService } from "../services/KeystoreService";
3
3
  export declare class KeystoreController {
4
4
  protected readonly appConfigService: AppConfigService;
@@ -15,7 +15,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.KeystoreController = void 0;
16
16
  const core_1 = require("@wocker/core");
17
17
  const utils_1 = require("@wocker/utils");
18
- const AppConfigService_1 = require("../../../services/AppConfigService");
19
18
  const KeystoreService_1 = require("../services/KeystoreService");
20
19
  let KeystoreController = class KeystoreController {
21
20
  constructor(appConfigService, keystoreService) {
@@ -101,6 +100,6 @@ __decorate([
101
100
  exports.KeystoreController = KeystoreController = __decorate([
102
101
  (0, core_1.Controller)(),
103
102
  (0, core_1.Description)("Keystore commands"),
104
- __metadata("design:paramtypes", [AppConfigService_1.AppConfigService,
103
+ __metadata("design:paramtypes", [core_1.AppConfigService,
105
104
  KeystoreService_1.KeystoreService])
106
105
  ], KeystoreController);
@@ -1,12 +1,11 @@
1
- import { KeystoreProvider } from "@wocker/core";
2
- import { AppConfigService } from "../../../services/AppConfigService";
1
+ import { AppFileSystemService, KeystoreProvider } from "@wocker/core";
3
2
  import { FileKeystore } from "../types/FileKeystore";
4
3
  export declare class FileKeystoreProvider extends KeystoreProvider {
5
- protected readonly appConfigService: AppConfigService;
4
+ protected readonly fs: AppFileSystemService;
6
5
  protected password?: string;
7
6
  protected encryptionKey?: Buffer;
8
7
  protected _keystore?: FileKeystore;
9
- constructor(appConfigService: AppConfigService);
8
+ constructor(fs: AppFileSystemService);
10
9
  protected get keystore(): FileKeystore;
11
10
  protected get passwordHash(): string | undefined;
12
11
  protected getEncryptionKey(): Promise<Buffer>;
@@ -12,17 +12,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.FileKeystoreProvider = void 0;
13
13
  const core_1 = require("@wocker/core");
14
14
  const utils_1 = require("@wocker/utils");
15
- const AppConfigService_1 = require("../../../services/AppConfigService");
16
15
  const FileKeystore_1 = require("../types/FileKeystore");
17
16
  const utils_2 = require("../utils");
18
17
  let FileKeystoreProvider = class FileKeystoreProvider extends core_1.KeystoreProvider {
19
- constructor(appConfigService) {
18
+ constructor(fs) {
20
19
  super();
21
- this.appConfigService = appConfigService;
20
+ this.fs = fs;
22
21
  }
23
22
  get keystore() {
24
23
  if (!this._keystore) {
25
- const fs = this.appConfigService.fs;
24
+ const fs = this.fs;
26
25
  let data = {
27
26
  secrets: {}
28
27
  };
@@ -93,5 +92,5 @@ let FileKeystoreProvider = class FileKeystoreProvider extends core_1.KeystorePro
93
92
  exports.FileKeystoreProvider = FileKeystoreProvider;
94
93
  exports.FileKeystoreProvider = FileKeystoreProvider = __decorate([
95
94
  (0, core_1.Injectable)(),
96
- __metadata("design:paramtypes", [AppConfigService_1.AppConfigService])
95
+ __metadata("design:paramtypes", [core_1.AppFileSystemService])
97
96
  ], FileKeystoreProvider);
@@ -1,9 +1,10 @@
1
- import { KeystoreService as CoreKeystoreService, KeystoreProvider } from "@wocker/core";
2
- import { AppConfigService } from "../../../services/AppConfigService";
1
+ import { AppService, AppConfigService, AppFileSystemService, KeystoreService as CoreKeystoreService, KeystoreProvider } from "@wocker/core";
3
2
  export declare class KeystoreService extends CoreKeystoreService {
3
+ protected readonly appService: AppService;
4
4
  protected readonly appConfigService: AppConfigService;
5
+ protected readonly fs: AppFileSystemService;
5
6
  protected providers: Map<string, KeystoreProvider>;
6
- constructor(appConfigService: AppConfigService);
7
+ constructor(appService: AppService, appConfigService: AppConfigService, fs: AppFileSystemService);
7
8
  hasProvider(name: string): boolean;
8
9
  provider(name?: string): KeystoreProvider;
9
10
  get(keys: string | string[], byDefault?: string): Promise<string | undefined>;
@@ -11,13 +11,14 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.KeystoreService = void 0;
13
13
  const core_1 = require("@wocker/core");
14
- const AppConfigService_1 = require("../../../services/AppConfigService");
15
- const KeytarKeystoreProvider_1 = require("./../providers/KeytarKeystoreProvider");
16
- const FileKeystoreProvider_1 = require("./../providers/FileKeystoreProvider");
14
+ const KeytarKeystoreProvider_1 = require("../providers/KeytarKeystoreProvider");
15
+ const FileKeystoreProvider_1 = require("../providers/FileKeystoreProvider");
17
16
  let KeystoreService = class KeystoreService extends core_1.KeystoreService {
18
- constructor(appConfigService) {
17
+ constructor(appService, appConfigService, fs) {
19
18
  super();
19
+ this.appService = appService;
20
20
  this.appConfigService = appConfigService;
21
+ this.fs = fs;
21
22
  this.providers = new Map();
22
23
  }
23
24
  hasProvider(name) {
@@ -32,7 +33,7 @@ let KeystoreService = class KeystoreService extends core_1.KeystoreService {
32
33
  }
33
34
  switch (name) {
34
35
  case "file":
35
- return new FileKeystoreProvider_1.FileKeystoreProvider(this.appConfigService);
36
+ return new FileKeystoreProvider_1.FileKeystoreProvider(this.fs);
36
37
  case "keytar":
37
38
  return new KeytarKeystoreProvider_1.KeytarKeystoreProvider();
38
39
  default:
@@ -66,5 +67,7 @@ let KeystoreService = class KeystoreService extends core_1.KeystoreService {
66
67
  exports.KeystoreService = KeystoreService;
67
68
  exports.KeystoreService = KeystoreService = __decorate([
68
69
  (0, core_1.Injectable)("KEYSTORE_SERVICE"),
69
- __metadata("design:paramtypes", [AppConfigService_1.AppConfigService])
70
+ __metadata("design:paramtypes", [core_1.AppService,
71
+ core_1.AppConfigService,
72
+ core_1.AppFileSystemService])
70
73
  ], KeystoreService);
@@ -0,0 +1,18 @@
1
+ import { AppConfigService } from "@wocker/core";
2
+ import { DockerService } from "../../docker";
3
+ import { PresetRepository } from "../repositories/PresetRepository";
4
+ import { PresetService } from "../services/PresetService";
5
+ export declare class PresetController {
6
+ protected readonly appConfigService: AppConfigService;
7
+ protected readonly dockerService: DockerService;
8
+ protected readonly presetRepository: PresetRepository;
9
+ protected readonly presetService: PresetService;
10
+ constructor(appConfigService: AppConfigService, dockerService: DockerService, presetRepository: PresetRepository, presetService: PresetService);
11
+ init(): Promise<void>;
12
+ list(): Promise<string>;
13
+ add(name: string, version?: string): Promise<void>;
14
+ destroy(): Promise<void>;
15
+ delete(name: string, confirm?: boolean): Promise<void>;
16
+ build(presetName: string, rebuild?: boolean): Promise<void>;
17
+ presets(): Promise<string[]>;
18
+ }
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.PresetController = void 0;
19
+ const core_1 = require("@wocker/core");
20
+ const cli_table3_1 = __importDefault(require("cli-table3"));
21
+ const utils_1 = require("@wocker/utils");
22
+ const docker_1 = require("../../docker");
23
+ const PresetRepository_1 = require("../repositories/PresetRepository");
24
+ const PresetService_1 = require("../services/PresetService");
25
+ let PresetController = class PresetController {
26
+ constructor(appConfigService, dockerService, presetRepository, presetService) {
27
+ this.appConfigService = appConfigService;
28
+ this.dockerService = dockerService;
29
+ this.presetRepository = presetRepository;
30
+ this.presetService = presetService;
31
+ }
32
+ async init() {
33
+ await this.presetService.init();
34
+ }
35
+ async list() {
36
+ const presets = this.presetRepository.search();
37
+ const table = new cli_table3_1.default({
38
+ head: [
39
+ "Name",
40
+ "Source",
41
+ "Path"
42
+ ]
43
+ });
44
+ for (const preset of presets) {
45
+ table.push([
46
+ preset.name,
47
+ preset.source,
48
+ preset.source === core_1.PRESET_SOURCE_EXTERNAL ? preset.path : ""
49
+ ]);
50
+ }
51
+ return table.toString();
52
+ }
53
+ async add(name, version) {
54
+ await this.presetService.addPreset(name, version);
55
+ }
56
+ async destroy() {
57
+ await this.presetService.deinit();
58
+ }
59
+ async delete(name, confirm) {
60
+ const preset = this.presetService.get(name);
61
+ if (typeof confirm === "undefined" || confirm === null) {
62
+ confirm = await (0, utils_1.promptConfirm)({
63
+ message: `Delete preset ${name}?`,
64
+ default: false
65
+ });
66
+ }
67
+ if (!confirm) {
68
+ return;
69
+ }
70
+ console.info("Deleting...");
71
+ preset.delete();
72
+ }
73
+ async build(presetName, rebuild) {
74
+ const preset = this.presetService.get(presetName);
75
+ let buildArgs = {};
76
+ if (preset.buildArgsOptions) {
77
+ buildArgs = await this.presetService.prompt(preset.buildArgsOptions);
78
+ }
79
+ const imageName = this.presetService.getImageName(preset, buildArgs);
80
+ if (rebuild) {
81
+ await this.dockerService.imageRm(imageName);
82
+ }
83
+ await this.dockerService.buildImage({
84
+ tag: imageName,
85
+ labels: {
86
+ presetName: preset.name
87
+ },
88
+ buildArgs: buildArgs,
89
+ context: preset.path,
90
+ src: preset.dockerfile
91
+ });
92
+ }
93
+ async presets() {
94
+ const presets = this.presetRepository.search();
95
+ return presets.map((preset) => {
96
+ return preset.name;
97
+ });
98
+ }
99
+ };
100
+ exports.PresetController = PresetController;
101
+ __decorate([
102
+ (0, core_1.Command)("preset:init"),
103
+ (0, core_1.Description)("Creates preset config for current dir"),
104
+ __metadata("design:type", Function),
105
+ __metadata("design:paramtypes", []),
106
+ __metadata("design:returntype", Promise)
107
+ ], PresetController.prototype, "init", null);
108
+ __decorate([
109
+ (0, core_1.Command)("preset:ls"),
110
+ (0, core_1.Description)("List of all available presets"),
111
+ __metadata("design:type", Function),
112
+ __metadata("design:paramtypes", []),
113
+ __metadata("design:returntype", Promise)
114
+ ], PresetController.prototype, "list", null);
115
+ __decorate([
116
+ (0, core_1.Command)("preset:install <preset>"),
117
+ (0, core_1.Command)("preset:install <preset>@<version>"),
118
+ (0, core_1.Description)("Adding preset from github repository"),
119
+ __param(0, (0, core_1.Param)("preset")),
120
+ __param(1, (0, core_1.Param)("version")),
121
+ __metadata("design:type", Function),
122
+ __metadata("design:paramtypes", [String, String]),
123
+ __metadata("design:returntype", Promise)
124
+ ], PresetController.prototype, "add", null);
125
+ __decorate([
126
+ (0, core_1.Command)("preset:destroy"),
127
+ __metadata("design:type", Function),
128
+ __metadata("design:paramtypes", []),
129
+ __metadata("design:returntype", Promise)
130
+ ], PresetController.prototype, "destroy", null);
131
+ __decorate([
132
+ (0, core_1.Command)("preset:delete <preset>"),
133
+ __param(0, (0, core_1.Param)("preset")),
134
+ __param(1, (0, core_1.Option)("yes", "y")),
135
+ __param(1, (0, core_1.Description)("Confirm deletion")),
136
+ __metadata("design:type", Function),
137
+ __metadata("design:paramtypes", [String, Boolean]),
138
+ __metadata("design:returntype", Promise)
139
+ ], PresetController.prototype, "delete", null);
140
+ __decorate([
141
+ (0, core_1.Command)("preset:build <preset>"),
142
+ (0, core_1.Description)("Build docker image form a preset"),
143
+ __param(0, (0, core_1.Param)("preset")),
144
+ __param(1, (0, core_1.Option)("rebuild", "r")),
145
+ __param(1, (0, core_1.Description)("Rebuild image")),
146
+ __metadata("design:type", Function),
147
+ __metadata("design:paramtypes", [String, Boolean]),
148
+ __metadata("design:returntype", Promise)
149
+ ], PresetController.prototype, "build", null);
150
+ exports.PresetController = PresetController = __decorate([
151
+ (0, core_1.Controller)(),
152
+ (0, core_1.Description)("Preset commands"),
153
+ __metadata("design:paramtypes", [core_1.AppConfigService,
154
+ docker_1.DockerService,
155
+ PresetRepository_1.PresetRepository,
156
+ PresetService_1.PresetService])
157
+ ], PresetController);
@@ -0,0 +1,14 @@
1
+ import { EventService, Project } from "@wocker/core";
2
+ import { DockerService } from "../../docker";
3
+ import { PresetRepository } from "../repositories/PresetRepository";
4
+ import { PresetService } from "../services/PresetService";
5
+ export declare class PresetListener {
6
+ protected readonly eventService: EventService;
7
+ protected readonly dockerService: DockerService;
8
+ protected readonly presetRepository: PresetRepository;
9
+ protected readonly presetService: PresetService;
10
+ constructor(eventService: EventService, dockerService: DockerService, presetRepository: PresetRepository, presetService: PresetService);
11
+ onInit(project: Project): Promise<void>;
12
+ protected onRebuild(project: Project): Promise<void>;
13
+ protected onBeforeStart(project: Project): Promise<void>;
14
+ }
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PresetListener = void 0;
13
+ const core_1 = require("@wocker/core");
14
+ const utils_1 = require("@wocker/utils");
15
+ const docker_1 = require("../../docker");
16
+ const PresetRepository_1 = require("../repositories/PresetRepository");
17
+ const PresetService_1 = require("../services/PresetService");
18
+ const utils_2 = require("../../../utils");
19
+ let PresetListener = class PresetListener {
20
+ constructor(eventService, dockerService, presetRepository, presetService) {
21
+ this.eventService = eventService;
22
+ this.dockerService = dockerService;
23
+ this.presetRepository = presetRepository;
24
+ this.presetService = presetService;
25
+ this.eventService.on("project:init", (project) => this.onInit(project));
26
+ this.eventService.on("project:beforeStart", (project) => this.onBeforeStart(project));
27
+ this.eventService.on("project:rebuild", (project) => this.onRebuild(project));
28
+ }
29
+ async onInit(project) {
30
+ if (project.type !== core_1.PROJECT_TYPE_PRESET) {
31
+ return;
32
+ }
33
+ const presets = this.presetRepository.search();
34
+ if (presets.length === 0) {
35
+ throw new Error("No presets");
36
+ }
37
+ project.preset = await (0, utils_1.promptSelect)({
38
+ message: "Choose preset",
39
+ options: presets.map((preset) => {
40
+ return {
41
+ label: preset.name,
42
+ value: preset.name
43
+ };
44
+ }),
45
+ default: project.preset
46
+ });
47
+ project.presetMode = await (0, utils_1.promptSelect)({
48
+ message: "Preset mode",
49
+ options: [
50
+ {
51
+ label: "For project only",
52
+ value: "project"
53
+ },
54
+ {
55
+ label: "Global usage",
56
+ value: "global"
57
+ }
58
+ ],
59
+ default: project.presetMode
60
+ });
61
+ const preset = this.presetService.get(project.preset);
62
+ if (!preset) {
63
+ throw new Error("Preset not found");
64
+ }
65
+ if (preset.buildArgsOptions) {
66
+ project.buildArgs = await this.presetService.prompt(preset.buildArgsOptions, project.buildArgs);
67
+ }
68
+ if (preset.envOptions) {
69
+ project.env = await this.presetService.prompt(preset.envOptions, project.env);
70
+ }
71
+ if (preset.volumeOptions) {
72
+ for (let volume of preset.volumeOptions) {
73
+ volume = (0, utils_2.injectVariables)(volume, {
74
+ ...project.buildArgs || {},
75
+ ...project.env || {}
76
+ });
77
+ const { source, destination, options } = (0, utils_1.volumeParse)(volume);
78
+ let projectVolume = project.getVolumeByDestination(destination);
79
+ const newSource = await (0, utils_1.promptInput)({
80
+ message: "Volume",
81
+ required: true,
82
+ suffix: `:${destination}`,
83
+ default: projectVolume ? (0, utils_1.volumeParse)(projectVolume).source : source
84
+ });
85
+ projectVolume = (0, utils_1.volumeFormat)({
86
+ source: newSource,
87
+ destination,
88
+ options
89
+ });
90
+ project.volumeMount(projectVolume);
91
+ }
92
+ }
93
+ if (preset.dockerfile) {
94
+ project.imageName = this.presetService.getImageNameForProject(project, preset);
95
+ }
96
+ }
97
+ async onRebuild(project) {
98
+ if (project.type !== core_1.PROJECT_TYPE_PRESET) {
99
+ return;
100
+ }
101
+ const preset = this.presetService.get(project.preset);
102
+ if (!preset) {
103
+ throw new Error(`Preset ${project.preset} not found`);
104
+ }
105
+ const imageName = this.presetService.getImageNameForProject(project, preset);
106
+ const exists = await this.dockerService.imageExists(imageName);
107
+ if (exists) {
108
+ console.info(`Removing image: ${imageName}`);
109
+ await this.dockerService.imageRm(imageName);
110
+ }
111
+ }
112
+ async onBeforeStart(project) {
113
+ if (project.type !== core_1.PROJECT_TYPE_PRESET) {
114
+ return;
115
+ }
116
+ const preset = this.presetService.get(project.preset);
117
+ if (preset.dockerfile) {
118
+ project.imageName = this.presetService.getImageNameForProject(project, preset);
119
+ if (!await this.dockerService.imageExists(project.imageName)) {
120
+ await this.dockerService.buildImage({
121
+ tag: project.imageName,
122
+ labels: {
123
+ presetName: preset.name
124
+ },
125
+ buildArgs: project.buildArgs,
126
+ context: preset.path,
127
+ src: preset.dockerfile
128
+ });
129
+ }
130
+ }
131
+ }
132
+ };
133
+ exports.PresetListener = PresetListener;
134
+ exports.PresetListener = PresetListener = __decorate([
135
+ (0, core_1.Controller)(),
136
+ __metadata("design:paramtypes", [core_1.EventService,
137
+ docker_1.DockerService,
138
+ PresetRepository_1.PresetRepository,
139
+ PresetService_1.PresetService])
140
+ ], PresetListener);
@@ -0,0 +1,5 @@
1
+ import { PresetRepository } from "./repositories/PresetRepository";
2
+ import { PresetService } from "./services/PresetService";
3
+ export declare class PresetModule {
4
+ }
5
+ export { PresetRepository, PresetService };
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.PresetService = exports.PresetRepository = exports.PresetModule = void 0;
10
+ const core_1 = require("@wocker/core");
11
+ const docker_1 = require("../docker");
12
+ const PresetController_1 = require("./controllers/PresetController");
13
+ const PresetListener_1 = require("./controllers/PresetListener");
14
+ const PresetRepository_1 = require("./repositories/PresetRepository");
15
+ Object.defineProperty(exports, "PresetRepository", { enumerable: true, get: function () { return PresetRepository_1.PresetRepository; } });
16
+ const PresetService_1 = require("./services/PresetService");
17
+ Object.defineProperty(exports, "PresetService", { enumerable: true, get: function () { return PresetService_1.PresetService; } });
18
+ let PresetModule = class PresetModule {
19
+ };
20
+ exports.PresetModule = PresetModule;
21
+ exports.PresetModule = PresetModule = __decorate([
22
+ (0, core_1.Module)({
23
+ imports: [
24
+ docker_1.DockerModule
25
+ ],
26
+ controllers: [
27
+ PresetController_1.PresetController,
28
+ PresetListener_1.PresetListener
29
+ ],
30
+ providers: [
31
+ PresetRepository_1.PresetRepository,
32
+ PresetService_1.PresetService
33
+ ],
34
+ exports: [
35
+ PresetRepository_1.PresetRepository,
36
+ PresetService_1.PresetService
37
+ ]
38
+ })
39
+ ], PresetModule);
@@ -0,0 +1,16 @@
1
+ import { AppConfig, PresetServiceSearchOptions as SearchOptions, Preset, PresetSource, AppConfigService, LogService } from "@wocker/core";
2
+ type PresetData = {
3
+ name: string;
4
+ source: PresetSource;
5
+ path?: string;
6
+ };
7
+ export declare class PresetRepository {
8
+ protected readonly appConfigService: AppConfigService;
9
+ protected readonly logService: LogService;
10
+ constructor(appConfigService: AppConfigService, logService: LogService);
11
+ protected load(data: PresetData): Preset;
12
+ protected configs(): AppConfig["presets"];
13
+ search(options?: SearchOptions): Preset[];
14
+ searchOne(options?: SearchOptions): Preset | null;
15
+ }
16
+ export {};
@@ -11,12 +11,10 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.PresetRepository = void 0;
13
13
  const core_1 = require("@wocker/core");
14
- const AppConfigService_1 = require("../services/AppConfigService");
15
- const LogService_1 = require("../services/LogService");
16
- const env_1 = require("../env");
14
+ const env_1 = require("../../../env");
17
15
  let PresetRepository = class PresetRepository {
18
- constructor(appConfig, logService) {
19
- this.appConfig = appConfig;
16
+ constructor(appConfigService, logService) {
17
+ this.appConfigService = appConfigService;
20
18
  this.logService = logService;
21
19
  }
22
20
  load(data) {
@@ -37,7 +35,7 @@ let PresetRepository = class PresetRepository {
37
35
  fs.writeJSON("config.json", this.toObject());
38
36
  break;
39
37
  }
40
- _this.appConfig.registerPreset(this.name, this.source, data.path);
38
+ _this.appConfigService.registerPreset(this.name, this.source, data.path);
41
39
  }
42
40
  delete() {
43
41
  switch (this.source) {
@@ -49,13 +47,13 @@ let PresetRepository = class PresetRepository {
49
47
  }
50
48
  break;
51
49
  }
52
- _this.appConfig.unregisterPreset(this.name);
50
+ _this.appConfigService.unregisterPreset(this.name);
53
51
  }
54
52
  }(config);
55
53
  }
56
54
  configs() {
57
55
  const fs = new core_1.FileSystem(env_1.PRESETS_DIR), dirs = fs.exists("") ? fs.readdir("") : [];
58
- const { presets = [] } = this.appConfig.config;
56
+ const { presets = [] } = this.appConfigService.config;
59
57
  return [
60
58
  ...dirs.map((name) => {
61
59
  return {
@@ -68,7 +66,7 @@ let PresetRepository = class PresetRepository {
68
66
  if (item.source === core_1.PRESET_SOURCE_GITHUB) {
69
67
  return {
70
68
  ...item,
71
- path: this.appConfig.fs.path("presets", item.name)
69
+ path: this.appConfigService.fs.path("presets", item.name)
72
70
  };
73
71
  }
74
72
  return item;
@@ -110,6 +108,6 @@ let PresetRepository = class PresetRepository {
110
108
  exports.PresetRepository = PresetRepository;
111
109
  exports.PresetRepository = PresetRepository = __decorate([
112
110
  (0, core_1.Injectable)(),
113
- __metadata("design:paramtypes", [AppConfigService_1.AppConfigService,
114
- LogService_1.LogService])
111
+ __metadata("design:paramtypes", [core_1.AppConfigService,
112
+ core_1.LogService])
115
113
  ], PresetRepository);