clever-tools 3.8.3 → 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 -427
  2. package/package.json +10 -3
  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 +68 -38
  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 +37 -56
  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.3",
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,6 +71,7 @@
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",
@@ -76,6 +82,7 @@
76
82
  "pkg-fetch": "3.5.2"
77
83
  },
78
84
  "scripts": {
85
+ "build": "rollup -c rollup.config.js",
79
86
  "pretest": "npm run lint",
80
87
  "test": "grunt test",
81
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,8 +132,14 @@ 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
+ },
120
141
  metabase: {
121
- status: 'tech preview',
142
+ status: 'beta',
122
143
  postCreateInstructions: [
123
144
  'Learn more about Metabase on Clever Cloud: https://developers.clever-cloud.com/doc/addons/metabase/',
124
145
  ].join('\n'),
@@ -152,6 +173,7 @@ function displayAddon (format, addon, providerName, message) {
152
173
  id: addon.id,
153
174
  realId: addon.realId,
154
175
  name: addon.name,
176
+ env: addon.env,
155
177
  };
156
178
 
157
179
  Logger.printJson((WIP_PROVIDERS[providerName] != null)
@@ -169,6 +191,26 @@ function displayAddon (format, addon, providerName, message) {
169
191
  `Name: ${addon.name}`,
170
192
  ].join('\n'));
171
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
+
172
214
  if (providerName in WIP_PROVIDERS) {
173
215
 
174
216
  Logger.println();
@@ -178,27 +220,25 @@ function displayAddon (format, addon, providerName, message) {
178
220
  }
179
221
  }
180
222
 
181
- async function deleteAddon (params) {
223
+ export async function deleteAddon (params) {
182
224
  const { yes: skipConfirmation, org: orgaIdOrName } = params.options;
183
225
  const [addon] = params.args;
184
226
 
185
227
  let ownerId = await Organisation.getId(orgaIdOrName);
186
-
187
228
  if (ownerId == null && addon.addon_id != null) {
188
229
  ownerId = await Addon.findOwnerId(ownerId, addon.addon_id);
189
230
  }
190
-
191
231
  if (ownerId == null && addon.addon_name != null) {
192
232
  const foundAddon = await Addon.findByName(addon.addon_name);
193
233
  ownerId = foundAddon.orgaId;
194
234
  }
195
235
 
196
- await Addon.delete(ownerId, addon, skipConfirmation);
236
+ await Addon.deleteAddon(ownerId, addon, skipConfirmation);
197
237
 
198
238
  Logger.println(`Addon ${addon.addon_id || addon.addon_name} successfully deleted`);
199
239
  }
200
240
 
201
- async function rename (params) {
241
+ export async function rename (params) {
202
242
  const [addon, newName] = params.args;
203
243
  const { org: orgaIdOrName } = params.options;
204
244
 
@@ -208,7 +248,7 @@ async function rename (params) {
208
248
  Logger.println(`Addon ${addon.addon_id || addon.addon_name} successfully renamed to ${newName}`);
209
249
  }
210
250
 
211
- async function listProviders (params) {
251
+ export async function listProviders (params) {
212
252
  const { format } = params.options;
213
253
 
214
254
  const providers = await Addon.listProviders();
@@ -243,7 +283,7 @@ async function listProviders (params) {
243
283
  }
244
284
  }
245
285
 
246
- async function showProvider (params) {
286
+ export async function showProvider (params) {
247
287
  const [providerName] = params.args;
248
288
  const { format } = params.options;
249
289
 
@@ -327,7 +367,7 @@ async function showProvider (params) {
327
367
  }
328
368
  }
329
369
 
330
- async function env (params) {
370
+ export async function env (params) {
331
371
 
332
372
  const { org, format } = params.options;
333
373
  const [addonIdOrRealId] = params.args;
@@ -356,13 +396,3 @@ async function env (params) {
356
396
  Logger.println(toNameEqualsValueString(envFromAddon, { addExports: false }));
357
397
  }
358
398
  }
359
-
360
- module.exports = {
361
- list,
362
- create,
363
- delete: deleteAddon,
364
- rename,
365
- listProviders,
366
- showProvider,
367
- env,
368
- };
@@ -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 };