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.
- package/bin/clever.js +177 -426
- package/package.json +11 -5
- package/src/command-options.js +4 -10
- package/src/command-promise-handler.js +5 -7
- package/src/commands/accesslogs.js +9 -13
- package/src/commands/activity.js +10 -14
- package/src/commands/addon.js +82 -36
- package/src/commands/applications.js +9 -16
- package/src/commands/cancel-deploy.js +5 -9
- package/src/commands/config.js +7 -11
- package/src/commands/console.js +5 -9
- package/src/commands/create.js +5 -9
- package/src/commands/curl.js +7 -11
- package/src/commands/database.js +13 -16
- package/src/commands/delete.js +4 -8
- package/src/commands/deploy.js +10 -14
- package/src/commands/diag.js +9 -11
- package/src/commands/domain.js +348 -17
- package/src/commands/drain.js +10 -20
- package/src/commands/env.js +13 -17
- package/src/commands/link.js +3 -7
- package/src/commands/login.js +13 -15
- package/src/commands/logout.js +3 -7
- package/src/commands/logs.js +9 -13
- package/src/commands/makeDefault.js +3 -7
- package/src/commands/notify-email.js +9 -19
- package/src/commands/open.js +5 -9
- package/src/commands/profile.js +21 -12
- package/src/commands/published-config.js +11 -15
- package/src/commands/restart.js +7 -11
- package/src/commands/scale.js +3 -7
- package/src/commands/service.js +8 -18
- package/src/commands/ssh.js +4 -8
- package/src/commands/status.js +7 -11
- package/src/commands/stop.js +5 -9
- package/src/commands/tcp-redirs.js +11 -15
- package/src/commands/unlink.js +4 -8
- package/src/commands/version.js +4 -6
- package/src/commands/webhooks.js +8 -16
- package/src/format-table.js +4 -8
- package/src/initial-setup.js +49 -0
- package/src/load-package-json.cjs +5 -0
- package/src/logger.js +5 -8
- package/src/models/activity.js +3 -7
- package/src/models/addon.js +52 -54
- package/src/models/app_configuration.js +18 -31
- package/src/models/application.js +37 -61
- package/src/models/application_configuration.js +11 -15
- package/src/models/configuration.js +11 -15
- package/src/models/deployments.js +6 -10
- package/src/models/domain.js +6 -10
- package/src/models/drain.js +5 -13
- package/src/models/exit-strategy-option.js +4 -8
- package/src/models/fs-utils.js +3 -7
- package/src/models/git.js +19 -34
- package/src/models/ids-resolver.js +6 -12
- package/src/models/interact.js +2 -6
- package/src/models/isomorphic-http-with-agent.js +3 -9
- package/src/models/json-array.js +1 -3
- package/src/models/log-v4.js +10 -12
- package/src/models/log.js +11 -15
- package/src/models/namespaces.js +7 -13
- package/src/models/node-dns-resolver.js +43 -0
- package/src/models/notification.js +8 -17
- package/src/models/organisation.js +4 -10
- package/src/models/send-to-api.js +17 -13
- package/src/models/user.js +16 -9
- package/src/models/utils.js +2 -6
- package/src/models/variables.js +4 -10
- package/src/parsers.js +21 -71
- package/src/commands/networkgroups/commands.js +0 -7
- package/src/commands/networkgroups/index.js +0 -67
- package/src/commands/networkgroups/members.js +0 -80
- package/src/commands/networkgroups/peers.js +0 -83
- package/src/models/format-ng-table.js +0 -115
- package/src/models/format-string.js +0 -44
- package/src/models/networkgroup.js +0 -64
- package/src/models/wireguard-conf.js +0 -95
- 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.
|
|
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": "
|
|
29
|
-
"cliparse": "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",
|
package/src/command-options.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
1
|
+
import { Logger } from './logger.js';
|
|
2
|
+
import { getPackageJson } from './load-package-json.cjs';
|
|
3
|
+
import semver from 'semver';
|
|
2
4
|
|
|
3
|
-
const
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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 };
|
package/src/commands/activity.js
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
import colors from 'colors/safe.js';
|
|
2
|
+
import moment from 'moment';
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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 };
|
package/src/commands/addon.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const
|
|
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: '
|
|
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
|
-
|
|
180
|
-
|
|
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
|
-
|
|
1
|
+
import colors from 'colors/safe.js';
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 };
|
package/src/commands/config.js
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import * as application from '@clevercloud/client/esm/api/v2/application.js';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import * as Application from '../models/application.js';
|
|
4
|
+
import * as ApplicationConfiguration from '../models/application_configuration.js';
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
const ApplicationConfiguration = require('../models/application_configuration.js');
|
|
6
|
+
import { sendToApi } from '../models/send-to-api.js';
|
|
7
7
|
|
|
8
|
-
|
|
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 };
|
package/src/commands/console.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
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 };
|
package/src/commands/create.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
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 };
|
package/src/commands/curl.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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 };
|
package/src/commands/database.js
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
|
|
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
|
|
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 };
|
package/src/commands/delete.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
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 };
|