clever-tools 3.8.2 → 3.9.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.
Files changed (79) hide show
  1. package/bin/clever.js +177 -426
  2. package/package.json +11 -5
  3. package/src/command-options.js +4 -10
  4. package/src/command-promise-handler.js +5 -7
  5. package/src/commands/accesslogs.js +9 -13
  6. package/src/commands/activity.js +10 -14
  7. package/src/commands/addon.js +82 -36
  8. package/src/commands/applications.js +9 -16
  9. package/src/commands/cancel-deploy.js +5 -9
  10. package/src/commands/config.js +7 -11
  11. package/src/commands/console.js +5 -9
  12. package/src/commands/create.js +5 -9
  13. package/src/commands/curl.js +7 -11
  14. package/src/commands/database.js +13 -16
  15. package/src/commands/delete.js +4 -8
  16. package/src/commands/deploy.js +10 -14
  17. package/src/commands/diag.js +9 -11
  18. package/src/commands/domain.js +348 -17
  19. package/src/commands/drain.js +10 -20
  20. package/src/commands/env.js +13 -17
  21. package/src/commands/link.js +3 -7
  22. package/src/commands/login.js +13 -15
  23. package/src/commands/logout.js +3 -7
  24. package/src/commands/logs.js +9 -13
  25. package/src/commands/makeDefault.js +3 -7
  26. package/src/commands/notify-email.js +9 -19
  27. package/src/commands/open.js +5 -9
  28. package/src/commands/profile.js +21 -12
  29. package/src/commands/published-config.js +11 -15
  30. package/src/commands/restart.js +7 -11
  31. package/src/commands/scale.js +3 -7
  32. package/src/commands/service.js +8 -18
  33. package/src/commands/ssh.js +4 -8
  34. package/src/commands/status.js +7 -11
  35. package/src/commands/stop.js +5 -9
  36. package/src/commands/tcp-redirs.js +11 -15
  37. package/src/commands/unlink.js +4 -8
  38. package/src/commands/version.js +4 -6
  39. package/src/commands/webhooks.js +8 -16
  40. package/src/format-table.js +4 -8
  41. package/src/initial-setup.js +49 -0
  42. package/src/load-package-json.cjs +5 -0
  43. package/src/logger.js +5 -8
  44. package/src/models/activity.js +3 -7
  45. package/src/models/addon.js +52 -54
  46. package/src/models/app_configuration.js +18 -31
  47. package/src/models/application.js +37 -61
  48. package/src/models/application_configuration.js +11 -15
  49. package/src/models/configuration.js +11 -15
  50. package/src/models/deployments.js +6 -10
  51. package/src/models/domain.js +6 -10
  52. package/src/models/drain.js +5 -13
  53. package/src/models/exit-strategy-option.js +4 -8
  54. package/src/models/fs-utils.js +3 -7
  55. package/src/models/git.js +19 -34
  56. package/src/models/ids-resolver.js +6 -12
  57. package/src/models/interact.js +2 -6
  58. package/src/models/isomorphic-http-with-agent.js +3 -9
  59. package/src/models/json-array.js +1 -3
  60. package/src/models/log-v4.js +10 -12
  61. package/src/models/log.js +11 -15
  62. package/src/models/namespaces.js +7 -13
  63. package/src/models/node-dns-resolver.js +43 -0
  64. package/src/models/notification.js +8 -17
  65. package/src/models/organisation.js +4 -10
  66. package/src/models/send-to-api.js +17 -13
  67. package/src/models/user.js +16 -9
  68. package/src/models/utils.js +2 -6
  69. package/src/models/variables.js +4 -10
  70. package/src/parsers.js +21 -71
  71. package/src/commands/networkgroups/commands.js +0 -7
  72. package/src/commands/networkgroups/index.js +0 -67
  73. package/src/commands/networkgroups/members.js +0 -80
  74. package/src/commands/networkgroups/peers.js +0 -83
  75. package/src/models/format-ng-table.js +0 -115
  76. package/src/models/format-string.js +0 -44
  77. package/src/models/networkgroup.js +0 -64
  78. package/src/models/wireguard-conf.js +0 -95
  79. package/src/models/wireguard.js +0 -75
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "clever-tools",
3
- "version": "3.8.2",
3
+ "version": "3.9.0",
4
4
  "description": "Command Line Interface for Clever Cloud.",
5
5
  "main": "bin/clever.js",
6
+ "type": "module",
6
7
  "keywords": [
7
8
  "clever-tools",
8
9
  "cli",
@@ -25,8 +26,8 @@
25
26
  "scripts/*.sh"
26
27
  ],
27
28
  "dependencies": {
28
- "@clevercloud/client": "8.3.0",
29
- "cliparse": "0.4.0",
29
+ "@clevercloud/client": "9.1.0",
30
+ "cliparse": "0.5.0",
30
31
  "colors": "1.4.0",
31
32
  "common-env": "6.4.0",
32
33
  "curlconverter": "3.21.0",
@@ -43,6 +44,7 @@
43
44
  "string-length": "4.0.2",
44
45
  "superagent": "6.1.0",
45
46
  "text-table": "0.2.0",
47
+ "tldts": "6.1.30",
46
48
  "update-notifier": "5.1.0",
47
49
  "uuid": "8.3.2",
48
50
  "ws": "7.4.6",
@@ -51,6 +53,9 @@
51
53
  "devDependencies": {
52
54
  "@commitlint/cli": "18.4.3",
53
55
  "@commitlint/config-conventional": "18.4.3",
56
+ "@rollup/plugin-commonjs": "26.0.1",
57
+ "@rollup/plugin-json": "6.1.0",
58
+ "@rollup/plugin-node-resolve": "15.2.3",
54
59
  "aws-sdk": "2.919.0",
55
60
  "chai": "4.3.4",
56
61
  "del": "6.0.0",
@@ -66,17 +71,18 @@
66
71
  "grunt-cli": "1.4.3",
67
72
  "grunt-http": "2.3.3",
68
73
  "grunt-mocha-test": "0.13.3",
74
+ "magic-string": "0.30.11",
69
75
  "mime-types": "2.1.35",
70
76
  "mocha": "8.4.0",
71
77
  "pkg": "5.8.1",
72
78
  "rollup": "4.14.1",
73
- "semver": "7.3.5",
74
- "text-table": "0.2.0"
79
+ "semver": "7.3.5"
75
80
  },
76
81
  "overrides": {
77
82
  "pkg-fetch": "3.5.2"
78
83
  },
79
84
  "scripts": {
85
+ "build": "rollup -c rollup.config.js",
80
86
  "pretest": "npm run lint",
81
87
  "test": "grunt test",
82
88
  "lint": "eslint bin src scripts",
@@ -1,6 +1,6 @@
1
- const cliparse = require('cliparse');
1
+ import cliparse from 'cliparse';
2
2
 
3
- function getOutputFormatOption (formats = []) {
3
+ export function getOutputFormatOption (formats = []) {
4
4
  const availableFormats = ['human', 'json', ...formats];
5
5
  return cliparse.option('format', {
6
6
  aliases: ['F'],
@@ -18,7 +18,7 @@ function getOutputFormatOption (formats = []) {
18
18
  });
19
19
  }
20
20
 
21
- function getSameCommitPolicyOption () {
21
+ export function getSameCommitPolicyOption () {
22
22
  const availablePolicies = ['error', 'ignore', 'restart', 'rebuild'];
23
23
  return cliparse.option('same-commit-policy', {
24
24
  aliases: ['p'],
@@ -36,7 +36,7 @@ function getSameCommitPolicyOption () {
36
36
  });
37
37
  }
38
38
 
39
- function getExitOnOption () {
39
+ export function getExitOnOption () {
40
40
  const availableExitOn = ['deploy-start', 'deploy-end', 'never'];
41
41
  return cliparse.option('exit-on', {
42
42
  aliases: ['e'],
@@ -53,9 +53,3 @@ function getExitOnOption () {
53
53
  },
54
54
  });
55
55
  }
56
-
57
- module.exports = {
58
- getOutputFormatOption,
59
- getSameCommitPolicyOption,
60
- getExitOnOption,
61
- };
@@ -1,10 +1,10 @@
1
- 'use strict';
1
+ import { Logger } from './logger.js';
2
+ import { getPackageJson } from './load-package-json.cjs';
3
+ import semver from 'semver';
2
4
 
3
- const Logger = require('./logger.js');
4
- const pkg = require('../package.json');
5
- const semver = require('semver');
5
+ const pkg = getPackageJson();
6
6
 
7
- function handleCommandPromise (promise) {
7
+ export function handleCommandPromise (promise) {
8
8
  promise.catch((error) => {
9
9
  Logger.error(error);
10
10
  const semverIsOk = semver.satisfies(process.version, pkg.engines.node);
@@ -14,5 +14,3 @@ function handleCommandPromise (promise) {
14
14
  process.exit(1);
15
15
  });
16
16
  }
17
-
18
- module.exports = handleCommandPromise;
@@ -1,20 +1,18 @@
1
- 'use strict';
2
-
3
- const Application = require('../models/application.js');
4
- const Logger = require('../logger.js');
5
- const { getHostAndTokens } = require('../models/send-to-api.js');
6
- const { ApplicationAccessLogStream } = require('@clevercloud/client/cjs/streams/access-logs.js');
7
- const { JsonArray } = require('../models/json-array.js');
8
- const colors = require('colors/safe');
9
- const formatTable = require('../format-table.js');
10
- const { truncateWithEllipsis } = require('../models/utils.js');
1
+ import * as Application from '../models/application.js';
2
+ import { Logger } from '../logger.js';
3
+ import { getHostAndTokens } from '../models/send-to-api.js';
4
+ import { ApplicationAccessLogStream } from '@clevercloud/client/esm/streams/access-logs.js';
5
+ import { JsonArray } from '../models/json-array.js';
6
+ import colors from 'colors/safe.js';
7
+ import { formatTable } from '../format-table.js';
8
+ import { truncateWithEllipsis } from '../models/utils.js';
11
9
 
12
10
  // 2000 logs per 100ms maximum
13
11
  const THROTTLE_ELEMENTS = 2000;
14
12
  const THROTTLE_PER_IN_MILLISECONDS = 100;
15
13
  const CITY_MAX_LENGTH = 20;
16
14
 
17
- async function accessLogs (params) {
15
+ export async function accessLogs (params) {
18
16
 
19
17
  // TODO: drop when add-ons are supported in API
20
18
  if (params.options.addon) {
@@ -129,5 +127,3 @@ function colorStatusCode (code) {
129
127
  }
130
128
  return code;
131
129
  }
132
-
133
- module.exports = { accessLogs };
@@ -1,15 +1,13 @@
1
- 'use strict';
1
+ import colors from 'colors/safe.js';
2
+ import moment from 'moment';
2
3
 
3
- const colors = require('colors/safe');
4
- const moment = require('moment');
5
-
6
- const Activity = require('../models/activity.js');
7
- const formatTable = require('../format-table');
8
- const Logger = require('../logger.js');
9
- const { Deferred } = require('../models/utils.js');
10
- const { EventsStream } = require('@clevercloud/client/cjs/streams/events.node.js');
11
- const { getHostAndTokens } = require('../models/send-to-api.js');
12
- const Application = require('../models/application.js');
4
+ import * as Activity from '../models/activity.js';
5
+ import { formatTable } from '../format-table.js';
6
+ import { Logger } from '../logger.js';
7
+ import { Deferred } from '../models/utils.js';
8
+ import { EventsStream } from '@clevercloud/client/esm/streams/events.node.js';
9
+ import { getHostAndTokens } from '../models/send-to-api.js';
10
+ import * as Application from '../models/application.js';
13
11
 
14
12
  function getColoredState (state, isLast) {
15
13
  if (state === 'OK') {
@@ -134,7 +132,7 @@ function getEventHandler (format, follow) {
134
132
  }
135
133
  }
136
134
 
137
- async function activity (params) {
135
+ export async function activity (params) {
138
136
  const { alias, app: appIdOrName, 'show-all': showAll, follow, format } = params.options;
139
137
  const { ownerId, appId } = await Application.resolveId(appIdOrName, alias);
140
138
  const events = await Activity.list(ownerId, appId, showAll);
@@ -173,5 +171,3 @@ async function activity (params) {
173
171
 
174
172
  return deferred.promise;
175
173
  }
176
-
177
- module.exports = { activity };
@@ -1,20 +1,20 @@
1
- 'use strict';
2
-
3
- const colors = require('colors/safe');
4
-
5
- const Addon = require('../models/addon.js');
6
- const AppConfig = require('../models/app_configuration.js');
7
- const formatTable = require('../format-table')();
8
- const Logger = require('../logger.js');
9
- const Organisation = require('../models/organisation.js');
10
- const User = require('../models/user.js');
11
- const { parseAddonOptions, findOwnerId } = require('../models/addon.js');
12
- const { getAllEnvVars } = require('@clevercloud/client/cjs/api/v2/addon.js');
13
- const { sendToApi } = require('../models/send-to-api.js');
14
- const { toNameEqualsValueString } = require('@clevercloud/client/cjs/utils/env-vars.js');
15
- const { resolveAddonId } = require('../models/ids-resolver.js');
16
-
17
- async function list (params) {
1
+ import colors from 'colors/safe.js';
2
+
3
+ import * as Addon from '../models/addon.js';
4
+ import * as AppConfig from '../models/app_configuration.js';
5
+ import { formatTable as initFormatTable } from '../format-table.js';
6
+ import { Logger } from '../logger.js';
7
+ import * as Organisation from '../models/organisation.js';
8
+ import * as User from '../models/user.js';
9
+ import { parseAddonOptions, findOwnerId } from '../models/addon.js';
10
+ import { getAllEnvVars } from '@clevercloud/client/esm/api/v2/addon.js';
11
+ import { sendToApi } from '../models/send-to-api.js';
12
+ import { toNameEqualsValueString } from '@clevercloud/client/esm/utils/env-vars.js';
13
+ import { resolveAddonId } from '../models/ids-resolver.js';
14
+
15
+ const formatTable = initFormatTable();
16
+
17
+ export async function list (params) {
18
18
  const { org: orgaIdOrName, format } = params.options;
19
19
 
20
20
  const ownerId = await Organisation.getId(orgaIdOrName);
@@ -53,7 +53,7 @@ async function list (params) {
53
53
  }
54
54
  }
55
55
 
56
- async function create (params) {
56
+ export async function create (params) {
57
57
  const [providerName, name] = params.args;
58
58
  const {
59
59
  link: linkedAppAlias,
@@ -101,9 +101,24 @@ async function create (params) {
101
101
 
102
102
  function displayAddon (format, addon, providerName, message) {
103
103
 
104
+ const PROVIDERS_WITH_URL = {
105
+ keycloak: {
106
+ name: 'Keycloak',
107
+ urlEnv: 'CC_KEYCLOAK_URL',
108
+ },
109
+ 'addon-matomo': {
110
+ name: 'Matomo',
111
+ urlEnv: 'MATOMO_URL',
112
+ },
113
+ metabase: {
114
+ name: 'Metabase',
115
+ urlEnv: 'METABASE_URL',
116
+ },
117
+ };
118
+
104
119
  const WIP_PROVIDERS = {
105
120
  keycloak: {
106
- status: 'alpha',
121
+ status: 'beta',
107
122
  postCreateInstructions: [
108
123
  'Learn more about Keycloak on Clever Cloud: https://developers.clever-cloud.com/doc/addons/keycloak/',
109
124
  ].join('\n'),
@@ -117,6 +132,18 @@ function displayAddon (format, addon, providerName, message) {
117
132
  'Learn more about Materia KV on Clever Cloud: https://developers.clever-cloud.com/doc/addons/materia-kv/',
118
133
  ].join('\n'),
119
134
  },
135
+ 'addon-matomo': {
136
+ status: 'beta',
137
+ postCreateInstructions: [
138
+ 'Learn more about Matomo on Clever Cloud: https://developers.clever-cloud.com/doc/addons/matomo/',
139
+ ].join('\n'),
140
+ },
141
+ metabase: {
142
+ status: 'beta',
143
+ postCreateInstructions: [
144
+ 'Learn more about Metabase on Clever Cloud: https://developers.clever-cloud.com/doc/addons/metabase/',
145
+ ].join('\n'),
146
+ },
120
147
  'addon-pulsar': {
121
148
  status: 'beta',
122
149
  postCreateInstructions: [
@@ -146,6 +173,7 @@ function displayAddon (format, addon, providerName, message) {
146
173
  id: addon.id,
147
174
  realId: addon.realId,
148
175
  name: addon.name,
176
+ env: addon.env,
149
177
  };
150
178
 
151
179
  Logger.printJson((WIP_PROVIDERS[providerName] != null)
@@ -163,6 +191,26 @@ function displayAddon (format, addon, providerName, message) {
163
191
  `Name: ${addon.name}`,
164
192
  ].join('\n'));
165
193
 
194
+ if (providerName in PROVIDERS_WITH_URL) {
195
+ const provider = PROVIDERS_WITH_URL[providerName];
196
+ const urlEnv = addon.env.find((entry) => entry.name === provider.urlEnv);
197
+ const urlToShow = urlEnv.value;
198
+
199
+ if (urlEnv) {
200
+ Logger.println();
201
+ Logger.println(`Your ${provider.name} is starting:`);
202
+ Logger.println(` - Access it: ${urlToShow.startsWith('http') ? urlToShow : `https://${urlToShow}`}`);
203
+ Logger.println(` - Manage it: https://console.clever-cloud.com/goto/${addon.id}`);
204
+ }
205
+
206
+ if (providerName === 'keycloak') {
207
+ Logger.println();
208
+ Logger.println("An initial account has been created, you'll be invited to change the password at first login:");
209
+ Logger.println(` - Admin user name: ${addon.env.find((e) => e.name === 'CC_KEYCLOAK_ADMIN').value}`);
210
+ Logger.println(` - Temporary password: ${addon.env.find((e) => e.name === 'CC_KEYCLOAK_ADMIN_DEFAULT_PASSWORD').value}`);
211
+ }
212
+ }
213
+
166
214
  if (providerName in WIP_PROVIDERS) {
167
215
 
168
216
  Logger.println();
@@ -172,17 +220,25 @@ function displayAddon (format, addon, providerName, message) {
172
220
  }
173
221
  }
174
222
 
175
- async function deleteAddon (params) {
223
+ export async function deleteAddon (params) {
176
224
  const { yes: skipConfirmation, org: orgaIdOrName } = params.options;
177
225
  const [addon] = params.args;
178
226
 
179
- const ownerId = await Organisation.getId(orgaIdOrName);
180
- await Addon.delete(ownerId, addon, skipConfirmation);
227
+ let ownerId = await Organisation.getId(orgaIdOrName);
228
+ if (ownerId == null && addon.addon_id != null) {
229
+ ownerId = await Addon.findOwnerId(ownerId, addon.addon_id);
230
+ }
231
+ if (ownerId == null && addon.addon_name != null) {
232
+ const foundAddon = await Addon.findByName(addon.addon_name);
233
+ ownerId = foundAddon.orgaId;
234
+ }
235
+
236
+ await Addon.deleteAddon(ownerId, addon, skipConfirmation);
181
237
 
182
238
  Logger.println(`Addon ${addon.addon_id || addon.addon_name} successfully deleted`);
183
239
  }
184
240
 
185
- async function rename (params) {
241
+ export async function rename (params) {
186
242
  const [addon, newName] = params.args;
187
243
  const { org: orgaIdOrName } = params.options;
188
244
 
@@ -192,7 +248,7 @@ async function rename (params) {
192
248
  Logger.println(`Addon ${addon.addon_id || addon.addon_name} successfully renamed to ${newName}`);
193
249
  }
194
250
 
195
- async function listProviders (params) {
251
+ export async function listProviders (params) {
196
252
  const { format } = params.options;
197
253
 
198
254
  const providers = await Addon.listProviders();
@@ -227,7 +283,7 @@ async function listProviders (params) {
227
283
  }
228
284
  }
229
285
 
230
- async function showProvider (params) {
286
+ export async function showProvider (params) {
231
287
  const [providerName] = params.args;
232
288
  const { format } = params.options;
233
289
 
@@ -311,7 +367,7 @@ async function showProvider (params) {
311
367
  }
312
368
  }
313
369
 
314
- async function env (params) {
370
+ export async function env (params) {
315
371
 
316
372
  const { org, format } = params.options;
317
373
  const [addonIdOrRealId] = params.args;
@@ -340,13 +396,3 @@ async function env (params) {
340
396
  Logger.println(toNameEqualsValueString(envFromAddon, { addExports: false }));
341
397
  }
342
398
  }
343
-
344
- module.exports = {
345
- list,
346
- create,
347
- delete: deleteAddon,
348
- rename,
349
- listProviders,
350
- showProvider,
351
- env,
352
- };
@@ -1,15 +1,13 @@
1
- 'use strict';
1
+ import colors from 'colors/safe.js';
2
2
 
3
- const colors = require('colors/safe');
3
+ import * as AppConfig from '../models/app_configuration.js';
4
+ import * as Application from '../models/application.js';
5
+ import * as Organisation from '../models/organisation.js';
6
+ import { Logger } from '../logger.js';
7
+ import { formatTable } from '../format-table.js';
8
+ import { truncateWithEllipsis } from '../models/utils.js';
4
9
 
5
- const AppConfig = require('../models/app_configuration.js');
6
- const Application = require('../models/application.js');
7
- const Organisation = require('../models/organisation.js');
8
- const Logger = require('../logger.js');
9
- const formatTable = require('../format-table.js');
10
- const { truncateWithEllipsis } = require('../models/utils.js');
11
-
12
- async function list (params) {
10
+ export async function list (params) {
13
11
  const { 'only-aliases': onlyAliases, json } = params.options;
14
12
 
15
13
  const { apps } = await AppConfig.loadApplicationConf();
@@ -47,7 +45,7 @@ function formatApps (apps, onlyAliases, json) {
47
45
  }
48
46
  }
49
47
 
50
- async function listAll (params) {
48
+ export async function listAll (params) {
51
49
  const { org: orgaIdOrName, format } = params.options;
52
50
 
53
51
  const linkedApps = await AppConfig.loadApplicationConf().then((conf) => conf.apps);
@@ -121,8 +119,3 @@ async function listAll (params) {
121
119
  function getPropertyMaxWidth (array, propertyName) {
122
120
  return Math.max(...array.map((o) => o[propertyName].length));
123
121
  }
124
-
125
- module.exports = {
126
- list,
127
- listAll,
128
- };
@@ -1,11 +1,9 @@
1
- 'use strict';
1
+ import * as Application from '../models/application.js';
2
+ import { Logger } from '../logger.js';
3
+ import { getAllDeployments, cancelDeployment } from '@clevercloud/client/esm/api/v2/application.js';
4
+ import { sendToApi } from '../models/send-to-api.js';
2
5
 
3
- const Application = require('../models/application.js');
4
- const Logger = require('../logger.js');
5
- const { getAllDeployments, cancelDeployment } = require('@clevercloud/client/cjs/api/v2/application.js');
6
- const { sendToApi } = require('../models/send-to-api.js');
7
-
8
- async function cancelDeploy (params) {
6
+ export async function cancelDeploy (params) {
9
7
  const { alias, app: appIdOrName } = params.options;
10
8
  const { ownerId, appId } = await Application.resolveId(appIdOrName, alias);
11
9
 
@@ -20,5 +18,3 @@ async function cancelDeploy (params) {
20
18
 
21
19
  Logger.println('Deployment cancelled!');
22
20
  };
23
-
24
- module.exports = { cancelDeploy };
@@ -1,13 +1,11 @@
1
- 'use strict';
1
+ import * as application from '@clevercloud/client/esm/api/v2/application.js';
2
2
 
3
- const application = require('@clevercloud/client/cjs/api/v2/application.js');
3
+ import * as Application from '../models/application.js';
4
+ import * as ApplicationConfiguration from '../models/application_configuration.js';
4
5
 
5
- const Application = require('../models/application.js');
6
- const ApplicationConfiguration = require('../models/application_configuration.js');
6
+ import { sendToApi } from '../models/send-to-api.js';
7
7
 
8
- const { sendToApi } = require('../models/send-to-api.js');
9
-
10
- async function get (params) {
8
+ export async function get (params) {
11
9
  const [configurationName] = params.args;
12
10
  const { alias, app: appIdOrName } = params.options;
13
11
  const { ownerId, appId } = await Application.resolveId(appIdOrName, alias);
@@ -21,7 +19,7 @@ async function get (params) {
21
19
  }
22
20
  }
23
21
 
24
- async function set (params) {
22
+ export async function set (params) {
25
23
  const [configurationName, configurationValue] = params.args;
26
24
  const { alias, app: appIdOrName } = params.options;
27
25
  const { ownerId, appId } = await Application.resolveId(appIdOrName, alias);
@@ -34,7 +32,7 @@ async function set (params) {
34
32
  }
35
33
  }
36
34
 
37
- async function update (params) {
35
+ export async function update (params) {
38
36
  const { alias, app: appIdOrName } = params.options;
39
37
  const { ownerId, appId } = await Application.resolveId(appIdOrName, alias);
40
38
  const options = ApplicationConfiguration.parseOptions(params.options);
@@ -49,5 +47,3 @@ async function update (params) {
49
47
  ApplicationConfiguration.printByName(app, configName);
50
48
  }
51
49
  }
52
-
53
- module.exports = { get, set, update };
@@ -1,11 +1,9 @@
1
- 'use strict';
1
+ import * as Application from '../models/application.js';
2
+ import * as AppConfig from '../models/app_configuration.js';
3
+ import { Logger } from '../logger.js';
4
+ import openPage from 'open';
2
5
 
3
- const Application = require('../models/application.js');
4
- const AppConfig = require('../models/app_configuration.js');
5
- const Logger = require('../logger.js');
6
- const openPage = require('open');
7
-
8
- async function openConsole (params) {
6
+ export async function openConsole (params) {
9
7
  const { alias, app: appIdOrName } = params.options;
10
8
 
11
9
  const baseUrl = 'https://console.clever-cloud.com';
@@ -27,5 +25,3 @@ async function openConsole (params) {
27
25
 
28
26
  await openPage(url, { wait: false });
29
27
  }
30
-
31
- module.exports = { openConsole };
@@ -1,11 +1,9 @@
1
- 'use strict';
1
+ import path from 'node:path';
2
+ import * as Application from '../models/application.js';
3
+ import * as AppConfig from '../models/app_configuration.js';
4
+ import { Logger } from '../logger.js';
2
5
 
3
- const path = require('path');
4
- const Application = require('../models/application.js');
5
- const AppConfig = require('../models/app_configuration.js');
6
- const Logger = require('../logger.js');
7
-
8
- async function create (params) {
6
+ export async function create (params) {
9
7
  const { type: typeName } = params.options;
10
8
  const [rawName] = params.args;
11
9
  const { org: orgaIdOrName, alias, region, github: githubOwnerRepo, format, task: taskCommand } = params.options;
@@ -61,5 +59,3 @@ function getGithubDetails (githubOwnerRepo) {
61
59
  function getCurrentDirectoryName () {
62
60
  return path.basename(process.cwd());
63
61
  }
64
-
65
- module.exports = { create };
@@ -1,11 +1,9 @@
1
- 'use strict';
2
-
3
- const { spawn } = require('child_process');
4
- const { loadOAuthConf, conf } = require('../models/configuration.js');
5
- const { addOauthHeader } = require('@clevercloud/client/cjs/oauth.js');
6
- const Logger = require('../logger.js');
7
- const colors = require('colors/safe');
8
- const curlconverter = require('curlconverter');
1
+ import { spawn } from 'node:child_process';
2
+ import { loadOAuthConf, conf } from '../models/configuration.js';
3
+ import { addOauthHeader } from '@clevercloud/client/esm/oauth.js';
4
+ import { Logger } from '../logger.js';
5
+ import colors from 'colors/safe.js';
6
+ import curlconverter from 'curlconverter';
9
7
 
10
8
  async function loadTokens () {
11
9
  const tokens = await loadOAuthConf();
@@ -36,7 +34,7 @@ Our API documentation is available here :
36
34
  ${apiDocUrlv4}`);
37
35
  }
38
36
 
39
- async function curl () {
37
+ export async function curl () {
40
38
 
41
39
  // We remove the first three args: "node", "clever" and "curl"
42
40
  const curlArgs = process.argv.slice(3);
@@ -93,5 +91,3 @@ async function parseCurlCommand (curlCommand) {
93
91
  queryParams: curlRequestParams.queries,
94
92
  };
95
93
  }
96
-
97
- module.exports = { curl };
@@ -1,16 +1,15 @@
1
- 'use strict';
1
+ import { sendToApi } from '../models/send-to-api.js';
2
+ import { getBackups } from '@clevercloud/client/esm/api/v2/backups.js';
3
+ import { Logger } from '../logger.js';
4
+ import { formatTable as initFormatTable } from '../format-table.js';
5
+ import superagent from 'superagent';
6
+ import fs from 'node:fs';
7
+ import { findOwnerId } from '../models/addon.js';
8
+ import { resolveRealId, resolveAddonId } from '../models/ids-resolver.js';
2
9
 
3
- const { sendToApi } = require('../models/send-to-api.js');
4
- const { getBackups } = require('@clevercloud/client/cjs/api/v2/backups.js');
5
- const { println } = require('../logger.js');
6
- const formatTable = require('../format-table')();
7
- const superagent = require('superagent');
8
- const fs = require('fs');
9
- const { findOwnerId } = require('../models/addon.js');
10
- const { resolveRealId, resolveAddonId } = require('../models/ids-resolver.js');
11
- const Logger = require('../logger.js');
10
+ const formatTable = initFormatTable();
12
11
 
13
- async function listBackups (params) {
12
+ export async function listBackups (params) {
14
13
 
15
14
  const { org, format } = params.options;
16
15
  const [addonIdOrRealId] = params.args;
@@ -22,7 +21,7 @@ async function listBackups (params) {
22
21
  const backups = await getBackups({ ownerId, ref: realId }).then(sendToApi);
23
22
 
24
23
  if (backups.length === 0 && format === 'human') {
25
- println('There are no backups yet');
24
+ Logger.println('There are no backups yet');
26
25
  return;
27
26
  }
28
27
 
@@ -58,7 +57,7 @@ async function listBackups (params) {
58
57
  'STATUS',
59
58
  ];
60
59
 
61
- println(formatTable([
60
+ Logger.println(formatTable([
62
61
  head,
63
62
  ...formattedLines,
64
63
  ]));
@@ -66,7 +65,7 @@ async function listBackups (params) {
66
65
  }
67
66
  }
68
67
 
69
- async function downloadBackups (params) {
68
+ export async function downloadBackups (params) {
70
69
 
71
70
  const { org, output } = params.options;
72
71
  const [addonIdOrRealId, backupId] = params.args;
@@ -92,5 +91,3 @@ async function downloadBackups (params) {
92
91
 
93
92
  process.stdout.write(res.body);
94
93
  }
95
-
96
- module.exports = { listBackups, downloadBackups };
@@ -1,10 +1,8 @@
1
- 'use strict';
1
+ import * as AppConfig from '../models/app_configuration.js';
2
+ import * as Application from '../models/application.js';
3
+ import { Logger } from '../logger.js';
2
4
 
3
- const AppConfig = require('../models/app_configuration.js');
4
- const Application = require('../models/application.js');
5
- const Logger = require('../logger.js');
6
-
7
- async function deleteApp (params) {
5
+ export async function deleteApp (params) {
8
6
  const { alias, app: appIdOrName, yes: skipConfirmation } = params.options;
9
7
  const { ownerId, appId } = await Application.resolveId(appIdOrName, alias);
10
8
 
@@ -23,5 +21,3 @@ async function deleteApp (params) {
23
21
  }
24
22
  }
25
23
  };
26
-
27
- module.exports = { deleteApp };