@wocker/ws 1.0.32-beta.1 → 1.1.0-beta.0
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.
- package/lib/main.js +2 -2
- package/lib/makes/index.d.ts +0 -2
- package/lib/makes/index.js +0 -2
- package/lib/modules/core/controllers/DebugController.d.ts +3 -4
- package/lib/modules/core/controllers/DebugController.js +5 -22
- package/lib/modules/core/controllers/ExperimentalController.d.ts +3 -3
- package/lib/modules/core/controllers/ExperimentalController.js +1 -1
- package/lib/modules/dns/index.js +3 -3
- package/lib/modules/keystore/controllers/KeystoreController.d.ts +3 -3
- package/lib/modules/keystore/controllers/KeystoreController.js +6 -6
- package/lib/modules/keystore/services/KeystoreService.d.ts +3 -3
- package/lib/modules/keystore/services/KeystoreService.js +4 -4
- package/lib/modules/package-manager/service/PackageManager.d.ts +3 -3
- package/lib/modules/package-manager/service/PackageManager.js +7 -7
- package/lib/modules/plugin/controllers/PluginController.d.ts +3 -3
- package/lib/modules/plugin/controllers/PluginController.js +4 -4
- package/lib/modules/plugin/index.js +4 -5
- package/lib/modules/plugin/services/PluginService.d.ts +3 -3
- package/lib/modules/plugin/services/PluginService.js +11 -13
- package/lib/modules/preset/controllers/PresetController.d.ts +3 -3
- package/lib/modules/preset/controllers/PresetController.js +4 -4
- package/lib/modules/preset/controllers/PresetListener.d.ts +3 -3
- package/lib/modules/preset/controllers/PresetListener.js +7 -7
- package/lib/modules/preset/repositories/PresetRepository.d.ts +3 -3
- package/lib/modules/preset/repositories/PresetRepository.js +7 -7
- package/lib/modules/preset/services/PresetService.d.ts +4 -3
- package/lib/modules/preset/services/PresetService.js +19 -19
- package/lib/modules/project/controllers/ProjectController.d.ts +3 -3
- package/lib/modules/project/controllers/ProjectController.js +17 -24
- package/lib/modules/project/repositories/ProjectRepository.d.ts +1 -8
- package/lib/modules/project/repositories/ProjectRepository.js +1 -56
- package/lib/modules/project/services/ProjectService.d.ts +3 -3
- package/lib/modules/project/services/ProjectService.js +37 -37
- package/lib/modules/proxy/controllers/HttpAuthController.d.ts +3 -2
- package/lib/modules/proxy/controllers/HttpAuthController.js +29 -8
- package/lib/modules/proxy/controllers/ProxyController.d.ts +3 -3
- package/lib/modules/proxy/controllers/ProxyController.js +5 -5
- package/lib/modules/proxy/services/HttpAuthService.d.ts +3 -0
- package/lib/modules/proxy/services/HttpAuthService.js +29 -10
- package/lib/modules/proxy/services/ProxyService.d.ts +3 -3
- package/lib/modules/proxy/services/ProxyService.js +7 -7
- package/package.json +15 -5
- package/lib/makes/Version.d.ts +0 -22
- package/lib/makes/Version.js +0 -59
- package/lib/makes/VersionRange.d.ts +0 -6
- package/lib/makes/VersionRange.js +0 -18
- package/lib/makes/VersionRule.d.ts +0 -24
- package/lib/makes/VersionRule.js +0 -68
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { Project, Preset, PresetVariableConfig, EnvConfig,
|
|
1
|
+
import { Project, Preset, PresetVariableConfig, EnvConfig, AppService, ProcessService, AppFileSystemService } from "@wocker/core";
|
|
2
2
|
import { PresetRepository } from "../repositories/PresetRepository";
|
|
3
3
|
export declare class PresetService {
|
|
4
|
-
protected readonly
|
|
4
|
+
protected readonly appService: AppService;
|
|
5
|
+
protected readonly processService: ProcessService;
|
|
5
6
|
protected readonly fs: AppFileSystemService;
|
|
6
7
|
protected readonly presetRepository: PresetRepository;
|
|
7
8
|
protected range: string;
|
|
8
|
-
constructor(
|
|
9
|
+
constructor(appService: AppService, processService: ProcessService, fs: AppFileSystemService, presetRepository: PresetRepository);
|
|
9
10
|
prompt(configMap: {
|
|
10
11
|
[name: string]: PresetVariableConfig;
|
|
11
12
|
}, values?: EnvConfig): Promise<EnvConfig>;
|
|
@@ -17,11 +17,11 @@ const core_1 = require("@wocker/core");
|
|
|
17
17
|
const utils_1 = require("@wocker/utils");
|
|
18
18
|
const md5_1 = __importDefault(require("md5"));
|
|
19
19
|
const PresetRepository_1 = require("../repositories/PresetRepository");
|
|
20
|
-
const makes_1 = require("../../../makes");
|
|
21
20
|
const GithubClient_1 = require("../../../makes/GithubClient");
|
|
22
21
|
let PresetService = class PresetService {
|
|
23
|
-
constructor(
|
|
24
|
-
this.
|
|
22
|
+
constructor(appService, processService, fs, presetRepository) {
|
|
23
|
+
this.appService = appService;
|
|
24
|
+
this.processService = processService;
|
|
25
25
|
this.fs = fs;
|
|
26
26
|
this.presetRepository = presetRepository;
|
|
27
27
|
this.range = "1.x.x";
|
|
@@ -129,23 +129,23 @@ let PresetService = class PresetService {
|
|
|
129
129
|
get(name) {
|
|
130
130
|
const preset = name
|
|
131
131
|
? this.presetRepository.searchOne({ name })
|
|
132
|
-
: this.presetRepository.searchOne({ path: this.
|
|
132
|
+
: this.presetRepository.searchOne({ path: this.processService.pwd() });
|
|
133
133
|
if (!preset) {
|
|
134
134
|
throw new Error(name ? `Preset "${name}" not found` : "Preset not found");
|
|
135
135
|
}
|
|
136
136
|
return preset;
|
|
137
137
|
}
|
|
138
138
|
async init() {
|
|
139
|
-
const fs = this.fs.cd(this.
|
|
139
|
+
const fs = this.fs.cd(this.processService.pwd());
|
|
140
140
|
let preset = this.presetRepository.searchOne({
|
|
141
|
-
path: this.
|
|
141
|
+
path: this.processService.pwd()
|
|
142
142
|
});
|
|
143
143
|
if (preset) {
|
|
144
144
|
return;
|
|
145
145
|
}
|
|
146
146
|
if (fs.exists("config.json")) {
|
|
147
147
|
const config = fs.readJSON("config.json");
|
|
148
|
-
this.
|
|
148
|
+
this.appService.registerPreset(config.name, core_1.PRESET_SOURCE_EXTERNAL, fs.path());
|
|
149
149
|
return;
|
|
150
150
|
}
|
|
151
151
|
let config = {};
|
|
@@ -214,17 +214,16 @@ let PresetService = class PresetService {
|
|
|
214
214
|
return;
|
|
215
215
|
}
|
|
216
216
|
fs.writeJSON("config.json", config);
|
|
217
|
-
this.
|
|
217
|
+
this.appService.registerPreset(config.name, core_1.PRESET_SOURCE_EXTERNAL, fs.path());
|
|
218
218
|
}
|
|
219
219
|
async deinit() {
|
|
220
220
|
const preset = this.presetRepository.searchOne({
|
|
221
|
-
path: this.
|
|
221
|
+
path: this.processService.pwd()
|
|
222
222
|
});
|
|
223
223
|
if (!preset) {
|
|
224
224
|
return;
|
|
225
225
|
}
|
|
226
|
-
this.
|
|
227
|
-
this.appConfigService.save();
|
|
226
|
+
this.appService.unregisterPreset(preset.name);
|
|
228
227
|
}
|
|
229
228
|
async install(repository, version) {
|
|
230
229
|
if (!/^[\w-]+\/[\w-]+$/.test(repository)) {
|
|
@@ -233,11 +232,11 @@ let PresetService = class PresetService {
|
|
|
233
232
|
const [owner, name] = repository.split("/");
|
|
234
233
|
let satisfyingTag;
|
|
235
234
|
let satisfyingBranch;
|
|
236
|
-
const github = new GithubClient_1.GithubClient(owner, name), wRule =
|
|
235
|
+
const github = new GithubClient_1.GithubClient(owner, name), wRule = core_1.VersionRule.parse(this.range), rule = core_1.VersionRule.parse(["latest", "beta"].includes(version) ? "x" : version ?? this.range);
|
|
237
236
|
if (version !== "beta") {
|
|
238
237
|
satisfyingTag = (await github.getTags())
|
|
239
238
|
.filter((tag) => {
|
|
240
|
-
if (!
|
|
239
|
+
if (!core_1.Version.valid(tag.name)) {
|
|
241
240
|
return false;
|
|
242
241
|
}
|
|
243
242
|
return wRule.match(tag.name) || rule.match(tag.name);
|
|
@@ -246,13 +245,13 @@ let PresetService = class PresetService {
|
|
|
246
245
|
if (!tag) {
|
|
247
246
|
return nextTag;
|
|
248
247
|
}
|
|
249
|
-
return
|
|
248
|
+
return core_1.Version.parse(tag.name).compare(nextTag.name) < 0 ? nextTag : tag;
|
|
250
249
|
}, null);
|
|
251
250
|
}
|
|
252
251
|
if (!satisfyingTag) {
|
|
253
252
|
satisfyingBranch = (await github.getBranches())
|
|
254
253
|
.filter((branch) => {
|
|
255
|
-
if (!
|
|
254
|
+
if (!core_1.Version.valid(branch.name)) {
|
|
256
255
|
return false;
|
|
257
256
|
}
|
|
258
257
|
return wRule.match(branch.name) || rule.match(branch.name);
|
|
@@ -261,7 +260,7 @@ let PresetService = class PresetService {
|
|
|
261
260
|
if (!branch) {
|
|
262
261
|
return nextBranch;
|
|
263
262
|
}
|
|
264
|
-
return
|
|
263
|
+
return core_1.Version.parse(branch.name).compare(nextBranch.name) < 0 ? nextBranch : branch;
|
|
265
264
|
}, null);
|
|
266
265
|
}
|
|
267
266
|
if (!satisfyingTag && !satisfyingBranch) {
|
|
@@ -273,7 +272,7 @@ let PresetService = class PresetService {
|
|
|
273
272
|
let preset = this.presetRepository.searchOne({
|
|
274
273
|
name: config.name
|
|
275
274
|
});
|
|
276
|
-
if (preset && satisfyingTag && preset.source === core_1.PRESET_SOURCE_GITHUB &&
|
|
275
|
+
if (preset && satisfyingTag && preset.source === core_1.PRESET_SOURCE_GITHUB && core_1.Version.parse(ref).compare(preset.version) === 0) {
|
|
277
276
|
console.info("Preset already installed");
|
|
278
277
|
return;
|
|
279
278
|
}
|
|
@@ -289,7 +288,7 @@ let PresetService = class PresetService {
|
|
|
289
288
|
});
|
|
290
289
|
}
|
|
291
290
|
this.fs.mv(`presets/.tmp/${config.name}`, `presets/${config.name}`);
|
|
292
|
-
this.
|
|
291
|
+
this.appService.registerPreset(config.name, core_1.PRESET_SOURCE_GITHUB);
|
|
293
292
|
console.info("Preset installed successfully");
|
|
294
293
|
}
|
|
295
294
|
finally {
|
|
@@ -304,7 +303,8 @@ let PresetService = class PresetService {
|
|
|
304
303
|
exports.PresetService = PresetService;
|
|
305
304
|
exports.PresetService = PresetService = __decorate([
|
|
306
305
|
(0, core_1.Injectable)(),
|
|
307
|
-
__metadata("design:paramtypes", [core_1.
|
|
306
|
+
__metadata("design:paramtypes", [core_1.AppService,
|
|
307
|
+
core_1.ProcessService,
|
|
308
308
|
core_1.AppFileSystemService,
|
|
309
309
|
PresetRepository_1.PresetRepository])
|
|
310
310
|
], PresetService);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AppService, AppFileSystemService, ProcessService, EventService, ProjectType, LogService } from "@wocker/core";
|
|
2
2
|
import { DockerService } from "@wocker/docker-module";
|
|
3
3
|
import { PresetService } from "../../preset";
|
|
4
4
|
import { ProjectService } from "../services/ProjectService";
|
|
5
5
|
export declare class ProjectController {
|
|
6
|
-
protected readonly
|
|
6
|
+
protected readonly appService: AppService;
|
|
7
7
|
protected readonly fs: AppFileSystemService;
|
|
8
8
|
protected readonly processService: ProcessService;
|
|
9
9
|
protected readonly projectService: ProjectService;
|
|
@@ -11,7 +11,7 @@ export declare class ProjectController {
|
|
|
11
11
|
protected readonly eventService: EventService;
|
|
12
12
|
protected readonly dockerService: DockerService;
|
|
13
13
|
protected readonly logService: LogService;
|
|
14
|
-
constructor(
|
|
14
|
+
constructor(appService: AppService, fs: AppFileSystemService, processService: ProcessService, projectService: ProjectService, presetService: PresetService, eventService: EventService, dockerService: DockerService, logService: LogService);
|
|
15
15
|
protected getProjectNames(): Promise<string[]>;
|
|
16
16
|
getScriptNames(): Promise<string[]>;
|
|
17
17
|
init(name: string, type: ProjectType): Promise<void>;
|
|
@@ -26,8 +26,8 @@ const async_mutex_1 = require("async-mutex");
|
|
|
26
26
|
const preset_1 = require("../../preset");
|
|
27
27
|
const ProjectService_1 = require("../services/ProjectService");
|
|
28
28
|
let ProjectController = class ProjectController {
|
|
29
|
-
constructor(
|
|
30
|
-
this.
|
|
29
|
+
constructor(appService, fs, processService, projectService, presetService, eventService, dockerService, logService) {
|
|
30
|
+
this.appService = appService;
|
|
31
31
|
this.fs = fs;
|
|
32
32
|
this.processService = processService;
|
|
33
33
|
this.projectService = projectService;
|
|
@@ -57,11 +57,7 @@ let ProjectController = class ProjectController {
|
|
|
57
57
|
path: fs.path()
|
|
58
58
|
});
|
|
59
59
|
if (!project) {
|
|
60
|
-
project = new core_1.Project(
|
|
61
|
-
type: core_1.PROJECT_TYPE_IMAGE,
|
|
62
|
-
name: fs.basename(),
|
|
63
|
-
path: fs.path()
|
|
64
|
-
});
|
|
60
|
+
project = new core_1.Project(fs.basename(), fs.path());
|
|
65
61
|
}
|
|
66
62
|
project.path = fs.path();
|
|
67
63
|
if (name) {
|
|
@@ -91,7 +87,7 @@ let ProjectController = class ProjectController {
|
|
|
91
87
|
if (type) {
|
|
92
88
|
project.type = type;
|
|
93
89
|
}
|
|
94
|
-
const mapTypes = this.
|
|
90
|
+
const mapTypes = this.appService.getProjectTypes();
|
|
95
91
|
if (!type || !project.type || !mapTypes[project.type]) {
|
|
96
92
|
project.type = await (0, utils_1.promptSelect)({
|
|
97
93
|
message: "Project type",
|
|
@@ -101,7 +97,7 @@ let ProjectController = class ProjectController {
|
|
|
101
97
|
});
|
|
102
98
|
}
|
|
103
99
|
switch (project.type) {
|
|
104
|
-
case core_1.
|
|
100
|
+
case core_1.ProjectType.DOCKERFILE: {
|
|
105
101
|
const files = fs.readdir();
|
|
106
102
|
const dockerfiles = files.filter((fileName) => {
|
|
107
103
|
if (new RegExp("^(.*)\\.dockerfile$").test(fileName)) {
|
|
@@ -124,7 +120,7 @@ let ProjectController = class ProjectController {
|
|
|
124
120
|
});
|
|
125
121
|
break;
|
|
126
122
|
}
|
|
127
|
-
case core_1.
|
|
123
|
+
case core_1.ProjectType.IMAGE: {
|
|
128
124
|
project.imageName = await (0, utils_1.promptInput)({
|
|
129
125
|
message: "Image name",
|
|
130
126
|
required: true,
|
|
@@ -132,7 +128,7 @@ let ProjectController = class ProjectController {
|
|
|
132
128
|
});
|
|
133
129
|
break;
|
|
134
130
|
}
|
|
135
|
-
case core_1.
|
|
131
|
+
case core_1.ProjectType.COMPOSE: {
|
|
136
132
|
const composeFiles = fs.readdir().filter((file) => {
|
|
137
133
|
return /docker-compose\./.test(file);
|
|
138
134
|
});
|
|
@@ -147,7 +143,7 @@ let ProjectController = class ProjectController {
|
|
|
147
143
|
});
|
|
148
144
|
break;
|
|
149
145
|
}
|
|
150
|
-
case core_1.
|
|
146
|
+
case core_1.ProjectType.PRESET:
|
|
151
147
|
break;
|
|
152
148
|
default:
|
|
153
149
|
throw new Error("Invalid project type");
|
|
@@ -158,8 +154,7 @@ let ProjectController = class ProjectController {
|
|
|
158
154
|
async destroy(name) {
|
|
159
155
|
const project = this.projectService.get(name);
|
|
160
156
|
await this.projectService.stop(project);
|
|
161
|
-
this.
|
|
162
|
-
this.appConfigService.save();
|
|
157
|
+
this.appService.removeProject(project.name);
|
|
163
158
|
this.fs.rm(`projects/${project.name}`, {
|
|
164
159
|
recursive: true
|
|
165
160
|
});
|
|
@@ -329,7 +324,7 @@ let ProjectController = class ProjectController {
|
|
|
329
324
|
async clearPorts(name) {
|
|
330
325
|
const project = this.projectService.get(name);
|
|
331
326
|
if (project.ports) {
|
|
332
|
-
|
|
327
|
+
project.ports = [];
|
|
333
328
|
project.save();
|
|
334
329
|
}
|
|
335
330
|
}
|
|
@@ -338,10 +333,10 @@ let ProjectController = class ProjectController {
|
|
|
338
333
|
head: ["KEY", "VALUE"]
|
|
339
334
|
});
|
|
340
335
|
if (global) {
|
|
341
|
-
for (const i in this.
|
|
336
|
+
for (const i in this.appService.config.env) {
|
|
342
337
|
table.push([
|
|
343
338
|
i,
|
|
344
|
-
this.
|
|
339
|
+
this.appService.config.env[i]
|
|
345
340
|
]);
|
|
346
341
|
}
|
|
347
342
|
}
|
|
@@ -377,7 +372,7 @@ let ProjectController = class ProjectController {
|
|
|
377
372
|
}
|
|
378
373
|
async configGet(keys, name, global) {
|
|
379
374
|
let config = global
|
|
380
|
-
? this.
|
|
375
|
+
? this.appService.config
|
|
381
376
|
: this.projectService.get(name);
|
|
382
377
|
const table = new cli_table3_1.default({
|
|
383
378
|
head: ["KEY", "VALUE"]
|
|
@@ -399,9 +394,8 @@ let ProjectController = class ProjectController {
|
|
|
399
394
|
console.info(yoctocolors_cjs_1.default.yellow(`No value for "${key}"`));
|
|
400
395
|
continue;
|
|
401
396
|
}
|
|
402
|
-
this.
|
|
397
|
+
this.appService.setEnv(key.trim(), value.trim());
|
|
403
398
|
}
|
|
404
|
-
this.appConfigService.save();
|
|
405
399
|
return;
|
|
406
400
|
}
|
|
407
401
|
const project = this.projectService.get(name);
|
|
@@ -423,9 +417,8 @@ let ProjectController = class ProjectController {
|
|
|
423
417
|
}, {});
|
|
424
418
|
if (global) {
|
|
425
419
|
for (const i in env) {
|
|
426
|
-
this.
|
|
420
|
+
this.appService.unsetEnv(i);
|
|
427
421
|
}
|
|
428
|
-
this.appConfigService.save();
|
|
429
422
|
return;
|
|
430
423
|
}
|
|
431
424
|
const project = this.projectService.get(name);
|
|
@@ -502,7 +495,7 @@ let ProjectController = class ProjectController {
|
|
|
502
495
|
if (!copier.destination.exists(preset.dockerfile)) {
|
|
503
496
|
copier.copy(preset.dockerfile);
|
|
504
497
|
}
|
|
505
|
-
project.type =
|
|
498
|
+
project.type = core_1.ProjectType.DOCKERFILE;
|
|
506
499
|
project.dockerfile = preset.dockerfile;
|
|
507
500
|
}
|
|
508
501
|
const files = copier.source.readdir("", {
|
|
@@ -977,7 +970,7 @@ __decorate([
|
|
|
977
970
|
exports.ProjectController = ProjectController = __decorate([
|
|
978
971
|
(0, core_1.Controller)(),
|
|
979
972
|
(0, core_1.Description)("Project commands"),
|
|
980
|
-
__metadata("design:paramtypes", [core_1.
|
|
973
|
+
__metadata("design:paramtypes", [core_1.AppService,
|
|
981
974
|
core_1.AppFileSystemService,
|
|
982
975
|
core_1.ProcessService,
|
|
983
976
|
ProjectService_1.ProjectService,
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ProjectRepository as CoreProjectRepository } from "@wocker/core";
|
|
2
2
|
export declare class ProjectRepository extends CoreProjectRepository {
|
|
3
|
-
protected readonly appConfigService: AppConfigService;
|
|
4
|
-
protected readonly fs: AppFileSystemService;
|
|
5
|
-
constructor(appConfigService: AppConfigService, fs: AppFileSystemService);
|
|
6
|
-
getByName(name: string): Project;
|
|
7
|
-
save(project: Project): void;
|
|
8
|
-
search(params?: ProjectRepository.SearchParams): Project[];
|
|
9
|
-
searchOne(params?: ProjectRepository.SearchParams): Project | null;
|
|
10
3
|
}
|
|
11
4
|
export declare namespace ProjectRepository {
|
|
12
5
|
type SearchParams = CoreProjectRepository.SearchParams;
|
|
@@ -5,67 +5,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
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
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
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
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
9
|
exports.ProjectRepository = void 0;
|
|
13
10
|
const core_1 = require("@wocker/core");
|
|
14
11
|
let ProjectRepository = class ProjectRepository extends core_1.ProjectRepository {
|
|
15
|
-
constructor(appConfigService, fs) {
|
|
16
|
-
super();
|
|
17
|
-
this.appConfigService = appConfigService;
|
|
18
|
-
this.fs = fs;
|
|
19
|
-
}
|
|
20
|
-
getByName(name) {
|
|
21
|
-
const ref = this.appConfigService.config.getProject(name), config = this.fs.readJSON(`projects/${name}/config.json`);
|
|
22
|
-
return new core_1.Project({
|
|
23
|
-
...config,
|
|
24
|
-
path: ref.path
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
save(project) {
|
|
28
|
-
if (!project.name) {
|
|
29
|
-
throw new Error("Project should has a name");
|
|
30
|
-
}
|
|
31
|
-
if (!project.path) {
|
|
32
|
-
throw new Error("Project should has a path");
|
|
33
|
-
}
|
|
34
|
-
if (!project.id) {
|
|
35
|
-
project.id = project.name;
|
|
36
|
-
}
|
|
37
|
-
if (!this.fs.exists(`projects/${project.name}`)) {
|
|
38
|
-
this.fs.mkdir(`projects/${project.name}`, {
|
|
39
|
-
recursive: true
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
const { path, ...rest } = project.toObject();
|
|
43
|
-
this.appConfigService.addProject(project.name, path);
|
|
44
|
-
this.fs.writeJSON(`projects/${project.name}/config.json`, rest);
|
|
45
|
-
this.appConfigService.save();
|
|
46
|
-
}
|
|
47
|
-
search(params = {}) {
|
|
48
|
-
const { name, path } = params, projects = [];
|
|
49
|
-
for (const ref of this.appConfigService.projects) {
|
|
50
|
-
if (name && ref.name !== name) {
|
|
51
|
-
continue;
|
|
52
|
-
}
|
|
53
|
-
if (path && ref.path !== path) {
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
const project = this.getByName(ref.name);
|
|
57
|
-
projects.push(project);
|
|
58
|
-
}
|
|
59
|
-
return projects;
|
|
60
|
-
}
|
|
61
|
-
searchOne(params = {}) {
|
|
62
|
-
const [project] = this.search(params);
|
|
63
|
-
return project || null;
|
|
64
|
-
}
|
|
65
12
|
};
|
|
66
13
|
exports.ProjectRepository = ProjectRepository;
|
|
67
14
|
exports.ProjectRepository = ProjectRepository = __decorate([
|
|
68
|
-
(0, core_1.Injectable)()
|
|
69
|
-
__metadata("design:paramtypes", [core_1.AppConfigService,
|
|
70
|
-
core_1.AppFileSystemService])
|
|
15
|
+
(0, core_1.Injectable)()
|
|
71
16
|
], ProjectRepository);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AppService, EventService, LogService, ProcessService, Project, ProjectService as CoreProjectService } from "@wocker/core";
|
|
2
2
|
import { ComposeService, DockerService } from "@wocker/docker-module";
|
|
3
3
|
import { PresetRepository, PresetService } from "../../preset";
|
|
4
4
|
import { ProjectRepository } from "../repositories/ProjectRepository";
|
|
5
5
|
export declare class ProjectService extends CoreProjectService {
|
|
6
|
-
protected readonly
|
|
6
|
+
protected readonly appService: AppService;
|
|
7
7
|
protected readonly processService: ProcessService;
|
|
8
8
|
protected readonly eventService: EventService;
|
|
9
9
|
protected readonly dockerService: DockerService;
|
|
@@ -12,7 +12,7 @@ export declare class ProjectService extends CoreProjectService {
|
|
|
12
12
|
protected readonly presetService: PresetService;
|
|
13
13
|
protected readonly presetRepository: PresetRepository;
|
|
14
14
|
protected readonly logService: LogService;
|
|
15
|
-
constructor(
|
|
15
|
+
constructor(appService: AppService, processService: ProcessService, eventService: EventService, dockerService: DockerService, composeService: ComposeService, projectRepository: ProjectRepository, presetService: PresetService, presetRepository: PresetRepository, logService: LogService);
|
|
16
16
|
get(name?: string): Project;
|
|
17
17
|
search(params?: ProjectRepository.SearchParams): Project[];
|
|
18
18
|
searchOne(params?: ProjectRepository.SearchParams): Project | null;
|
|
@@ -21,9 +21,9 @@ class PublicCli extends cli_1.Cli {
|
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
24
|
-
constructor(
|
|
24
|
+
constructor(appService, processService, eventService, dockerService, composeService, projectRepository, presetService, presetRepository, logService) {
|
|
25
25
|
super();
|
|
26
|
-
this.
|
|
26
|
+
this.appService = appService;
|
|
27
27
|
this.processService = processService;
|
|
28
28
|
this.eventService = eventService;
|
|
29
29
|
this.dockerService = dockerService;
|
|
@@ -63,9 +63,9 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
63
63
|
await this.build(project, rebuild);
|
|
64
64
|
await this.eventService.emit("project:beforeStart", project);
|
|
65
65
|
switch (project.type) {
|
|
66
|
-
case core_1.
|
|
67
|
-
case core_1.
|
|
68
|
-
case core_1.
|
|
66
|
+
case core_1.ProjectType.IMAGE:
|
|
67
|
+
case core_1.ProjectType.DOCKERFILE:
|
|
68
|
+
case core_1.ProjectType.PRESET: {
|
|
69
69
|
let container = await this.dockerService.getContainer(project.containerName);
|
|
70
70
|
const fs = new core_1.FileSystem(project.path);
|
|
71
71
|
if (!container) {
|
|
@@ -74,7 +74,7 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
74
74
|
image: project.imageName,
|
|
75
75
|
cmd: project.cmd,
|
|
76
76
|
env: {
|
|
77
|
-
...this.
|
|
77
|
+
...this.appService.config.env || {},
|
|
78
78
|
...project.env || {}
|
|
79
79
|
},
|
|
80
80
|
ports: project.ports || [],
|
|
@@ -97,7 +97,7 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
97
97
|
}
|
|
98
98
|
break;
|
|
99
99
|
}
|
|
100
|
-
case core_1.
|
|
100
|
+
case core_1.ProjectType.COMPOSE: {
|
|
101
101
|
await this.composeService.up({
|
|
102
102
|
context: project.path,
|
|
103
103
|
composefile: project.composefile
|
|
@@ -109,12 +109,12 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
109
109
|
await this.eventService.emit("project:afterStart", project);
|
|
110
110
|
if (attach) {
|
|
111
111
|
switch (project.type) {
|
|
112
|
-
case core_1.
|
|
113
|
-
case core_1.
|
|
114
|
-
case core_1.
|
|
112
|
+
case core_1.ProjectType.IMAGE:
|
|
113
|
+
case core_1.ProjectType.DOCKERFILE:
|
|
114
|
+
case core_1.ProjectType.PRESET:
|
|
115
115
|
await this.dockerService.attach(project.containerName);
|
|
116
116
|
break;
|
|
117
|
-
case core_1.
|
|
117
|
+
case core_1.ProjectType.COMPOSE:
|
|
118
118
|
break;
|
|
119
119
|
}
|
|
120
120
|
}
|
|
@@ -122,12 +122,12 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
122
122
|
async stop(project) {
|
|
123
123
|
await this.eventService.emit("project:beforeStop", project);
|
|
124
124
|
switch (project.type) {
|
|
125
|
-
case core_1.
|
|
126
|
-
case core_1.
|
|
127
|
-
case core_1.
|
|
125
|
+
case core_1.ProjectType.IMAGE:
|
|
126
|
+
case core_1.ProjectType.DOCKERFILE:
|
|
127
|
+
case core_1.ProjectType.PRESET:
|
|
128
128
|
await this.dockerService.removeContainer(project.containerName);
|
|
129
129
|
break;
|
|
130
|
-
case core_1.
|
|
130
|
+
case core_1.ProjectType.COMPOSE: {
|
|
131
131
|
await this.composeService.down({
|
|
132
132
|
context: project.path,
|
|
133
133
|
composefile: project.composefile
|
|
@@ -139,10 +139,10 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
139
139
|
}
|
|
140
140
|
async build(project, rebuild) {
|
|
141
141
|
switch (project.type) {
|
|
142
|
-
case core_1.
|
|
142
|
+
case core_1.ProjectType.IMAGE:
|
|
143
143
|
await this.dockerService.pullImage(project.imageName);
|
|
144
144
|
break;
|
|
145
|
-
case core_1.
|
|
145
|
+
case core_1.ProjectType.DOCKERFILE: {
|
|
146
146
|
project.imageName = `project-${project.name}:develop`;
|
|
147
147
|
project.save();
|
|
148
148
|
if (rebuild) {
|
|
@@ -150,7 +150,7 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
150
150
|
}
|
|
151
151
|
if (!await this.dockerService.imageExists(project.imageName)) {
|
|
152
152
|
await this.dockerService.buildImage({
|
|
153
|
-
version: this.
|
|
153
|
+
version: this.appService.isExperimentalEnabled("buildKit") ? "2" : "1",
|
|
154
154
|
tag: project.imageName,
|
|
155
155
|
buildArgs: project.buildArgs,
|
|
156
156
|
context: project.path,
|
|
@@ -159,7 +159,7 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
159
159
|
}
|
|
160
160
|
break;
|
|
161
161
|
}
|
|
162
|
-
case core_1.
|
|
162
|
+
case core_1.ProjectType.PRESET: {
|
|
163
163
|
const preset = this.presetRepository.searchOne({
|
|
164
164
|
name: project.preset
|
|
165
165
|
});
|
|
@@ -176,7 +176,7 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
176
176
|
}
|
|
177
177
|
if (!await this.dockerService.imageExists(project.imageName)) {
|
|
178
178
|
await this.dockerService.buildImage({
|
|
179
|
-
version: this.
|
|
179
|
+
version: this.appService.isExperimentalEnabled("buildKit") ? "2" : "1",
|
|
180
180
|
tag: project.imageName,
|
|
181
181
|
labels: {
|
|
182
182
|
"org.wocker.preset": preset.name
|
|
@@ -191,7 +191,7 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
191
191
|
}
|
|
192
192
|
break;
|
|
193
193
|
}
|
|
194
|
-
case core_1.
|
|
194
|
+
case core_1.ProjectType.COMPOSE: {
|
|
195
195
|
await this.composeService.build({
|
|
196
196
|
context: project.path,
|
|
197
197
|
composefile: project.composefile
|
|
@@ -203,9 +203,9 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
203
203
|
}
|
|
204
204
|
async attach(project) {
|
|
205
205
|
switch (project.type) {
|
|
206
|
-
case core_1.
|
|
207
|
-
case core_1.
|
|
208
|
-
case core_1.
|
|
206
|
+
case core_1.ProjectType.IMAGE:
|
|
207
|
+
case core_1.ProjectType.DOCKERFILE:
|
|
208
|
+
case core_1.ProjectType.PRESET: {
|
|
209
209
|
await this.dockerService.attach(project.containerName);
|
|
210
210
|
break;
|
|
211
211
|
}
|
|
@@ -216,9 +216,9 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
216
216
|
throw new Error(`Script ${script} not found`);
|
|
217
217
|
}
|
|
218
218
|
switch (project.type) {
|
|
219
|
-
case core_1.
|
|
220
|
-
case core_1.
|
|
221
|
-
case core_1.
|
|
219
|
+
case core_1.ProjectType.IMAGE:
|
|
220
|
+
case core_1.ProjectType.DOCKERFILE:
|
|
221
|
+
case core_1.ProjectType.PRESET: {
|
|
222
222
|
const container = await this.dockerService.getContainer(project.containerName);
|
|
223
223
|
if (!container) {
|
|
224
224
|
throw new Error("The project is not started");
|
|
@@ -241,7 +241,7 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
241
241
|
await this.dockerService.attachStream(stream);
|
|
242
242
|
break;
|
|
243
243
|
}
|
|
244
|
-
case core_1.
|
|
244
|
+
case core_1.ProjectType.COMPOSE: {
|
|
245
245
|
console.log(service, script, args);
|
|
246
246
|
break;
|
|
247
247
|
}
|
|
@@ -249,12 +249,12 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
249
249
|
}
|
|
250
250
|
async exec(project, command) {
|
|
251
251
|
switch (project.type) {
|
|
252
|
-
case core_1.
|
|
253
|
-
case core_1.
|
|
254
|
-
case core_1.
|
|
252
|
+
case core_1.ProjectType.IMAGE:
|
|
253
|
+
case core_1.ProjectType.DOCKERFILE:
|
|
254
|
+
case core_1.ProjectType.PRESET:
|
|
255
255
|
await this.dockerService.exec(project.containerName, command, true);
|
|
256
256
|
break;
|
|
257
|
-
case core_1.
|
|
257
|
+
case core_1.ProjectType.COMPOSE: {
|
|
258
258
|
const [service, ...args] = command;
|
|
259
259
|
await this.composeService.exec({
|
|
260
260
|
service,
|
|
@@ -268,9 +268,9 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
268
268
|
}
|
|
269
269
|
async logs(project, detach) {
|
|
270
270
|
switch (project.type) {
|
|
271
|
-
case core_1.
|
|
272
|
-
case core_1.
|
|
273
|
-
case core_1.
|
|
271
|
+
case core_1.ProjectType.IMAGE:
|
|
272
|
+
case core_1.ProjectType.DOCKERFILE:
|
|
273
|
+
case core_1.ProjectType.PRESET: {
|
|
274
274
|
const container = await this.dockerService.getContainer(project.containerName);
|
|
275
275
|
if (!container) {
|
|
276
276
|
throw new Error("Project not started");
|
|
@@ -288,7 +288,7 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
288
288
|
}
|
|
289
289
|
break;
|
|
290
290
|
}
|
|
291
|
-
case core_1.
|
|
291
|
+
case core_1.ProjectType.COMPOSE:
|
|
292
292
|
break;
|
|
293
293
|
}
|
|
294
294
|
}
|
|
@@ -296,7 +296,7 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
|
|
|
296
296
|
exports.ProjectService = ProjectService;
|
|
297
297
|
exports.ProjectService = ProjectService = __decorate([
|
|
298
298
|
(0, core_1.Injectable)("PROJECT_SERVICE"),
|
|
299
|
-
__metadata("design:paramtypes", [core_1.
|
|
299
|
+
__metadata("design:paramtypes", [core_1.AppService,
|
|
300
300
|
core_1.ProcessService,
|
|
301
301
|
core_1.EventService,
|
|
302
302
|
docker_module_1.DockerService,
|
|
@@ -8,8 +8,9 @@ export declare class HttpAuthController {
|
|
|
8
8
|
protected readonly proxyService: ProxyService;
|
|
9
9
|
constructor(projectService: ProjectService, httpAuthService: HttpAuthService, proxyService: ProxyService);
|
|
10
10
|
onAddDomain(project: Project, ...domains: string[]): Promise<void>;
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
users(): Promise<void>;
|
|
12
|
+
enable(domain?: string, noRestart?: boolean): Promise<void>;
|
|
13
|
+
disable(domain?: string, noRestart?: boolean): Promise<void>;
|
|
13
14
|
add(user?: string, password?: string, global?: boolean, algorithm?: HttpAuthService.Algorithm): Promise<void>;
|
|
14
15
|
remove(user?: string): Promise<void>;
|
|
15
16
|
clear(): Promise<void>;
|