@wocker/ws 1.0.23 → 1.0.25

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 (110) hide show
  1. package/lib/AppModule.js +14 -25
  2. package/lib/controllers/DebugController.d.ts +1 -2
  3. package/lib/controllers/DebugController.js +4 -6
  4. package/lib/controllers/ExperimentalController.d.ts +1 -1
  5. package/lib/controllers/ExperimentalController.js +1 -2
  6. package/lib/controllers/PluginController.d.ts +1 -1
  7. package/lib/controllers/PluginController.js +1 -2
  8. package/lib/controllers/ProjectController.d.ts +7 -11
  9. package/lib/controllers/ProjectController.js +63 -217
  10. package/lib/controllers/index.d.ts +0 -1
  11. package/lib/controllers/index.js +0 -1
  12. package/lib/env.d.ts +2 -2
  13. package/lib/env.js +5 -5
  14. package/lib/main.js +4 -8
  15. package/lib/makes/index.d.ts +0 -1
  16. package/lib/makes/index.js +0 -1
  17. package/lib/modules/core/index.d.ts +2 -0
  18. package/lib/modules/core/index.js +45 -0
  19. package/lib/modules/docker/index.d.ts +3 -2
  20. package/lib/modules/docker/index.js +9 -5
  21. package/lib/modules/docker/services/ComposeService.d.ts +32 -0
  22. package/lib/modules/docker/services/ComposeService.js +129 -0
  23. package/lib/modules/docker/services/DockerService.d.ts +2 -2
  24. package/lib/modules/docker/services/DockerService.js +7 -29
  25. package/lib/modules/docker/services/ImageService.d.ts +2 -8
  26. package/lib/modules/docker/services/ImageService.js +15 -3
  27. package/lib/modules/docker/services/ModemService.d.ts +4 -2
  28. package/lib/modules/docker/services/ModemService.js +25 -5
  29. package/lib/modules/docker/services/ProtoService.js +2 -2
  30. package/lib/modules/docker/type/ComposeConfig.d.ts +12 -0
  31. package/lib/modules/docker/type/ComposeConfig.js +2 -0
  32. package/lib/modules/index.d.ts +3 -0
  33. package/lib/modules/index.js +3 -0
  34. package/lib/modules/keystore/controllers/KeystoreController.d.ts +1 -1
  35. package/lib/modules/keystore/controllers/KeystoreController.js +1 -2
  36. package/lib/modules/keystore/providers/FileKeystoreProvider.d.ts +3 -4
  37. package/lib/modules/keystore/providers/FileKeystoreProvider.js +4 -5
  38. package/lib/modules/keystore/services/KeystoreService.d.ts +3 -3
  39. package/lib/modules/keystore/services/KeystoreService.js +7 -6
  40. package/lib/modules/preset/controllers/PresetController.d.ts +18 -0
  41. package/lib/modules/preset/controllers/PresetController.js +158 -0
  42. package/lib/modules/preset/controllers/PresetListener.d.ts +15 -0
  43. package/lib/modules/preset/controllers/PresetListener.js +143 -0
  44. package/lib/modules/preset/index.d.ts +5 -0
  45. package/lib/modules/preset/index.js +39 -0
  46. package/lib/modules/preset/repositories/PresetRepository.d.ts +16 -0
  47. package/lib/{repositories → modules/preset/repositories}/PresetRepository.js +9 -11
  48. package/lib/{services → modules/preset/services}/PresetService.d.ts +4 -12
  49. package/lib/{services → modules/preset/services}/PresetService.js +31 -26
  50. package/lib/modules/project/controllers/ProjectController.d.ts +14 -0
  51. package/lib/modules/project/controllers/ProjectController.js +143 -0
  52. package/lib/modules/project/index.d.ts +5 -0
  53. package/lib/modules/project/index.js +39 -0
  54. package/lib/modules/project/repositories/ProjectRepository.d.ts +13 -0
  55. package/lib/modules/project/repositories/ProjectRepository.js +90 -0
  56. package/lib/modules/project/services/ProjectService.d.ts +25 -0
  57. package/lib/modules/project/services/ProjectService.js +253 -0
  58. package/lib/modules/proxy/controllers/CertController.d.ts +1 -1
  59. package/lib/modules/proxy/controllers/CertController.js +2 -2
  60. package/lib/modules/proxy/controllers/ProxyController.d.ts +4 -6
  61. package/lib/modules/proxy/controllers/ProxyController.js +9 -11
  62. package/lib/modules/proxy/index.js +3 -1
  63. package/lib/modules/proxy/services/CertService.d.ts +3 -4
  64. package/lib/modules/proxy/services/CertService.js +5 -6
  65. package/lib/modules/proxy/services/ProxyService.d.ts +3 -3
  66. package/lib/modules/proxy/services/ProxyService.js +18 -18
  67. package/lib/services/PluginService.d.ts +1 -3
  68. package/lib/services/PluginService.js +9 -13
  69. package/lib/utils/index.d.ts +0 -1
  70. package/lib/utils/index.js +0 -1
  71. package/package.json +7 -6
  72. package/lib/controllers/PresetController.d.ts +0 -27
  73. package/lib/controllers/PresetController.js +0 -364
  74. package/lib/makes/Logger.d.ts +0 -9
  75. package/lib/makes/Logger.js +0 -34
  76. package/lib/modules/app/index.d.ts +0 -2
  77. package/lib/modules/app/index.js +0 -16
  78. package/lib/repositories/PresetRepository.d.ts +0 -23
  79. package/lib/repositories/index.d.ts +0 -1
  80. package/lib/repositories/index.js +0 -17
  81. package/lib/services/AppConfigService.d.ts +0 -24
  82. package/lib/services/AppConfigService.js +0 -154
  83. package/lib/services/AppEventsService.d.ts +0 -9
  84. package/lib/services/AppEventsService.js +0 -43
  85. package/lib/services/LogService.d.ts +0 -15
  86. package/lib/services/LogService.js +0 -67
  87. package/lib/services/ProjectService.d.ts +0 -27
  88. package/lib/services/ProjectService.js +0 -206
  89. package/lib/utils/followProgress2.d.ts +0 -1
  90. package/lib/utils/followProgress2.js +0 -63
  91. package/plugins/proxmox/Dockerfile +0 -35
  92. package/plugins/proxy/Dockerfile +0 -25
  93. package/plugins/proxy/Procfile +0 -2
  94. package/plugins/proxy/bin/wocker-create-ca +0 -19
  95. package/plugins/proxy/bin/wocker-create-cert +0 -38
  96. package/plugins/proxy/bin/wocker-create-domains +0 -21
  97. package/presets/go/Dockerfile +0 -19
  98. package/presets/go/config.json +0 -14
  99. package/presets/php-fpm/Dockerfile +0 -173
  100. package/presets/php-fpm/bin/compare-version +0 -3
  101. package/presets/php-fpm/config.json +0 -55
  102. package/presets/php-fpm/etc/nginx/sites-available/default.conf +0 -36
  103. package/presets/shopify/Dockerfile +0 -160
  104. package/presets/shopify/bin/compare-version +0 -3
  105. package/presets/shopify/config.json +0 -26
  106. package/presets/shopify/etc/apache2/apache2.conf +0 -230
  107. package/presets/shopify/etc/apache2/mods-available/mpm_prefork.conf +0 -16
  108. package/presets/shopify/etc/apache2/sites-available/000-default.conf +0 -21
  109. package/proto/buildkit.proto +0 -55
  110. package/proto/solver/pb/ops.proto +0 -443
@@ -0,0 +1,158 @@
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
+ version: this.appConfigService.isExperimentalEnabled("buildKit") ? "2" : "1",
85
+ tag: imageName,
86
+ labels: {
87
+ presetName: preset.name
88
+ },
89
+ buildArgs: buildArgs,
90
+ context: preset.path,
91
+ dockerfile: preset.dockerfile
92
+ });
93
+ }
94
+ async presets() {
95
+ const presets = this.presetRepository.search();
96
+ return presets.map((preset) => {
97
+ return preset.name;
98
+ });
99
+ }
100
+ };
101
+ exports.PresetController = PresetController;
102
+ __decorate([
103
+ (0, core_1.Command)("preset:init"),
104
+ (0, core_1.Description)("Creates preset config for current dir"),
105
+ __metadata("design:type", Function),
106
+ __metadata("design:paramtypes", []),
107
+ __metadata("design:returntype", Promise)
108
+ ], PresetController.prototype, "init", null);
109
+ __decorate([
110
+ (0, core_1.Command)("preset:ls"),
111
+ (0, core_1.Description)("List of all available presets"),
112
+ __metadata("design:type", Function),
113
+ __metadata("design:paramtypes", []),
114
+ __metadata("design:returntype", Promise)
115
+ ], PresetController.prototype, "list", null);
116
+ __decorate([
117
+ (0, core_1.Command)("preset:install <preset>"),
118
+ (0, core_1.Command)("preset:install <preset>@<version>"),
119
+ (0, core_1.Description)("Adding preset from github repository"),
120
+ __param(0, (0, core_1.Param)("preset")),
121
+ __param(1, (0, core_1.Param)("version")),
122
+ __metadata("design:type", Function),
123
+ __metadata("design:paramtypes", [String, String]),
124
+ __metadata("design:returntype", Promise)
125
+ ], PresetController.prototype, "add", null);
126
+ __decorate([
127
+ (0, core_1.Command)("preset:destroy"),
128
+ __metadata("design:type", Function),
129
+ __metadata("design:paramtypes", []),
130
+ __metadata("design:returntype", Promise)
131
+ ], PresetController.prototype, "destroy", null);
132
+ __decorate([
133
+ (0, core_1.Command)("preset:delete <preset>"),
134
+ __param(0, (0, core_1.Param)("preset")),
135
+ __param(1, (0, core_1.Option)("yes", "y")),
136
+ __param(1, (0, core_1.Description)("Confirm deletion")),
137
+ __metadata("design:type", Function),
138
+ __metadata("design:paramtypes", [String, Boolean]),
139
+ __metadata("design:returntype", Promise)
140
+ ], PresetController.prototype, "delete", null);
141
+ __decorate([
142
+ (0, core_1.Command)("preset:build <preset>"),
143
+ (0, core_1.Description)("Build docker image form a preset"),
144
+ __param(0, (0, core_1.Param)("preset")),
145
+ __param(1, (0, core_1.Option)("rebuild", "r")),
146
+ __param(1, (0, core_1.Description)("Rebuild image")),
147
+ __metadata("design:type", Function),
148
+ __metadata("design:paramtypes", [String, Boolean]),
149
+ __metadata("design:returntype", Promise)
150
+ ], PresetController.prototype, "build", null);
151
+ exports.PresetController = PresetController = __decorate([
152
+ (0, core_1.Controller)(),
153
+ (0, core_1.Description)("Preset commands"),
154
+ __metadata("design:paramtypes", [core_1.AppConfigService,
155
+ docker_1.DockerService,
156
+ PresetRepository_1.PresetRepository,
157
+ PresetService_1.PresetService])
158
+ ], PresetController);
@@ -0,0 +1,15 @@
1
+ import { EventService, Project, 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 PresetListener {
6
+ protected readonly appConfigService: AppConfigService;
7
+ protected readonly eventService: EventService;
8
+ protected readonly dockerService: DockerService;
9
+ protected readonly presetRepository: PresetRepository;
10
+ protected readonly presetService: PresetService;
11
+ constructor(appConfigService: AppConfigService, eventService: EventService, dockerService: DockerService, presetRepository: PresetRepository, presetService: PresetService);
12
+ onInit(project: Project): Promise<void>;
13
+ protected onRebuild(project: Project): Promise<void>;
14
+ protected onBeforeStart(project: Project): Promise<void>;
15
+ }
@@ -0,0 +1,143 @@
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(appConfigService, eventService, dockerService, presetRepository, presetService) {
21
+ this.appConfigService = appConfigService;
22
+ this.eventService = eventService;
23
+ this.dockerService = dockerService;
24
+ this.presetRepository = presetRepository;
25
+ this.presetService = presetService;
26
+ this.eventService.on("project:init", (project) => this.onInit(project));
27
+ this.eventService.on("project:beforeStart", (project) => this.onBeforeStart(project));
28
+ this.eventService.on("project:rebuild", (project) => this.onRebuild(project));
29
+ }
30
+ async onInit(project) {
31
+ if (project.type !== core_1.PROJECT_TYPE_PRESET) {
32
+ return;
33
+ }
34
+ const presets = this.presetRepository.search();
35
+ if (presets.length === 0) {
36
+ throw new Error("No presets");
37
+ }
38
+ project.preset = await (0, utils_1.promptSelect)({
39
+ message: "Choose preset",
40
+ options: presets.map((preset) => {
41
+ return {
42
+ label: preset.name,
43
+ value: preset.name
44
+ };
45
+ }),
46
+ default: project.preset
47
+ });
48
+ project.presetMode = await (0, utils_1.promptSelect)({
49
+ message: "Preset mode",
50
+ options: [
51
+ {
52
+ label: "For project only",
53
+ value: "project"
54
+ },
55
+ {
56
+ label: "Global usage",
57
+ value: "global"
58
+ }
59
+ ],
60
+ default: project.presetMode
61
+ });
62
+ const preset = this.presetService.get(project.preset);
63
+ if (!preset) {
64
+ throw new Error("Preset not found");
65
+ }
66
+ if (preset.buildArgsOptions) {
67
+ project.buildArgs = await this.presetService.prompt(preset.buildArgsOptions, project.buildArgs);
68
+ }
69
+ if (preset.envOptions) {
70
+ project.env = await this.presetService.prompt(preset.envOptions, project.env);
71
+ }
72
+ if (preset.volumeOptions) {
73
+ for (let volume of preset.volumeOptions) {
74
+ volume = (0, utils_2.injectVariables)(volume, {
75
+ ...project.buildArgs || {},
76
+ ...project.env || {}
77
+ });
78
+ const { source, destination, options } = (0, utils_1.volumeParse)(volume);
79
+ let projectVolume = project.getVolumeByDestination(destination);
80
+ const newSource = await (0, utils_1.promptInput)({
81
+ message: "Volume",
82
+ required: true,
83
+ suffix: `:${destination}`,
84
+ default: projectVolume ? (0, utils_1.volumeParse)(projectVolume).source : source
85
+ });
86
+ projectVolume = (0, utils_1.volumeFormat)({
87
+ source: newSource,
88
+ destination,
89
+ options
90
+ });
91
+ project.volumeMount(projectVolume);
92
+ }
93
+ }
94
+ if (preset.dockerfile) {
95
+ project.imageName = this.presetService.getImageNameForProject(project, preset);
96
+ }
97
+ }
98
+ async onRebuild(project) {
99
+ if (project.type !== core_1.PROJECT_TYPE_PRESET) {
100
+ return;
101
+ }
102
+ const preset = this.presetService.get(project.preset);
103
+ if (!preset) {
104
+ throw new Error(`Preset ${project.preset} not found`);
105
+ }
106
+ const imageName = this.presetService.getImageNameForProject(project, preset);
107
+ const exists = await this.dockerService.imageExists(imageName);
108
+ if (exists) {
109
+ console.info(`Removing image: ${imageName}`);
110
+ await this.dockerService.imageRm(imageName);
111
+ }
112
+ }
113
+ async onBeforeStart(project) {
114
+ if (project.type !== core_1.PROJECT_TYPE_PRESET) {
115
+ return;
116
+ }
117
+ const preset = this.presetService.get(project.preset);
118
+ if (preset.dockerfile) {
119
+ project.imageName = this.presetService.getImageNameForProject(project, preset);
120
+ if (!await this.dockerService.imageExists(project.imageName)) {
121
+ await this.dockerService.buildImage({
122
+ version: this.appConfigService.isExperimentalEnabled("buildKit") ? "2" : "1",
123
+ tag: project.imageName,
124
+ labels: {
125
+ presetName: preset.name
126
+ },
127
+ buildArgs: project.buildArgs,
128
+ context: preset.path,
129
+ dockerfile: preset.dockerfile
130
+ });
131
+ }
132
+ }
133
+ }
134
+ };
135
+ exports.PresetListener = PresetListener;
136
+ exports.PresetListener = PresetListener = __decorate([
137
+ (0, core_1.Controller)(),
138
+ __metadata("design:paramtypes", [core_1.AppConfigService,
139
+ core_1.EventService,
140
+ docker_1.DockerService,
141
+ PresetRepository_1.PresetRepository,
142
+ PresetService_1.PresetService])
143
+ ], 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);
@@ -1,25 +1,17 @@
1
- import { EnvConfig, Project, Preset, PresetVariableConfig } from "@wocker/core";
2
- import { AppConfigService } from "./AppConfigService";
3
- import { LogService } from "./LogService";
1
+ import { Project, Preset, PresetVariableConfig, EnvConfig, AppConfigService, AppFileSystemService } from "@wocker/core";
4
2
  import { PresetRepository } from "../repositories/PresetRepository";
5
- type SearchOptions = Partial<{
6
- name: string;
7
- source: string;
8
- path: string;
9
- }>;
10
3
  export declare class PresetService {
11
4
  protected readonly appConfigService: AppConfigService;
5
+ protected readonly fs: AppFileSystemService;
12
6
  protected readonly presetRepository: PresetRepository;
13
- protected readonly logService: LogService;
14
- constructor(appConfigService: AppConfigService, presetRepository: PresetRepository, logService: LogService);
7
+ constructor(appConfigService: AppConfigService, fs: AppFileSystemService, presetRepository: PresetRepository);
15
8
  prompt(configMap: {
16
9
  [name: string]: PresetVariableConfig;
17
10
  }, values?: EnvConfig): Promise<EnvConfig>;
18
11
  getImageNameForProject(project: Project, preset: Preset): string;
19
12
  getImageName(preset: Preset, buildArgs: EnvConfig): string;
13
+ get(name?: string): Preset;
20
14
  init(): Promise<void>;
21
15
  deinit(): Promise<void>;
22
- get(name?: string): Preset;
23
16
  addPreset(name: string, repository?: string, version?: string): Promise<void>;
24
17
  }
25
- export { SearchOptions as PresetServiceSearchOptions };
@@ -16,15 +16,13 @@ exports.PresetService = void 0;
16
16
  const core_1 = require("@wocker/core");
17
17
  const utils_1 = require("@wocker/utils");
18
18
  const md5_1 = __importDefault(require("md5"));
19
- const AppConfigService_1 = require("./AppConfigService");
20
- const LogService_1 = require("./LogService");
21
19
  const PresetRepository_1 = require("../repositories/PresetRepository");
22
- const GithubClient_1 = require("../makes/GithubClient");
20
+ const GithubClient_1 = require("../../../makes/GithubClient");
23
21
  let PresetService = class PresetService {
24
- constructor(appConfigService, presetRepository, logService) {
22
+ constructor(appConfigService, fs, presetRepository) {
25
23
  this.appConfigService = appConfigService;
24
+ this.fs = fs;
26
25
  this.presetRepository = presetRepository;
27
- this.logService = logService;
28
26
  }
29
27
  async prompt(configMap, values = {}) {
30
28
  for (const name in configMap) {
@@ -36,24 +34,33 @@ let PresetService = class PresetService {
36
34
  required: config.required,
37
35
  default: typeof values[name] !== "undefined" && values[name] === "true"
38
36
  ? true
39
- : undefined,
37
+ : config.default
40
38
  });
41
39
  values[name] = value.toString();
42
40
  break;
43
41
  }
44
42
  case "select": {
43
+ const options = (0, utils_1.normalizeOptions)(config.options);
44
+ const defaultValue = config.multiple ? options.reduce((defaultValue, option) => {
45
+ if (values[option.value] === "true") {
46
+ return [
47
+ ...defaultValue,
48
+ option.value
49
+ ];
50
+ }
51
+ return defaultValue;
52
+ }, []) : values[name];
45
53
  const result = await (0, utils_1.promptSelect)({
46
54
  required: config.required,
47
55
  multiple: config.multiple,
48
56
  message: config.message,
49
57
  options: config.options,
50
- default: values[name]
58
+ default: defaultValue
51
59
  });
52
60
  if (!config.multiple) {
53
61
  values[name] = result;
54
62
  }
55
63
  else {
56
- const options = (0, utils_1.normalizeOptions)(config.options);
57
64
  for (const option of options) {
58
65
  if (result.includes(option.value)) {
59
66
  values[option.value] = "true";
@@ -117,6 +124,15 @@ let PresetService = class PresetService {
117
124
  }).join("-");
118
125
  return `ws-preset-${preset.name}:${version}`;
119
126
  }
127
+ get(name) {
128
+ const preset = name
129
+ ? this.presetRepository.searchOne({ name })
130
+ : this.presetRepository.searchOne({ path: this.appConfigService.pwd() });
131
+ if (!preset) {
132
+ throw new Error(name ? `Preset "${name}" not found` : "Preset not found");
133
+ }
134
+ return preset;
135
+ }
120
136
  async init() {
121
137
  const fs = new core_1.FileSystem(this.appConfigService.pwd());
122
138
  let preset = this.presetRepository.searchOne({
@@ -208,30 +224,19 @@ let PresetService = class PresetService {
208
224
  this.appConfigService.config.unregisterPreset(preset.name);
209
225
  this.appConfigService.save();
210
226
  }
211
- get(name) {
212
- const preset = name
213
- ? this.presetRepository.searchOne({ name })
214
- : this.presetRepository.searchOne({ path: this.appConfigService.pwd() });
215
- if (!preset) {
216
- throw new Error(name ? `Preset "${name}" not found` : "Preset not found");
217
- }
218
- return preset;
219
- }
220
227
  async addPreset(name, repository, version) {
228
+ if (!repository) {
229
+ repository = `kearisp/wocker-${name}-preset`;
230
+ }
221
231
  let preset = this.presetRepository.searchOne({
222
232
  name
223
233
  });
224
234
  if (!preset) {
225
235
  console.info("Loading...");
226
- if (!repository) {
227
- repository = `kearisp/wocker-${name}-preset`;
228
- }
229
236
  const [owner, repo] = repository.split("/");
230
237
  const github = new GithubClient_1.GithubClient(owner, repo);
231
238
  const info = await github.getInfo();
232
- const config = await github.getFile(info.default_branch, "config.json");
233
- console.log(config);
234
- await github.download(info.default_branch, this.appConfigService.fs.path(`presets/${name}`));
239
+ await github.download(info.default_branch, this.fs.path(`presets/${name}`));
235
240
  this.appConfigService.registerPreset(name, core_1.PRESET_SOURCE_GITHUB);
236
241
  }
237
242
  }
@@ -239,7 +244,7 @@ let PresetService = class PresetService {
239
244
  exports.PresetService = PresetService;
240
245
  exports.PresetService = PresetService = __decorate([
241
246
  (0, core_1.Injectable)(),
242
- __metadata("design:paramtypes", [AppConfigService_1.AppConfigService,
243
- PresetRepository_1.PresetRepository,
244
- LogService_1.LogService])
247
+ __metadata("design:paramtypes", [core_1.AppConfigService,
248
+ core_1.AppFileSystemService,
249
+ PresetRepository_1.PresetRepository])
245
250
  ], PresetService);
@@ -0,0 +1,14 @@
1
+ import { AppConfigService, ProcessService } from "@wocker/core";
2
+ import { PresetService } from "../../preset";
3
+ import { ProjectService } from "../services/ProjectService";
4
+ export declare class ProjectController {
5
+ protected readonly appConfigService: AppConfigService;
6
+ protected readonly processService: ProcessService;
7
+ protected readonly projectService: ProjectService;
8
+ protected readonly presetService: PresetService;
9
+ constructor(appConfigService: AppConfigService, processService: ProcessService, projectService: ProjectService, presetService: PresetService);
10
+ start(name?: string, restart?: boolean, build?: boolean, attach?: boolean): Promise<void>;
11
+ stop(name?: string): Promise<void>;
12
+ eject(name?: string): Promise<void>;
13
+ exec(command?: string[], name?: string): Promise<void>;
14
+ }