@wocker/ws 1.0.20 → 1.0.22

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 (100) hide show
  1. package/README.md +8 -0
  2. package/lib/AppModule.js +17 -39
  3. package/lib/controllers/DebugController.d.ts +2 -1
  4. package/lib/controllers/DebugController.js +13 -5
  5. package/lib/controllers/KeystoreController.d.ts +11 -0
  6. package/lib/controllers/KeystoreController.js +106 -0
  7. package/lib/controllers/PluginController.d.ts +3 -5
  8. package/lib/controllers/PluginController.js +11 -57
  9. package/lib/controllers/PresetController.d.ts +5 -3
  10. package/lib/controllers/PresetController.js +73 -55
  11. package/lib/controllers/ProjectController.d.ts +5 -3
  12. package/lib/controllers/ProjectController.js +71 -46
  13. package/lib/controllers/ProxyController.d.ts +1 -1
  14. package/lib/controllers/ProxyController.js +56 -14
  15. package/lib/controllers/index.d.ts +1 -1
  16. package/lib/controllers/index.js +1 -1
  17. package/lib/env.d.ts +2 -1
  18. package/lib/env.js +20 -9
  19. package/lib/keystore/KeystoreService.d.ts +12 -0
  20. package/lib/keystore/KeystoreService.js +70 -0
  21. package/lib/keystore/index.d.ts +1 -0
  22. package/lib/keystore/index.js +17 -0
  23. package/lib/keystore/providers/FileKeystoreProvider.d.ts +16 -0
  24. package/lib/keystore/providers/FileKeystoreProvider.js +97 -0
  25. package/lib/keystore/providers/KeytarKeystoreProvider.d.ts +9 -0
  26. package/lib/keystore/providers/KeytarKeystoreProvider.js +74 -0
  27. package/lib/keystore/types/Encryption.d.ts +9 -0
  28. package/lib/keystore/types/Encryption.js +81 -0
  29. package/lib/keystore/types/Encryptor.d.ts +10 -0
  30. package/lib/keystore/types/Encryptor.js +59 -0
  31. package/lib/keystore/types/FileKeystore.d.ts +17 -0
  32. package/lib/keystore/types/FileKeystore.js +33 -0
  33. package/lib/keystore/types/Keytar.d.ts +8 -0
  34. package/lib/keystore/types/Keytar.js +2 -0
  35. package/lib/keystore/utils/createEncryptionKey.d.ts +1 -0
  36. package/lib/keystore/utils/createEncryptionKey.js +46 -0
  37. package/lib/keystore/utils/createPasswordHash.d.ts +1 -0
  38. package/lib/keystore/utils/createPasswordHash.js +20 -0
  39. package/lib/keystore/utils/decrypt.d.ts +1 -0
  40. package/lib/keystore/utils/decrypt.js +15 -0
  41. package/lib/keystore/utils/encrypt.d.ts +1 -0
  42. package/lib/keystore/utils/encrypt.js +19 -0
  43. package/lib/keystore/utils/index.d.ts +5 -0
  44. package/lib/keystore/utils/index.js +21 -0
  45. package/lib/keystore/utils/verifyPasswordHash.d.ts +1 -0
  46. package/lib/keystore/utils/verifyPasswordHash.js +9 -0
  47. package/lib/main.js +10 -5
  48. package/lib/makes/FS.d.ts +2 -2
  49. package/lib/makes/FS.js +19 -9
  50. package/lib/makes/GithubClient.d.ts +14 -0
  51. package/lib/makes/GithubClient.js +65 -0
  52. package/lib/makes/Http.js +17 -7
  53. package/lib/makes/Plugin.d.ts +6 -0
  54. package/lib/makes/Plugin.js +16 -0
  55. package/lib/makes/index.d.ts +1 -0
  56. package/lib/makes/index.js +1 -0
  57. package/lib/plugins/MongodbPlugin.js +17 -7
  58. package/lib/plugins/index.d.ts +0 -2
  59. package/lib/plugins/index.js +0 -2
  60. package/lib/repositories/PresetRepository.d.ts +23 -0
  61. package/lib/repositories/PresetRepository.js +115 -0
  62. package/lib/repositories/index.d.ts +1 -0
  63. package/lib/repositories/index.js +17 -0
  64. package/lib/services/AppConfigService.d.ts +16 -1
  65. package/lib/services/AppConfigService.js +88 -62
  66. package/lib/services/AppEventsService.d.ts +4 -4
  67. package/lib/services/AppEventsService.js +14 -10
  68. package/lib/services/CertService.js +18 -8
  69. package/lib/services/DockerService.d.ts +2 -2
  70. package/lib/services/DockerService.js +14 -8
  71. package/lib/services/LogService.d.ts +4 -1
  72. package/lib/services/LogService.js +14 -8
  73. package/lib/services/PluginService.d.ts +8 -2
  74. package/lib/services/PluginService.js +88 -23
  75. package/lib/services/PresetService.d.ts +9 -8
  76. package/lib/services/PresetService.js +144 -248
  77. package/lib/services/ProjectService.d.ts +5 -2
  78. package/lib/services/ProjectService.js +37 -10
  79. package/lib/services/ProxyService.d.ts +3 -2
  80. package/lib/services/ProxyService.js +43 -25
  81. package/lib/utils/index.d.ts +0 -2
  82. package/lib/utils/index.js +0 -2
  83. package/package.json +30 -15
  84. package/plugins/proxy/Dockerfile +17 -1
  85. package/plugins/proxy/Procfile +2 -0
  86. package/lib/controllers/ImageController.d.ts +0 -7
  87. package/lib/controllers/ImageController.js +0 -46
  88. package/lib/makes/Model.d.ts +0 -5
  89. package/lib/makes/Model.js +0 -12
  90. package/lib/plugins/ElasticSearchPlugin.d.ts +0 -15
  91. package/lib/plugins/ElasticSearchPlugin.js +0 -72
  92. package/lib/plugins/ProxmoxPlugin.d.ts +0 -12
  93. package/lib/plugins/ProxmoxPlugin.js +0 -83
  94. package/lib/utils/volumeFormat.d.ts +0 -6
  95. package/lib/utils/volumeFormat.js +0 -8
  96. package/lib/utils/volumeParse.d.ts +0 -2
  97. package/lib/utils/volumeParse.js +0 -13
  98. package/plugins/proxy/config.json +0 -3
  99. package/presets/bun/Dockerfile +0 -11
  100. package/presets/bun/config.json +0 -4
package/README.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  ###### Docker workspace for web projects
4
4
 
5
+ [![npm version](https://img.shields.io/npm/v/@wocker/ws.svg)](https://www.npmjs.com/package/@wocker/ws)
6
+ [![Publish](https://github.com/kearisp/wocker-ws/actions/workflows/publish-latest.yml/badge.svg?event=release)](https://github.com/kearisp/wocker-ws/actions/workflows/publish-latest.yml)
7
+ [![License](https://img.shields.io/npm/l/@wocker/ws)](https://github.com/kearisp/wocker-ws/blob/main/LICENSE)
8
+
9
+ [![npm total downloads](https://img.shields.io/npm/dt/@wocker/ws.svg)](https://www.npmjs.com/package/@wocker/ws)
10
+ [![bundle size](https://img.shields.io/bundlephobia/minzip/@wocker/ws)](https://bundlephobia.com/package/@wocker/ws)
11
+ ![Coverage](https://gist.githubusercontent.com/kearisp/f17f46c6332ea3bb043f27b0bddefa9f/raw/coverage-wocker-ws-latest.svg)
12
+
5
13
  ## Installation
6
14
 
7
15
  **Note:** It is recommended to install Wocker globally to ensure accessibility from any directory in your terminal.
package/lib/AppModule.js CHANGED
@@ -1,65 +1,40 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
2
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
3
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
4
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
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;
22
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
23
7
  };
24
- var __importStar = (this && this.__importStar) || function (mod) {
25
- if (mod && mod.__esModule) return mod;
26
- var result = {};
27
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
- __setModuleDefault(result, mod);
29
- return result;
30
- };
31
8
  var AppModule_1;
32
9
  Object.defineProperty(exports, "__esModule", { value: true });
33
10
  exports.AppModule = void 0;
34
11
  const core_1 = require("@wocker/core");
35
12
  const controllers_1 = require("./controllers");
13
+ const repositories_1 = require("./repositories");
36
14
  const services_1 = require("./services");
15
+ const keystore_1 = require("./keystore");
37
16
  let AppModule = AppModule_1 = class AppModule {
38
17
  async load(container) {
39
18
  const appConfigService = container.getModule(AppModule_1).get(services_1.AppConfigService);
40
19
  const logService = container.getModule(AppModule_1).get(services_1.LogService);
41
- const config = appConfigService.getConfig();
20
+ const pluginService = container.getModule(AppModule_1).get(services_1.PluginService);
42
21
  const imports = [];
43
- for (const plugin of config.plugins || []) {
22
+ for (const pluginData of appConfigService.config.plugins || []) {
44
23
  try {
45
- const { default: Plugin } = await Promise.resolve(`${plugin}`).then(s => __importStar(require(s)));
46
- if (!Plugin) {
47
- continue;
48
- }
49
- const name = Reflect.getMetadata(core_1.PLUGIN_NAME_METADATA, Plugin);
24
+ const plugin = await pluginService.import(pluginData.name);
50
25
  Reflect.defineMetadata(core_1.MODULE_METADATA.PROVIDERS, [
51
- ...Reflect.getMetadata(core_1.MODULE_METADATA.PROVIDERS, Plugin) || [],
26
+ ...Reflect.getMetadata(core_1.MODULE_METADATA.PROVIDERS, plugin.type) || [],
52
27
  {
53
28
  provide: core_1.PLUGIN_DIR_KEY,
54
- useValue: name ? appConfigService.dataPath("plugins", name) : undefined
29
+ useValue: appConfigService.dataPath("plugins", plugin.name)
55
30
  }
56
- ], Plugin);
57
- imports.push(Plugin);
31
+ ], plugin.type);
32
+ imports.push(plugin.type);
58
33
  }
59
34
  catch (err) {
60
35
  logService.error(err.message);
61
- config.removePlugin(plugin);
62
- await config.save();
36
+ appConfigService.config.removePlugin(pluginData.name);
37
+ appConfigService.save();
63
38
  throw err;
64
39
  }
65
40
  }
@@ -75,7 +50,7 @@ exports.AppModule = AppModule = AppModule_1 = __decorate([
75
50
  controllers: [
76
51
  controllers_1.CompletionController,
77
52
  controllers_1.DebugController,
78
- controllers_1.ImageController,
53
+ controllers_1.KeystoreController,
79
54
  controllers_1.PluginController,
80
55
  controllers_1.PresetController,
81
56
  controllers_1.ProjectController,
@@ -92,7 +67,9 @@ exports.AppModule = AppModule = AppModule_1 = __decorate([
92
67
  services_1.PresetService,
93
68
  services_1.ProjectService,
94
69
  services_1.ProxyService,
95
- services_1.CertService
70
+ services_1.CertService,
71
+ keystore_1.KeystoreService,
72
+ repositories_1.PresetRepository
96
73
  ],
97
74
  exports: [
98
75
  services_1.AppConfigService,
@@ -100,7 +77,8 @@ exports.AppModule = AppModule = AppModule_1 = __decorate([
100
77
  services_1.DockerService,
101
78
  services_1.LogService,
102
79
  services_1.ProjectService,
103
- services_1.ProxyService
80
+ services_1.ProxyService,
81
+ keystore_1.KeystoreService
104
82
  ]
105
83
  })
106
84
  ], AppModule);
@@ -3,7 +3,8 @@ export declare class DebugController {
3
3
  protected readonly appConfigService: AppConfigService;
4
4
  protected readonly logService: LogService;
5
5
  constructor(appConfigService: AppConfigService, logService: LogService);
6
- debug(status: string): Promise<void>;
6
+ debug(): Promise<string>;
7
+ setDebug(status: string): Promise<void>;
7
8
  setLog(level: string): Promise<void>;
8
9
  testLog(level: string, args: string[]): Promise<void>;
9
10
  debugCompletion(): Promise<string[]>;
@@ -20,10 +20,12 @@ let DebugController = class DebugController {
20
20
  this.appConfigService = appConfigService;
21
21
  this.logService = logService;
22
22
  }
23
- async debug(status) {
24
- const config = this.appConfigService.getConfig();
25
- config.debug = status === "on";
26
- await config.save();
23
+ async debug() {
24
+ return this.appConfigService.config.debug ? "on" : "off";
25
+ }
26
+ async setDebug(status) {
27
+ this.appConfigService.config.debug = status === "on";
28
+ await this.appConfigService.config.save();
27
29
  }
28
30
  async setLog(level) {
29
31
  const validLevels = this.getLevels();
@@ -45,6 +47,12 @@ let DebugController = class DebugController {
45
47
  }
46
48
  };
47
49
  exports.DebugController = DebugController;
50
+ __decorate([
51
+ (0, core_1.Command)("debug"),
52
+ __metadata("design:type", Function),
53
+ __metadata("design:paramtypes", []),
54
+ __metadata("design:returntype", Promise)
55
+ ], DebugController.prototype, "debug", null);
48
56
  __decorate([
49
57
  (0, core_1.Command)("debug:<status>"),
50
58
  (0, core_1.Command)("debug <status>"),
@@ -52,7 +60,7 @@ __decorate([
52
60
  __metadata("design:type", Function),
53
61
  __metadata("design:paramtypes", [String]),
54
62
  __metadata("design:returntype", Promise)
55
- ], DebugController.prototype, "debug", null);
63
+ ], DebugController.prototype, "setDebug", null);
56
64
  __decorate([
57
65
  (0, core_1.Description)("Set the log level (options: debug, log, info, warn, error)"),
58
66
  (0, core_1.Command)("loglevel <level>"),
@@ -0,0 +1,11 @@
1
+ import { AppConfigService } from "../services";
2
+ import { KeystoreService } from "../keystore";
3
+ export declare class KeystoreController {
4
+ protected readonly appConfigService: AppConfigService;
5
+ protected readonly keystoreService: KeystoreService;
6
+ constructor(appConfigService: AppConfigService, keystoreService: KeystoreService);
7
+ init(provider?: string): Promise<void>;
8
+ add(name?: string, provider?: string): Promise<void>;
9
+ inspect(name?: string, provider?: string): Promise<string | undefined>;
10
+ delete(name?: string, provider?: string): Promise<void>;
11
+ }
@@ -0,0 +1,106 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.KeystoreController = void 0;
16
+ const core_1 = require("@wocker/core");
17
+ const utils_1 = require("@wocker/utils");
18
+ const services_1 = require("../services");
19
+ const keystore_1 = require("../keystore");
20
+ let KeystoreController = class KeystoreController {
21
+ constructor(appConfigService, keystoreService) {
22
+ this.appConfigService = appConfigService;
23
+ this.keystoreService = keystoreService;
24
+ }
25
+ async init(provider) {
26
+ if (!provider) {
27
+ provider = await (0, utils_1.promptSelect)({
28
+ message: "Keystore provider",
29
+ type: "text",
30
+ options: ["file", "keytar"]
31
+ });
32
+ }
33
+ if (!this.keystoreService.hasProvider(provider)) {
34
+ return;
35
+ }
36
+ this.appConfigService.config.keystore = provider;
37
+ this.appConfigService.config.save();
38
+ }
39
+ async add(name, provider) {
40
+ const value = await (0, utils_1.promptInput)({
41
+ message: "Secret value",
42
+ type: "password"
43
+ });
44
+ await this.keystoreService.provider(provider).set(name, value);
45
+ }
46
+ async inspect(name, provider) {
47
+ return this.keystoreService.provider(provider).get(name);
48
+ }
49
+ async delete(name, provider) {
50
+ await this.keystoreService.provider(provider).delete(name);
51
+ }
52
+ };
53
+ exports.KeystoreController = KeystoreController;
54
+ __decorate([
55
+ (0, core_1.Command)("keystore:init"),
56
+ __param(0, (0, core_1.Option)("provider", {
57
+ type: "string",
58
+ description: "Keystore provider name"
59
+ })),
60
+ __metadata("design:type", Function),
61
+ __metadata("design:paramtypes", [String]),
62
+ __metadata("design:returntype", Promise)
63
+ ], KeystoreController.prototype, "init", null);
64
+ __decorate([
65
+ (0, core_1.Command)("secret:create [name]"),
66
+ (0, core_1.Description)("Adds secret value to keystore"),
67
+ __param(0, (0, core_1.Param)("name")),
68
+ __param(1, (0, core_1.Option)("provider", {
69
+ alias: "p",
70
+ type: "string",
71
+ description: "Provider name"
72
+ })),
73
+ __metadata("design:type", Function),
74
+ __metadata("design:paramtypes", [String, String]),
75
+ __metadata("design:returntype", Promise)
76
+ ], KeystoreController.prototype, "add", null);
77
+ __decorate([
78
+ (0, core_1.Command)("secret:inspect [name]"),
79
+ __param(0, (0, core_1.Param)("name")),
80
+ __param(1, (0, core_1.Option)("provider", {
81
+ type: "string",
82
+ alias: "p"
83
+ })),
84
+ __metadata("design:type", Function),
85
+ __metadata("design:paramtypes", [String, String]),
86
+ __metadata("design:returntype", Promise)
87
+ ], KeystoreController.prototype, "inspect", null);
88
+ __decorate([
89
+ (0, core_1.Command)("secret:rm [name]"),
90
+ (0, core_1.Description)("Removes secret value from keystore"),
91
+ __param(0, (0, core_1.Param)("name")),
92
+ __param(1, (0, core_1.Option)("provider", {
93
+ type: "string",
94
+ alias: "p",
95
+ description: "Provider name"
96
+ })),
97
+ __metadata("design:type", Function),
98
+ __metadata("design:paramtypes", [String, String]),
99
+ __metadata("design:returntype", Promise)
100
+ ], KeystoreController.prototype, "delete", null);
101
+ exports.KeystoreController = KeystoreController = __decorate([
102
+ (0, core_1.Controller)(),
103
+ (0, core_1.Description)("Keystore commands"),
104
+ __metadata("design:paramtypes", [services_1.AppConfigService,
105
+ keystore_1.KeystoreService])
106
+ ], KeystoreController);
@@ -1,12 +1,10 @@
1
- import { AppConfigService, PluginService, LogService, NpmService } from "../services";
1
+ import { AppConfigService, PluginService } from "../services";
2
2
  export declare class PluginController {
3
3
  protected readonly appConfigService: AppConfigService;
4
4
  protected readonly pluginService: PluginService;
5
- protected readonly npmService: NpmService;
6
- protected readonly logService: LogService;
7
- constructor(appConfigService: AppConfigService, pluginService: PluginService, npmService: NpmService, logService: LogService);
5
+ constructor(appConfigService: AppConfigService, pluginService: PluginService);
8
6
  list(): Promise<string>;
9
- add(addName: string, dev?: boolean): Promise<void>;
7
+ add(addName: string, beta?: boolean): Promise<void>;
10
8
  remove(removeName: string): Promise<void>;
11
9
  update(): Promise<void>;
12
10
  getInstalledPlugins(): string[];
@@ -11,74 +11,29 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
- var __importDefault = (this && this.__importDefault) || function (mod) {
15
- return (mod && mod.__esModule) ? mod : { "default": mod };
16
- };
17
14
  Object.defineProperty(exports, "__esModule", { value: true });
18
15
  exports.PluginController = void 0;
19
16
  const core_1 = require("@wocker/core");
20
- const chalk_1 = __importDefault(require("chalk"));
21
- const cli_table3_1 = __importDefault(require("cli-table3"));
22
17
  const services_1 = require("../services");
23
18
  let PluginController = class PluginController {
24
- constructor(appConfigService, pluginService, npmService, logService) {
19
+ constructor(appConfigService, pluginService) {
25
20
  this.appConfigService = appConfigService;
26
21
  this.pluginService = pluginService;
27
- this.npmService = npmService;
28
- this.logService = logService;
29
22
  }
30
23
  async list() {
31
- const config = this.appConfigService.getConfig();
32
- const table = new cli_table3_1.default({
33
- head: ["Name"],
34
- colWidths: [30]
35
- });
36
- if (!config.plugins) {
37
- return chalk_1.default.gray("No plugins installed");
38
- }
39
- for (const name of config.plugins) {
40
- table.push([name]);
41
- }
42
- return table.toString() + "\n";
24
+ return this.pluginService.getPluginsTable();
43
25
  }
44
- async add(addName, dev) {
45
- const [, prefix = "@wocker/", name, suffix = "-plugin"] = /^(@wocker\/)?(\w+)(-plugin)?$/.exec(addName) || [];
46
- const fullName = `${prefix}${name}${suffix}`;
47
- const config = this.appConfigService.getConfig();
48
- try {
49
- if (await this.pluginService.checkPlugin(fullName)) {
50
- config.addPlugin(fullName);
51
- await config.save();
52
- console.info(`Plugin ${fullName} activated`);
53
- return;
54
- }
55
- const packageInfo = await this.npmService.getPackageInfo(fullName);
56
- await this.npmService.install(fullName, packageInfo["dist-tags"].dev && dev ? "dev" : "latest");
57
- if (await this.pluginService.checkPlugin(fullName)) {
58
- config.addPlugin(fullName);
59
- await config.save();
60
- console.info(`Plugin ${fullName} activated`);
61
- return;
62
- }
63
- }
64
- catch (err) {
65
- this.logService.error(err.message);
66
- }
26
+ async add(addName, beta) {
27
+ await this.pluginService.install(addName, beta);
67
28
  }
68
29
  async remove(removeName) {
69
- const [, prefix = "@wocker/", name, suffix = "-plugin"] = /^(@wocker\/)?(\w+)(-plugin)?$/.exec(removeName) || [];
70
- const fullName = `${prefix}${name}${suffix}`;
71
- const config = this.appConfigService.getConfig();
72
- config.removePlugin(fullName);
73
- await config.save();
74
- console.info(`Plugin ${fullName} deactivated`);
30
+ await this.pluginService.uninstall(removeName);
75
31
  }
76
32
  async update() {
77
33
  await this.pluginService.update();
78
34
  }
79
35
  getInstalledPlugins() {
80
- const config = this.appConfigService.getConfig();
81
- return config.plugins || [];
36
+ return this.appConfigService.config.plugins.map(p => p.name);
82
37
  }
83
38
  };
84
39
  exports.PluginController = PluginController;
@@ -92,12 +47,12 @@ __decorate([
92
47
  __decorate([
93
48
  (0, core_1.Command)("plugin:add <name>"),
94
49
  (0, core_1.Command)("plugin:install <name>"),
95
- (0, core_1.Description)("Install a plugin"),
50
+ (0, core_1.Description)("Install a plugin by specifying its name"),
96
51
  __param(0, (0, core_1.Param)("name")),
97
- __param(1, (0, core_1.Option)("dev", {
52
+ __param(1, (0, core_1.Option)("beta", {
98
53
  type: "boolean",
99
54
  alias: "d",
100
- description: "Use dev version of plugin"
55
+ description: "Use the beta version of the plugin (if a beta version exists). Defaults to the latest stable version."
101
56
  })),
102
57
  __metadata("design:type", Function),
103
58
  __metadata("design:paramtypes", [String, Boolean]),
@@ -125,8 +80,7 @@ __decorate([
125
80
  ], PluginController.prototype, "getInstalledPlugins", null);
126
81
  exports.PluginController = PluginController = __decorate([
127
82
  (0, core_1.Controller)(),
83
+ (0, core_1.Description)("Plugin commands"),
128
84
  __metadata("design:paramtypes", [services_1.AppConfigService,
129
- services_1.PluginService,
130
- services_1.NpmService,
131
- services_1.LogService])
85
+ services_1.PluginService])
132
86
  ], PluginController);
@@ -1,19 +1,21 @@
1
1
  import { Project } from "@wocker/core";
2
+ import { PresetRepository } from "../repositories";
2
3
  import { AppConfigService, AppEventsService, ProjectService, PresetService, DockerService } from "../services";
3
4
  export declare class PresetController {
4
5
  protected readonly appConfigService: AppConfigService;
5
6
  protected readonly appEventsService: AppEventsService;
6
7
  protected readonly projectService: ProjectService;
7
8
  protected readonly presetService: PresetService;
9
+ protected readonly presetRepository: PresetRepository;
8
10
  protected readonly dockerService: DockerService;
9
- constructor(appConfigService: AppConfigService, appEventsService: AppEventsService, projectService: ProjectService, presetService: PresetService, dockerService: DockerService);
11
+ constructor(appConfigService: AppConfigService, appEventsService: AppEventsService, projectService: ProjectService, presetService: PresetService, presetRepository: PresetRepository, dockerService: DockerService);
10
12
  presets(): Promise<string[]>;
11
13
  protected onInit(project: Project): Promise<void>;
12
14
  protected onRebuild(project: Project): Promise<void>;
13
15
  protected onBeforeStart(project: Project): Promise<void>;
14
16
  init(): Promise<void>;
15
- deinit(): Promise<void>;
16
- add(name: string): Promise<void>;
17
+ destroy(): Promise<void>;
18
+ add(name: string, version?: string): Promise<void>;
17
19
  list(): Promise<string>;
18
20
  delete(name: string, confirm?: boolean): Promise<void>;
19
21
  eject(name?: string): Promise<void>;