@wocker/ws 1.0.22 → 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.
- package/lib/{AppModule.d.ts → RootModule.d.ts} +1 -1
- package/lib/RootModule.js +93 -0
- package/lib/controllers/DebugController.d.ts +1 -1
- package/lib/controllers/DebugController.js +7 -9
- package/lib/controllers/ExperimentalController.d.ts +8 -0
- package/lib/controllers/ExperimentalController.js +76 -0
- package/lib/controllers/PluginController.d.ts +2 -1
- package/lib/controllers/PluginController.js +3 -3
- package/lib/controllers/ProjectController.d.ts +8 -7
- package/lib/controllers/ProjectController.js +123 -240
- package/lib/controllers/index.d.ts +1 -4
- package/lib/controllers/index.js +1 -4
- package/lib/env.d.ts +2 -3
- package/lib/env.js +3 -4
- package/lib/main.js +8 -8
- package/lib/makes/Plugin.d.ts +0 -1
- package/lib/makes/Plugin.js +0 -1
- package/lib/makes/index.d.ts +0 -2
- package/lib/makes/index.js +0 -2
- package/lib/modules/app/index.d.ts +2 -0
- package/lib/modules/app/index.js +32 -0
- package/lib/modules/docker/index.d.ts +8 -0
- package/lib/modules/docker/index.js +41 -0
- package/lib/modules/docker/services/ContainerService.d.ts +14 -0
- package/lib/modules/docker/services/ContainerService.js +115 -0
- package/lib/{services → modules/docker/services}/DockerService.d.ts +12 -5
- package/lib/{services → modules/docker/services}/DockerService.js +27 -114
- package/lib/modules/docker/services/ImageService.d.ts +18 -0
- package/lib/modules/docker/services/ImageService.js +68 -0
- package/lib/modules/docker/services/ModemService.d.ts +15 -0
- package/lib/modules/docker/services/ModemService.js +138 -0
- package/lib/modules/docker/services/ProtoService.d.ts +6 -0
- package/lib/modules/docker/services/ProtoService.js +20 -0
- package/lib/modules/index.d.ts +6 -0
- package/lib/{keystore → modules}/index.js +6 -1
- package/lib/{controllers → modules/keystore/controllers}/KeystoreController.d.ts +2 -2
- package/lib/{controllers → modules/keystore/controllers}/KeystoreController.js +4 -5
- package/lib/modules/keystore/index.d.ts +4 -0
- package/lib/modules/keystore/index.js +29 -0
- package/lib/{keystore → modules/keystore}/providers/FileKeystoreProvider.d.ts +3 -4
- package/lib/{keystore → modules/keystore}/providers/FileKeystoreProvider.js +4 -5
- package/lib/{keystore → modules/keystore}/providers/KeytarKeystoreProvider.js +1 -1
- package/lib/{keystore → modules/keystore/services}/KeystoreService.d.ts +4 -3
- package/lib/{keystore → modules/keystore/services}/KeystoreService.js +9 -6
- package/lib/modules/preset/controllers/PresetController.d.ts +18 -0
- package/lib/modules/preset/controllers/PresetController.js +157 -0
- package/lib/modules/preset/controllers/PresetListener.d.ts +14 -0
- package/lib/modules/preset/controllers/PresetListener.js +140 -0
- package/lib/modules/preset/index.d.ts +5 -0
- package/lib/modules/preset/index.js +39 -0
- package/lib/modules/preset/repositories/PresetRepository.d.ts +16 -0
- package/lib/{repositories → modules/preset/repositories}/PresetRepository.js +9 -11
- package/lib/{services → modules/preset/services}/PresetService.d.ts +4 -12
- package/lib/{services → modules/preset/services}/PresetService.js +22 -27
- package/lib/modules/project/controllers/ProjectController.d.ts +13 -0
- package/lib/modules/project/controllers/ProjectController.js +127 -0
- package/lib/modules/project/index.d.ts +5 -0
- package/lib/modules/project/index.js +39 -0
- package/lib/modules/project/repositories/ProjectRepository.d.ts +13 -0
- package/lib/modules/project/repositories/ProjectRepository.js +90 -0
- package/lib/modules/project/services/ProjectService.d.ts +21 -0
- package/lib/modules/project/services/ProjectService.js +211 -0
- package/lib/{controllers → modules/proxy/controllers}/CertController.d.ts +2 -1
- package/lib/{controllers → modules/proxy/controllers}/CertController.js +4 -3
- package/lib/{controllers → modules/proxy/controllers}/ProxyController.d.ts +5 -4
- package/lib/{controllers → modules/proxy/controllers}/ProxyController.js +12 -11
- package/lib/modules/proxy/index.d.ts +5 -0
- package/lib/modules/proxy/index.js +41 -0
- package/lib/{services → modules/proxy/services}/CertService.d.ts +5 -6
- package/lib/{services → modules/proxy/services}/CertService.js +13 -14
- package/lib/{services → modules/proxy/services}/ProxyService.d.ts +4 -4
- package/lib/{services → modules/proxy/services}/ProxyService.js +27 -20
- package/lib/services/PluginService.d.ts +1 -3
- package/lib/services/PluginService.js +12 -18
- package/lib/utils/followProgress2.d.ts +1 -0
- package/lib/utils/followProgress2.js +63 -0
- package/lib/utils/index.d.ts +1 -2
- package/lib/utils/index.js +1 -2
- package/package.json +7 -8
- package/proto/buildkit.proto +55 -0
- package/proto/solver/pb/ops.proto +443 -0
- package/lib/AppModule.js +0 -84
- package/lib/controllers/PresetController.d.ts +0 -23
- package/lib/controllers/PresetController.js +0 -361
- package/lib/keystore/index.d.ts +0 -1
- package/lib/keystore/types/Encryption.d.ts +0 -9
- package/lib/keystore/types/Encryption.js +0 -81
- package/lib/keystore/types/Encryptor.d.ts +0 -10
- package/lib/keystore/types/Encryptor.js +0 -59
- package/lib/makes/FS.d.ts +0 -27
- package/lib/makes/FS.js +0 -284
- package/lib/makes/LineConvertStream.d.ts +0 -11
- package/lib/makes/LineConvertStream.js +0 -42
- package/lib/makes/Logger.d.ts +0 -9
- package/lib/makes/Logger.js +0 -34
- package/lib/plugins/MongodbPlugin.d.ts +0 -20
- package/lib/plugins/MongodbPlugin.js +0 -288
- package/lib/plugins/index.d.ts +0 -1
- package/lib/plugins/index.js +0 -17
- package/lib/repositories/PresetRepository.d.ts +0 -23
- package/lib/repositories/index.d.ts +0 -1
- package/lib/repositories/index.js +0 -17
- package/lib/services/AppConfigService.d.ts +0 -35
- package/lib/services/AppConfigService.js +0 -163
- package/lib/services/AppEventsService.d.ts +0 -9
- package/lib/services/AppEventsService.js +0 -43
- package/lib/services/LogService.d.ts +0 -15
- package/lib/services/LogService.js +0 -67
- package/lib/services/ProjectService.d.ts +0 -27
- package/lib/services/ProjectService.js +0 -207
- package/lib/services/index.d.ts +0 -10
- package/lib/services/index.js +0 -26
- package/lib/utils/followProgress.d.ts +0 -1
- package/lib/utils/followProgress.js +0 -73
- package/presets/go/Dockerfile +0 -19
- package/presets/go/config.json +0 -14
- package/presets/php-fpm/Dockerfile +0 -173
- package/presets/php-fpm/bin/compare-version +0 -3
- package/presets/php-fpm/config.json +0 -55
- package/presets/php-fpm/etc/nginx/sites-available/default.conf +0 -36
- /package/lib/{utils/format-size-units.d.ts → modules/docker/utils/formatSizeUnits.d.ts} +0 -0
- /package/lib/{utils/format-size-units.js → modules/docker/utils/formatSizeUnits.js} +0 -0
- /package/lib/{keystore → modules/keystore}/providers/KeytarKeystoreProvider.d.ts +0 -0
- /package/lib/{keystore → modules/keystore}/types/FileKeystore.d.ts +0 -0
- /package/lib/{keystore → modules/keystore}/types/FileKeystore.js +0 -0
- /package/lib/{keystore → modules/keystore}/types/Keytar.d.ts +0 -0
- /package/lib/{keystore → modules/keystore}/types/Keytar.js +0 -0
- /package/lib/{keystore → modules/keystore}/utils/createEncryptionKey.d.ts +0 -0
- /package/lib/{keystore → modules/keystore}/utils/createEncryptionKey.js +0 -0
- /package/lib/{keystore → modules/keystore}/utils/createPasswordHash.d.ts +0 -0
- /package/lib/{keystore → modules/keystore}/utils/createPasswordHash.js +0 -0
- /package/lib/{keystore → modules/keystore}/utils/decrypt.d.ts +0 -0
- /package/lib/{keystore → modules/keystore}/utils/decrypt.js +0 -0
- /package/lib/{keystore → modules/keystore}/utils/encrypt.d.ts +0 -0
- /package/lib/{keystore → modules/keystore}/utils/encrypt.js +0 -0
- /package/lib/{keystore → modules/keystore}/utils/index.d.ts +0 -0
- /package/lib/{keystore → modules/keystore}/utils/index.js +0 -0
- /package/lib/{keystore → modules/keystore}/utils/verifyPasswordHash.d.ts +0 -0
- /package/lib/{keystore → modules/keystore}/utils/verifyPasswordHash.js +0 -0
package/lib/env.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
export declare const WOCKER_VERSION = "1.0.
|
|
1
|
+
export declare const WOCKER_VERSION = "1.0.24";
|
|
2
2
|
export declare const NODE_ENV: string;
|
|
3
3
|
export declare const ROOT_DIR: string;
|
|
4
4
|
export declare const PRESETS_DIR: string;
|
|
5
|
-
export declare const SERVICES_DIR: string;
|
|
6
5
|
export declare const PLUGINS_DIR: string;
|
|
7
|
-
export declare const
|
|
6
|
+
export declare const WOCKER_DATA_DIR: string;
|
|
8
7
|
export declare const VIRTUAL_HOST_KEY = "VIRTUAL_HOST";
|
|
9
8
|
export declare const KEYTAR_SERVICE: string;
|
package/lib/env.js
CHANGED
|
@@ -33,15 +33,14 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.KEYTAR_SERVICE = exports.VIRTUAL_HOST_KEY = exports.
|
|
36
|
+
exports.KEYTAR_SERVICE = exports.VIRTUAL_HOST_KEY = exports.WOCKER_DATA_DIR = exports.PLUGINS_DIR = exports.PRESETS_DIR = exports.ROOT_DIR = exports.NODE_ENV = exports.WOCKER_VERSION = void 0;
|
|
37
37
|
const OS = __importStar(require("os"));
|
|
38
38
|
const Path = __importStar(require("path"));
|
|
39
|
-
exports.WOCKER_VERSION = "1.0.
|
|
39
|
+
exports.WOCKER_VERSION = "1.0.24";
|
|
40
40
|
exports.NODE_ENV = process.env.NODE_ENV;
|
|
41
41
|
exports.ROOT_DIR = Path.join(__dirname, "..");
|
|
42
42
|
exports.PRESETS_DIR = Path.join(exports.ROOT_DIR, "presets");
|
|
43
|
-
exports.SERVICES_DIR = Path.join(exports.ROOT_DIR, "services");
|
|
44
43
|
exports.PLUGINS_DIR = Path.join(exports.ROOT_DIR, "plugins");
|
|
45
|
-
exports.
|
|
44
|
+
exports.WOCKER_DATA_DIR = process.env.WS_DIR || Path.join(OS.homedir(), ".workspace");
|
|
46
45
|
exports.VIRTUAL_HOST_KEY = "VIRTUAL_HOST";
|
|
47
46
|
exports.KEYTAR_SERVICE = process.env.WOCKER_KEYTAR_SERVICE || "wocker";
|
package/lib/main.js
CHANGED
|
@@ -6,15 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.app = void 0;
|
|
7
7
|
const core_1 = require("@wocker/core");
|
|
8
8
|
const yoctocolors_cjs_1 = __importDefault(require("yoctocolors-cjs"));
|
|
9
|
-
const
|
|
10
|
-
const services_1 = require("./services");
|
|
9
|
+
const RootModule_1 = require("./RootModule");
|
|
11
10
|
exports.app = {
|
|
12
11
|
async run(args) {
|
|
13
|
-
const
|
|
14
|
-
const configService = app.get(services_1.AppConfigService);
|
|
15
|
-
const logger = app.get(services_1.LogService);
|
|
12
|
+
const context = await core_1.Factory.create(RootModule_1.RootModule), appConfigService = context.get(core_1.AppConfigService), logService = context.get(core_1.LogService);
|
|
16
13
|
try {
|
|
17
|
-
const res = await
|
|
14
|
+
const res = await context.run(args);
|
|
18
15
|
if (res) {
|
|
19
16
|
process.stdout.write(res);
|
|
20
17
|
process.stdout.write("\n");
|
|
@@ -25,11 +22,14 @@ exports.app = {
|
|
|
25
22
|
return;
|
|
26
23
|
}
|
|
27
24
|
console.error(yoctocolors_cjs_1.default.red(err.message));
|
|
25
|
+
if (err instanceof core_1.UsageException || err.name === "UsageException") {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
28
|
if (err instanceof core_1.CommandNotFoundError) {
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
|
-
if (
|
|
32
|
-
|
|
31
|
+
if (appConfigService.debug) {
|
|
32
|
+
logService.error(err.stack || err.toString());
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
}
|
package/lib/makes/Plugin.d.ts
CHANGED
package/lib/makes/Plugin.js
CHANGED
package/lib/makes/index.d.ts
CHANGED
package/lib/makes/index.js
CHANGED
|
@@ -14,7 +14,5 @@ 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("./FS"), exports);
|
|
18
17
|
__exportStar(require("./Http"), exports);
|
|
19
|
-
__exportStar(require("./Logger"), exports);
|
|
20
18
|
__exportStar(require("./Plugin"), exports);
|
|
@@ -0,0 +1,32 @@
|
|
|
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.AppModule = void 0;
|
|
10
|
+
const core_1 = require("@wocker/core");
|
|
11
|
+
const env_1 = require("../../env");
|
|
12
|
+
let AppModule = class AppModule {
|
|
13
|
+
};
|
|
14
|
+
exports.AppModule = AppModule;
|
|
15
|
+
exports.AppModule = AppModule = __decorate([
|
|
16
|
+
(0, core_1.Module)({
|
|
17
|
+
providers: [
|
|
18
|
+
{
|
|
19
|
+
provide: core_1.WOCKER_VERSION_KEY,
|
|
20
|
+
useValue: env_1.WOCKER_VERSION
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
provide: core_1.WOCKER_DATA_DIR_KEY,
|
|
24
|
+
useValue: env_1.WOCKER_DATA_DIR
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
exports: [
|
|
28
|
+
core_1.WOCKER_VERSION_KEY,
|
|
29
|
+
core_1.WOCKER_DATA_DIR_KEY
|
|
30
|
+
]
|
|
31
|
+
})
|
|
32
|
+
], AppModule);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ContainerService } from "./services/ContainerService";
|
|
2
|
+
import { DockerService } from "./services/DockerService";
|
|
3
|
+
import { ImageService } from "./services/ImageService";
|
|
4
|
+
import { ModemService } from "./services/ModemService";
|
|
5
|
+
import { ProtoService } from "./services/ProtoService";
|
|
6
|
+
export declare class DockerModule {
|
|
7
|
+
}
|
|
8
|
+
export { ContainerService, DockerService, ImageService, ModemService, ProtoService };
|
|
@@ -0,0 +1,41 @@
|
|
|
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.ProtoService = exports.ModemService = exports.ImageService = exports.DockerService = exports.ContainerService = exports.DockerModule = void 0;
|
|
10
|
+
const core_1 = require("@wocker/core");
|
|
11
|
+
const ContainerService_1 = require("./services/ContainerService");
|
|
12
|
+
Object.defineProperty(exports, "ContainerService", { enumerable: true, get: function () { return ContainerService_1.ContainerService; } });
|
|
13
|
+
const DockerService_1 = require("./services/DockerService");
|
|
14
|
+
Object.defineProperty(exports, "DockerService", { enumerable: true, get: function () { return DockerService_1.DockerService; } });
|
|
15
|
+
const ImageService_1 = require("./services/ImageService");
|
|
16
|
+
Object.defineProperty(exports, "ImageService", { enumerable: true, get: function () { return ImageService_1.ImageService; } });
|
|
17
|
+
const ModemService_1 = require("./services/ModemService");
|
|
18
|
+
Object.defineProperty(exports, "ModemService", { enumerable: true, get: function () { return ModemService_1.ModemService; } });
|
|
19
|
+
const ProtoService_1 = require("./services/ProtoService");
|
|
20
|
+
Object.defineProperty(exports, "ProtoService", { enumerable: true, get: function () { return ProtoService_1.ProtoService; } });
|
|
21
|
+
let DockerModule = class DockerModule {
|
|
22
|
+
};
|
|
23
|
+
exports.DockerModule = DockerModule;
|
|
24
|
+
exports.DockerModule = DockerModule = __decorate([
|
|
25
|
+
(0, core_1.Module)({
|
|
26
|
+
providers: [
|
|
27
|
+
ContainerService_1.ContainerService,
|
|
28
|
+
DockerService_1.DockerService,
|
|
29
|
+
ImageService_1.ImageService,
|
|
30
|
+
ModemService_1.ModemService,
|
|
31
|
+
ProtoService_1.ProtoService
|
|
32
|
+
],
|
|
33
|
+
exports: [
|
|
34
|
+
ContainerService_1.ContainerService,
|
|
35
|
+
DockerService_1.DockerService,
|
|
36
|
+
ImageService_1.ImageService,
|
|
37
|
+
ModemService_1.ModemService,
|
|
38
|
+
ProtoService_1.ProtoService
|
|
39
|
+
]
|
|
40
|
+
})
|
|
41
|
+
], DockerModule);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LogService, DockerServiceParams as Params } from "@wocker/core";
|
|
2
|
+
import type Docker from "dockerode";
|
|
3
|
+
import { Duplex } from "stream";
|
|
4
|
+
import type { Container } from "dockerode";
|
|
5
|
+
import { ModemService } from "./ModemService";
|
|
6
|
+
export declare class ContainerService {
|
|
7
|
+
protected readonly logService: LogService;
|
|
8
|
+
protected readonly modemService: ModemService;
|
|
9
|
+
constructor(logService: LogService, modemService: ModemService);
|
|
10
|
+
get docker(): Docker;
|
|
11
|
+
get(name: string): Promise<Container>;
|
|
12
|
+
rm(name: string): Promise<void>;
|
|
13
|
+
exec(nameOrContainer: string | Container, options: Params.Exec | string[], _tty?: boolean): Promise<Duplex>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
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.ContainerService = void 0;
|
|
13
|
+
const core_1 = require("@wocker/core");
|
|
14
|
+
const ModemService_1 = require("./ModemService");
|
|
15
|
+
let ContainerService = class ContainerService {
|
|
16
|
+
constructor(logService, modemService) {
|
|
17
|
+
this.logService = logService;
|
|
18
|
+
this.modemService = modemService;
|
|
19
|
+
}
|
|
20
|
+
get docker() {
|
|
21
|
+
return this.modemService.docker;
|
|
22
|
+
}
|
|
23
|
+
async get(name) {
|
|
24
|
+
const containers = await this.docker.listContainers({
|
|
25
|
+
all: true,
|
|
26
|
+
filters: {
|
|
27
|
+
name: [name]
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
const container = containers.find((container) => {
|
|
31
|
+
return container.Names.indexOf("/" + name) >= 0;
|
|
32
|
+
});
|
|
33
|
+
if (!container) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
return this.docker.getContainer(container.Id);
|
|
37
|
+
}
|
|
38
|
+
async rm(name) {
|
|
39
|
+
const container = await this.get(name);
|
|
40
|
+
if (!container) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const { State: { Status } } = await container.inspect();
|
|
44
|
+
if (Status === "running" || Status === "restarting") {
|
|
45
|
+
try {
|
|
46
|
+
await container.stop();
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
this.logService.error("DockerService.removeContainer", err.message);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
await container.remove();
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
this.logService.error("DockerService.removeContainer: ", err.message);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async exec(nameOrContainer, options, _tty) {
|
|
60
|
+
const container = typeof nameOrContainer === "string"
|
|
61
|
+
? await this.get(nameOrContainer)
|
|
62
|
+
: nameOrContainer;
|
|
63
|
+
if (!container) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const { cmd = [], tty = false, user } = Array.isArray(options) ? {
|
|
67
|
+
cmd: options,
|
|
68
|
+
tty: _tty
|
|
69
|
+
} : options;
|
|
70
|
+
const exec = await container.exec({
|
|
71
|
+
AttachStdin: true,
|
|
72
|
+
AttachStdout: true,
|
|
73
|
+
AttachStderr: true,
|
|
74
|
+
Tty: tty,
|
|
75
|
+
User: user,
|
|
76
|
+
Cmd: cmd,
|
|
77
|
+
ConsoleSize: [
|
|
78
|
+
process.stdout.rows,
|
|
79
|
+
process.stdout.columns
|
|
80
|
+
]
|
|
81
|
+
});
|
|
82
|
+
const stream = await exec.start({
|
|
83
|
+
hijack: true,
|
|
84
|
+
stdin: tty,
|
|
85
|
+
Tty: tty
|
|
86
|
+
});
|
|
87
|
+
if (tty) {
|
|
88
|
+
const handleResize = async () => {
|
|
89
|
+
const [width, height] = process.stdout.getWindowSize();
|
|
90
|
+
this.logService.debug("Exec resize", {
|
|
91
|
+
width,
|
|
92
|
+
height
|
|
93
|
+
});
|
|
94
|
+
await exec.resize({
|
|
95
|
+
w: width,
|
|
96
|
+
h: height
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
process.on("SIGWINCH", handleResize);
|
|
100
|
+
try {
|
|
101
|
+
await this.modemService.attachStream(stream);
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
process.off("SIGWINCH", handleResize);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return stream;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
exports.ContainerService = ContainerService;
|
|
111
|
+
exports.ContainerService = ContainerService = __decorate([
|
|
112
|
+
(0, core_1.Injectable)(),
|
|
113
|
+
__metadata("design:paramtypes", [core_1.LogService,
|
|
114
|
+
ModemService_1.ModemService])
|
|
115
|
+
], ContainerService);
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import { DockerService as CoreDockerService, DockerServiceParams as Params } from "@wocker/core";
|
|
2
|
-
import Docker
|
|
3
|
-
import {
|
|
1
|
+
import { DockerService as CoreDockerService, DockerServiceParams as Params, LogService } from "@wocker/core";
|
|
2
|
+
import type Docker from "dockerode";
|
|
3
|
+
import type { Container, Volume, VolumeCreateResponse } from "dockerode";
|
|
4
|
+
import { ContainerService } from "./ContainerService";
|
|
5
|
+
import { ModemService } from "./ModemService";
|
|
6
|
+
import { ImageService } from "./ImageService";
|
|
4
7
|
export declare class DockerService extends CoreDockerService {
|
|
8
|
+
protected readonly modemService: ModemService;
|
|
9
|
+
protected readonly containerService: ContainerService;
|
|
10
|
+
protected readonly imageService: ImageService;
|
|
5
11
|
protected readonly logService: LogService;
|
|
6
|
-
|
|
7
|
-
|
|
12
|
+
constructor(modemService: ModemService, containerService: ContainerService, imageService: ImageService, logService: LogService);
|
|
13
|
+
get docker(): Docker;
|
|
8
14
|
createVolume(name: string): Promise<VolumeCreateResponse>;
|
|
9
15
|
hasVolume(name: string): Promise<boolean>;
|
|
10
16
|
getVolume(name: string): Promise<Volume>;
|
|
@@ -21,4 +27,5 @@ export declare class DockerService extends CoreDockerService {
|
|
|
21
27
|
attachStream(stream: NodeJS.ReadWriteStream): Promise<NodeJS.ReadWriteStream>;
|
|
22
28
|
exec(nameOrContainer: string | Container, options: Params.Exec | string[], _tty?: boolean): Promise<import("stream").Duplex>;
|
|
23
29
|
logs(containerOrName: string | Container): Promise<NodeJS.ReadableStream>;
|
|
30
|
+
followProgress(stream: NodeJS.ReadableStream): Promise<void>;
|
|
24
31
|
}
|
|
@@ -8,23 +8,22 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
12
|
exports.DockerService = void 0;
|
|
16
13
|
const core_1 = require("@wocker/core");
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const LogService_1 = require("./LogService");
|
|
14
|
+
const ContainerService_1 = require("./ContainerService");
|
|
15
|
+
const ModemService_1 = require("./ModemService");
|
|
16
|
+
const ImageService_1 = require("./ImageService");
|
|
21
17
|
let DockerService = class DockerService extends core_1.DockerService {
|
|
22
|
-
constructor(logService) {
|
|
18
|
+
constructor(modemService, containerService, imageService, logService) {
|
|
23
19
|
super();
|
|
20
|
+
this.modemService = modemService;
|
|
21
|
+
this.containerService = containerService;
|
|
22
|
+
this.imageService = imageService;
|
|
24
23
|
this.logService = logService;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
}
|
|
25
|
+
get docker() {
|
|
26
|
+
return this.modemService.docker;
|
|
28
27
|
}
|
|
29
28
|
async createVolume(name) {
|
|
30
29
|
return await this.docker.createVolume({
|
|
@@ -136,44 +135,15 @@ let DockerService = class DockerService extends core_1.DockerService {
|
|
|
136
135
|
});
|
|
137
136
|
}
|
|
138
137
|
async getContainer(name) {
|
|
139
|
-
|
|
140
|
-
all: true,
|
|
141
|
-
filters: {
|
|
142
|
-
name: [name]
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
const container = containers.find((container) => {
|
|
146
|
-
return container.Names.indexOf("/" + name) >= 0;
|
|
147
|
-
});
|
|
148
|
-
if (container) {
|
|
149
|
-
return this.docker.getContainer(container.Id);
|
|
150
|
-
}
|
|
151
|
-
return null;
|
|
138
|
+
return this.containerService.get(name);
|
|
152
139
|
}
|
|
153
140
|
async removeContainer(name) {
|
|
154
|
-
|
|
155
|
-
if (!container) {
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
const { State: { Status } } = await container.inspect();
|
|
159
|
-
if (Status === "running" || Status === "restarting") {
|
|
160
|
-
try {
|
|
161
|
-
await container.stop();
|
|
162
|
-
}
|
|
163
|
-
catch (err) {
|
|
164
|
-
makes_1.Logger.error("DockerService.removeContainer", err.message);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
try {
|
|
168
|
-
await container.remove();
|
|
169
|
-
}
|
|
170
|
-
catch (err) {
|
|
171
|
-
makes_1.Logger.error("DockerService.removeContainer: ", err.message);
|
|
172
|
-
}
|
|
141
|
+
await this.containerService.rm(name);
|
|
173
142
|
}
|
|
174
143
|
async buildImage(params) {
|
|
175
144
|
const { tag, labels = {}, buildArgs = {}, context, src } = params;
|
|
176
|
-
const
|
|
145
|
+
const fs = new core_1.FileSystem(context);
|
|
146
|
+
const files = await fs.readdirFiles("", {
|
|
177
147
|
recursive: true
|
|
178
148
|
});
|
|
179
149
|
const stream = await this.docker.buildImage({
|
|
@@ -193,27 +163,13 @@ let DockerService = class DockerService extends core_1.DockerService {
|
|
|
193
163
|
}, {}),
|
|
194
164
|
dockerfile: src
|
|
195
165
|
});
|
|
196
|
-
await
|
|
166
|
+
await this.modemService.followProgress(stream);
|
|
197
167
|
}
|
|
198
168
|
async imageExists(tag) {
|
|
199
|
-
|
|
200
|
-
try {
|
|
201
|
-
await image.inspect();
|
|
202
|
-
return true;
|
|
203
|
-
}
|
|
204
|
-
catch (ignore) {
|
|
205
|
-
return false;
|
|
206
|
-
}
|
|
169
|
+
return this.imageService.exists(tag);
|
|
207
170
|
}
|
|
208
171
|
async imageRm(tag, force = false) {
|
|
209
|
-
|
|
210
|
-
const exists = await this.imageExists(tag);
|
|
211
|
-
if (!exists) {
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
await image.remove({
|
|
215
|
-
force
|
|
216
|
-
});
|
|
172
|
+
await this.imageService.rm(tag, force);
|
|
217
173
|
}
|
|
218
174
|
async imageLs(options) {
|
|
219
175
|
const { tag, reference, labels } = options || {};
|
|
@@ -241,12 +197,7 @@ let DockerService = class DockerService extends core_1.DockerService {
|
|
|
241
197
|
});
|
|
242
198
|
}
|
|
243
199
|
async pullImage(tag) {
|
|
244
|
-
|
|
245
|
-
if (exists) {
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
|
-
const stream = await this.docker.pull(tag);
|
|
249
|
-
await (0, utils_1.followProgress)(stream);
|
|
200
|
+
await this.imageService.pull(tag);
|
|
250
201
|
}
|
|
251
202
|
async attach(containerOrName) {
|
|
252
203
|
let container = typeof containerOrName === "string"
|
|
@@ -277,54 +228,10 @@ let DockerService = class DockerService extends core_1.DockerService {
|
|
|
277
228
|
return stream;
|
|
278
229
|
}
|
|
279
230
|
async attachStream(stream) {
|
|
280
|
-
|
|
281
|
-
process.stdin.setRawMode(true);
|
|
282
|
-
}
|
|
283
|
-
process.stdin.resume();
|
|
284
|
-
process.stdin.setEncoding("utf8");
|
|
285
|
-
process.stdin.pipe(stream);
|
|
286
|
-
stream.setEncoding("utf8");
|
|
287
|
-
stream.pipe(process.stdout);
|
|
288
|
-
const onEnd = () => {
|
|
289
|
-
process.stdin.pause();
|
|
290
|
-
if (process.stdin.isTTY) {
|
|
291
|
-
process.stdin.setRawMode(false);
|
|
292
|
-
}
|
|
293
|
-
process.stdin.unpipe(stream);
|
|
294
|
-
stream.unpipe(process.stdout);
|
|
295
|
-
};
|
|
296
|
-
stream.on("end", onEnd);
|
|
297
|
-
stream.on("error", onEnd);
|
|
298
|
-
return stream;
|
|
231
|
+
return this.modemService.attachStream(stream);
|
|
299
232
|
}
|
|
300
233
|
async exec(nameOrContainer, options, _tty) {
|
|
301
|
-
|
|
302
|
-
? await this.getContainer(nameOrContainer)
|
|
303
|
-
: nameOrContainer;
|
|
304
|
-
if (!container) {
|
|
305
|
-
return;
|
|
306
|
-
}
|
|
307
|
-
const { cmd = [], tty = false, user } = Array.isArray(options) ? {
|
|
308
|
-
cmd: options,
|
|
309
|
-
tty: _tty
|
|
310
|
-
} : options;
|
|
311
|
-
const exec = await container.exec({
|
|
312
|
-
AttachStdin: true,
|
|
313
|
-
AttachStdout: true,
|
|
314
|
-
AttachStderr: tty,
|
|
315
|
-
Tty: tty,
|
|
316
|
-
User: user,
|
|
317
|
-
Cmd: cmd
|
|
318
|
-
});
|
|
319
|
-
const stream = await exec.start({
|
|
320
|
-
hijack: true,
|
|
321
|
-
stdin: tty,
|
|
322
|
-
Tty: tty
|
|
323
|
-
});
|
|
324
|
-
if (tty) {
|
|
325
|
-
await this.attachStream(stream);
|
|
326
|
-
}
|
|
327
|
-
return stream;
|
|
234
|
+
return await this.containerService.exec(nameOrContainer, options, _tty);
|
|
328
235
|
}
|
|
329
236
|
async logs(containerOrName) {
|
|
330
237
|
const container = typeof containerOrName === "string"
|
|
@@ -347,9 +254,15 @@ let DockerService = class DockerService extends core_1.DockerService {
|
|
|
347
254
|
});
|
|
348
255
|
return stream;
|
|
349
256
|
}
|
|
257
|
+
async followProgress(stream) {
|
|
258
|
+
await this.modemService.followProgress(stream);
|
|
259
|
+
}
|
|
350
260
|
};
|
|
351
261
|
exports.DockerService = DockerService;
|
|
352
262
|
exports.DockerService = DockerService = __decorate([
|
|
353
263
|
(0, core_1.Injectable)("DOCKER_SERVICE"),
|
|
354
|
-
__metadata("design:paramtypes", [
|
|
264
|
+
__metadata("design:paramtypes", [ModemService_1.ModemService,
|
|
265
|
+
ContainerService_1.ContainerService,
|
|
266
|
+
ImageService_1.ImageService,
|
|
267
|
+
core_1.LogService])
|
|
355
268
|
], DockerService);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type Docker from "dockerode";
|
|
2
|
+
import { ModemService } from "./ModemService";
|
|
3
|
+
type BuildParams = {
|
|
4
|
+
tag: string;
|
|
5
|
+
context: string;
|
|
6
|
+
dockerfile: string;
|
|
7
|
+
version: "1" | "2";
|
|
8
|
+
};
|
|
9
|
+
export declare class ImageService {
|
|
10
|
+
protected readonly modemService: ModemService;
|
|
11
|
+
constructor(modemService: ModemService);
|
|
12
|
+
get docker(): Docker;
|
|
13
|
+
build(params: BuildParams): Promise<void>;
|
|
14
|
+
exists(tag: string): Promise<boolean>;
|
|
15
|
+
pull(tag: string): Promise<void>;
|
|
16
|
+
rm(tag: string, force?: boolean): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
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.ImageService = void 0;
|
|
13
|
+
const core_1 = require("@wocker/core");
|
|
14
|
+
const ModemService_1 = require("./ModemService");
|
|
15
|
+
let ImageService = class ImageService {
|
|
16
|
+
constructor(modemService) {
|
|
17
|
+
this.modemService = modemService;
|
|
18
|
+
}
|
|
19
|
+
get docker() {
|
|
20
|
+
return this.modemService.docker;
|
|
21
|
+
}
|
|
22
|
+
async build(params) {
|
|
23
|
+
const { tag, context, dockerfile, version } = params;
|
|
24
|
+
const files = (new core_1.FileSystem(context)).readdir("", {
|
|
25
|
+
recursive: true
|
|
26
|
+
});
|
|
27
|
+
const stream = await this.docker.buildImage({
|
|
28
|
+
context,
|
|
29
|
+
src: files
|
|
30
|
+
}, {
|
|
31
|
+
t: tag,
|
|
32
|
+
dockerfile,
|
|
33
|
+
version
|
|
34
|
+
});
|
|
35
|
+
await this.modemService.followProgress(stream);
|
|
36
|
+
}
|
|
37
|
+
async exists(tag) {
|
|
38
|
+
const image = this.docker.getImage(tag);
|
|
39
|
+
try {
|
|
40
|
+
await image.inspect();
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async pull(tag) {
|
|
48
|
+
if (await this.exists(tag)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const stream = await this.docker.pull(tag);
|
|
52
|
+
await this.modemService.followProgress(stream);
|
|
53
|
+
}
|
|
54
|
+
async rm(tag, force = false) {
|
|
55
|
+
if (!await this.exists(tag)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const image = this.docker.getImage(tag);
|
|
59
|
+
await image.remove({
|
|
60
|
+
force
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
exports.ImageService = ImageService;
|
|
65
|
+
exports.ImageService = ImageService = __decorate([
|
|
66
|
+
(0, core_1.Injectable)(),
|
|
67
|
+
__metadata("design:paramtypes", [ModemService_1.ModemService])
|
|
68
|
+
], ImageService);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ModemService as CoreModemService } from "@wocker/core";
|
|
2
|
+
import type Modem from "docker-modem";
|
|
3
|
+
import type Docker from "dockerode";
|
|
4
|
+
import { ProtoService } from "./ProtoService";
|
|
5
|
+
export declare class ModemService extends CoreModemService {
|
|
6
|
+
protected readonly protoService: ProtoService;
|
|
7
|
+
protected _modem?: Modem;
|
|
8
|
+
protected _docker?: Docker;
|
|
9
|
+
protected record?: boolean;
|
|
10
|
+
constructor(protoService: ProtoService);
|
|
11
|
+
get modem(): Modem;
|
|
12
|
+
get docker(): Docker;
|
|
13
|
+
attachStream(stream: NodeJS.ReadWriteStream): Promise<NodeJS.ReadWriteStream>;
|
|
14
|
+
followProgress(stream: NodeJS.ReadableStream): Promise<void>;
|
|
15
|
+
}
|