@dbos-inc/dbos-cloud 1.0.2 → 1.1.9-preview.gb854acef85
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/applications/delete-app.ts +1 -1
- package/applications/deploy-app-code.ts +2 -2
- package/applications/get-app-info.ts +2 -2
- package/applications/get-app-logs.ts +1 -1
- package/applications/index.ts +6 -6
- package/applications/list-apps.ts +2 -2
- package/applications/register-app.ts +1 -1
- package/applications/update-app.ts +2 -2
- package/cli.ts +40 -14
- package/dashboards.ts +1 -1
- package/dist/applications/delete-app.d.ts.map +1 -0
- package/dist/applications/delete-app.js +34 -0
- package/dist/applications/delete-app.js.map +1 -0
- package/dist/applications/deploy-app-code.d.ts.map +1 -0
- package/dist/{packages/dbos-cloud/applications → applications}/deploy-app-code.js +23 -30
- package/dist/applications/deploy-app-code.js.map +1 -0
- package/dist/applications/get-app-info.d.ts.map +1 -0
- package/dist/applications/get-app-info.js +43 -0
- package/dist/applications/get-app-info.js.map +1 -0
- package/dist/applications/get-app-logs.d.ts.map +1 -0
- package/dist/{packages/dbos-cloud/applications → applications}/get-app-logs.js +9 -16
- package/dist/applications/get-app-logs.js.map +1 -0
- package/dist/applications/index.d.ts +7 -0
- package/dist/applications/index.d.ts.map +1 -0
- package/dist/applications/index.js +7 -0
- package/dist/applications/index.js.map +1 -0
- package/dist/applications/list-apps.d.ts.map +1 -0
- package/dist/applications/list-apps.js +41 -0
- package/dist/applications/list-apps.js.map +1 -0
- package/dist/applications/register-app.d.ts.map +1 -0
- package/dist/applications/register-app.js +39 -0
- package/dist/applications/register-app.js.map +1 -0
- package/dist/applications/types.d.ts.map +1 -0
- package/dist/{packages/dbos-cloud/applications → applications}/types.js +1 -5
- package/dist/applications/types.js.map +1 -0
- package/dist/applications/update-app.d.ts.map +1 -0
- package/dist/applications/update-app.js +38 -0
- package/dist/applications/update-app.js.map +1 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/{packages/dbos-cloud/cli.js → cli.js} +53 -35
- package/dist/cli.js.map +1 -0
- package/dist/{packages/dbos-cloud/cloudutils.d.ts → cloudutils.d.ts} +1 -1
- package/dist/cloudutils.d.ts.map +1 -0
- package/dist/{packages/dbos-cloud/cloudutils.js → cloudutils.js} +34 -52
- package/dist/cloudutils.js.map +1 -0
- package/dist/dashboards.d.ts.map +1 -0
- package/dist/dashboards.js +55 -0
- package/dist/dashboards.js.map +1 -0
- package/dist/login.d.ts.map +1 -0
- package/dist/{packages/dbos-cloud/login.js → login.js} +17 -25
- package/dist/login.js.map +1 -0
- package/dist/package.json +44 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +86 -0
- package/dist/register.js.map +1 -0
- package/dist/userdb.d.ts.map +1 -0
- package/dist/{packages/dbos-cloud/userdb.js → userdb.js} +34 -47
- package/dist/userdb.js.map +1 -0
- package/login.ts +1 -1
- package/package.json +6 -3
- package/register.ts +2 -2
- package/tsconfig.json +4 -2
- package/userdb.ts +1 -2
- package/dist/packages/dbos-cloud/applications/delete-app.d.ts.map +0 -1
- package/dist/packages/dbos-cloud/applications/delete-app.js +0 -41
- package/dist/packages/dbos-cloud/applications/delete-app.js.map +0 -1
- package/dist/packages/dbos-cloud/applications/deploy-app-code.d.ts.map +0 -1
- package/dist/packages/dbos-cloud/applications/deploy-app-code.js.map +0 -1
- package/dist/packages/dbos-cloud/applications/get-app-info.d.ts.map +0 -1
- package/dist/packages/dbos-cloud/applications/get-app-info.js +0 -50
- package/dist/packages/dbos-cloud/applications/get-app-info.js.map +0 -1
- package/dist/packages/dbos-cloud/applications/get-app-logs.d.ts.map +0 -1
- package/dist/packages/dbos-cloud/applications/get-app-logs.js.map +0 -1
- package/dist/packages/dbos-cloud/applications/index.d.ts +0 -7
- package/dist/packages/dbos-cloud/applications/index.d.ts.map +0 -1
- package/dist/packages/dbos-cloud/applications/index.js +0 -16
- package/dist/packages/dbos-cloud/applications/index.js.map +0 -1
- package/dist/packages/dbos-cloud/applications/list-apps.d.ts.map +0 -1
- package/dist/packages/dbos-cloud/applications/list-apps.js +0 -48
- package/dist/packages/dbos-cloud/applications/list-apps.js.map +0 -1
- package/dist/packages/dbos-cloud/applications/register-app.d.ts.map +0 -1
- package/dist/packages/dbos-cloud/applications/register-app.js +0 -46
- package/dist/packages/dbos-cloud/applications/register-app.js.map +0 -1
- package/dist/packages/dbos-cloud/applications/types.d.ts.map +0 -1
- package/dist/packages/dbos-cloud/applications/types.js.map +0 -1
- package/dist/packages/dbos-cloud/applications/update-app.d.ts.map +0 -1
- package/dist/packages/dbos-cloud/applications/update-app.js +0 -45
- package/dist/packages/dbos-cloud/applications/update-app.js.map +0 -1
- package/dist/packages/dbos-cloud/cli.d.ts.map +0 -1
- package/dist/packages/dbos-cloud/cli.js.map +0 -1
- package/dist/packages/dbos-cloud/cloudutils.d.ts.map +0 -1
- package/dist/packages/dbos-cloud/cloudutils.js.map +0 -1
- package/dist/packages/dbos-cloud/dashboards.d.ts.map +0 -1
- package/dist/packages/dbos-cloud/dashboards.js +0 -63
- package/dist/packages/dbos-cloud/dashboards.js.map +0 -1
- package/dist/packages/dbos-cloud/login.d.ts.map +0 -1
- package/dist/packages/dbos-cloud/login.js.map +0 -1
- package/dist/packages/dbos-cloud/register.d.ts.map +0 -1
- package/dist/packages/dbos-cloud/register.js +0 -116
- package/dist/packages/dbos-cloud/register.js.map +0 -1
- package/dist/packages/dbos-cloud/userdb.d.ts.map +0 -1
- package/dist/packages/dbos-cloud/userdb.js.map +0 -1
- package/dist/src/utils.d.ts +0 -6
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js +0 -51
- package/dist/src/utils.js.map +0 -1
- /package/dist/{packages/dbos-cloud/applications → applications}/delete-app.d.ts +0 -0
- /package/dist/{packages/dbos-cloud/applications → applications}/deploy-app-code.d.ts +0 -0
- /package/dist/{packages/dbos-cloud/applications → applications}/get-app-info.d.ts +0 -0
- /package/dist/{packages/dbos-cloud/applications → applications}/get-app-logs.d.ts +0 -0
- /package/dist/{packages/dbos-cloud/applications → applications}/list-apps.d.ts +0 -0
- /package/dist/{packages/dbos-cloud/applications → applications}/register-app.d.ts +0 -0
- /package/dist/{packages/dbos-cloud/applications → applications}/types.d.ts +0 -0
- /package/dist/{packages/dbos-cloud/applications → applications}/update-app.d.ts +0 -0
- /package/dist/{packages/dbos-cloud/cli.d.ts → cli.d.ts} +0 -0
- /package/dist/{packages/dbos-cloud/dashboards.d.ts → dashboards.d.ts} +0 -0
- /package/dist/{packages/dbos-cloud/login.d.ts → login.d.ts} +0 -0
- /package/dist/{packages/dbos-cloud/register.d.ts → register.d.ts} +0 -0
- /package/dist/{packages/dbos-cloud/userdb.d.ts → userdb.d.ts} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import axios, { AxiosError } from "axios";
|
|
2
|
-
import { isCloudAPIErrorResponse, handleAPIErrors, getCloudCredentials, getLogger, retrieveApplicationName } from "../cloudutils";
|
|
2
|
+
import { isCloudAPIErrorResponse, handleAPIErrors, getCloudCredentials, getLogger, retrieveApplicationName } from "../cloudutils.js";
|
|
3
3
|
|
|
4
4
|
export async function deleteApp(host: string, appName?: string): Promise<number> {
|
|
5
5
|
const logger = getLogger()
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import axios, { AxiosError } from "axios";
|
|
2
2
|
import { existsSync, readFileSync } from 'fs';
|
|
3
|
-
import { handleAPIErrors, dbosConfigFilePath, getCloudCredentials, getLogger, checkReadFile, sleep, isCloudAPIErrorResponse, retrieveApplicationName, dbosEnvPath } from "../cloudutils";
|
|
3
|
+
import { handleAPIErrors, dbosConfigFilePath, getCloudCredentials, getLogger, checkReadFile, sleep, isCloudAPIErrorResponse, retrieveApplicationName, dbosEnvPath } from "../cloudutils.js";
|
|
4
4
|
import path from "path";
|
|
5
|
-
import { Application } from "./types";
|
|
5
|
+
import { Application } from "./types.js";
|
|
6
6
|
import JSZip from "jszip";
|
|
7
7
|
import fg from 'fast-glob';
|
|
8
8
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import axios , { AxiosError } from "axios";
|
|
2
|
-
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse, retrieveApplicationName } from "../cloudutils";
|
|
3
|
-
import { Application, prettyPrintApplication } from "./types";
|
|
2
|
+
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse, retrieveApplicationName } from "../cloudutils.js";
|
|
3
|
+
import { Application, prettyPrintApplication } from "./types.js";
|
|
4
4
|
|
|
5
5
|
export async function getAppInfo(host: string, json: boolean, appName?: string): Promise<number> {
|
|
6
6
|
const logger = getLogger();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import axios , { AxiosError } from "axios";
|
|
2
|
-
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse, retrieveApplicationName } from "../cloudutils";
|
|
2
|
+
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse, retrieveApplicationName } from "../cloudutils.js";
|
|
3
3
|
|
|
4
4
|
export async function getAppLogs(host: string, last: number): Promise<number> {
|
|
5
5
|
if (last != undefined && (isNaN(last) || last <= 0)) {
|
package/applications/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { registerApp } from './register-app';
|
|
2
|
-
export { listApps } from './list-apps';
|
|
3
|
-
export { deleteApp } from './delete-app';
|
|
4
|
-
export { deployAppCode } from './deploy-app-code';
|
|
5
|
-
export { getAppLogs } from './get-app-logs';
|
|
6
|
-
export { updateApp } from './update-app';
|
|
1
|
+
export { registerApp } from './register-app.js';
|
|
2
|
+
export { listApps } from './list-apps.js';
|
|
3
|
+
export { deleteApp } from './delete-app.js';
|
|
4
|
+
export { deployAppCode } from './deploy-app-code.js';
|
|
5
|
+
export { getAppLogs } from './get-app-logs.js';
|
|
6
|
+
export { updateApp } from './update-app.js';
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import axios, { AxiosError } from "axios";
|
|
2
|
-
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse } from "../cloudutils";
|
|
3
|
-
import { Application, prettyPrintApplication } from "./types";
|
|
2
|
+
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse } from "../cloudutils.js";
|
|
3
|
+
import { Application, prettyPrintApplication } from "./types.js";
|
|
4
4
|
|
|
5
5
|
export async function listApps(host: string, json: boolean): Promise<number> {
|
|
6
6
|
const logger = getLogger();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import axios, { AxiosError } from "axios";
|
|
2
|
-
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse, retrieveApplicationName } from "../cloudutils";
|
|
2
|
+
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse, retrieveApplicationName } from "../cloudutils.js";
|
|
3
3
|
|
|
4
4
|
export async function registerApp(dbname: string, host: string): Promise<number> {
|
|
5
5
|
const logger = getLogger();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import axios, { AxiosError } from "axios";
|
|
2
|
-
import { getCloudCredentials, getLogger, handleAPIErrors, isCloudAPIErrorResponse, retrieveApplicationName } from "../cloudutils";
|
|
3
|
-
import { Application } from "./types";
|
|
2
|
+
import { getCloudCredentials, getLogger, handleAPIErrors, isCloudAPIErrorResponse, retrieveApplicationName } from "../cloudutils.js";
|
|
3
|
+
import { Application } from "./types.js";
|
|
4
4
|
|
|
5
5
|
export async function updateApp(host: string): Promise<number> {
|
|
6
6
|
const logger = getLogger();
|
package/cli.ts
CHANGED
|
@@ -7,20 +7,46 @@ import {
|
|
|
7
7
|
deleteApp,
|
|
8
8
|
deployAppCode,
|
|
9
9
|
getAppLogs,
|
|
10
|
-
} from "./applications";
|
|
10
|
+
} from "./applications/index.js";
|
|
11
11
|
import { Command } from 'commander';
|
|
12
|
-
import { login } from "./login";
|
|
13
|
-
import { registerUser } from "./register";
|
|
14
|
-
import { createUserDb, getUserDb, deleteUserDb, listUserDB, resetDBCredentials } from "./userdb";
|
|
15
|
-
import { launchDashboard, getDashboardURL } from "./dashboards";
|
|
16
|
-
import { DBOSCloudHost, credentialsExist, deleteCredentials } from "./cloudutils";
|
|
17
|
-
import { getAppInfo } from "./applications/get-app-info";
|
|
12
|
+
import { login } from "./login.js";
|
|
13
|
+
import { registerUser } from "./register.js";
|
|
14
|
+
import { createUserDb, getUserDb, deleteUserDb, listUserDB, resetDBCredentials } from "./userdb.js";
|
|
15
|
+
import { launchDashboard, getDashboardURL } from "./dashboards.js";
|
|
16
|
+
import { DBOSCloudHost, credentialsExist, deleteCredentials } from "./cloudutils.js";
|
|
17
|
+
import { getAppInfo } from "./applications/get-app-info.js";
|
|
18
18
|
import promptSync from 'prompt-sync';
|
|
19
|
+
import chalk from 'chalk';
|
|
20
|
+
import fs from "fs";
|
|
21
|
+
import * as url from 'url';
|
|
22
|
+
import path from "path";
|
|
23
|
+
import updateNotifier, { Package } from "update-notifier";
|
|
24
|
+
|
|
25
|
+
// Read local package.json
|
|
26
|
+
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
|
|
27
|
+
const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, "package.json")).toString()) as Package;
|
|
28
|
+
|
|
29
|
+
// Notify the user if the package requires an update.
|
|
30
|
+
const notifier = updateNotifier({
|
|
31
|
+
pkg: packageJson,
|
|
32
|
+
updateCheckInterval: 0
|
|
33
|
+
})
|
|
34
|
+
if (notifier.update) {
|
|
35
|
+
console.log(`
|
|
36
|
+
${chalk.yellow("-----------------------------------------------------------------------------------------")}
|
|
37
|
+
|
|
38
|
+
DBOS Cloud CLI Update available ${chalk.gray(notifier.update.current)} → ${chalk.green(notifier.update.latest)}
|
|
39
|
+
|
|
40
|
+
To upgrade the DBOS Cloud CLI to the latest version, run the following command:
|
|
41
|
+
${chalk.cyan("`npm i --save-dev @dbos-inc/dbos-cloud@latest`")}
|
|
42
|
+
|
|
43
|
+
${chalk.yellow("-----------------------------------------------------------------------------------------")}`
|
|
44
|
+
);
|
|
45
|
+
}
|
|
19
46
|
|
|
20
47
|
const program = new Command();
|
|
21
48
|
|
|
22
49
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
23
|
-
const packageJson = require('../../../package.json') as { version: string };
|
|
24
50
|
program.version(packageJson.version);
|
|
25
51
|
|
|
26
52
|
/////////////////////
|
|
@@ -39,12 +65,12 @@ program
|
|
|
39
65
|
.command('register')
|
|
40
66
|
.description('Register a user with DBOS cloud')
|
|
41
67
|
.requiredOption('-u, --username <string>', 'Username')
|
|
42
|
-
.action(async (options: { username: string}) => {
|
|
68
|
+
.action(async (options: { username: string }) => {
|
|
43
69
|
const exitCode = await registerUser(options.username, DBOSCloudHost);
|
|
44
70
|
process.exit(exitCode);
|
|
45
71
|
});
|
|
46
72
|
|
|
47
|
-
|
|
73
|
+
program
|
|
48
74
|
.command('logout')
|
|
49
75
|
.description('Log out of DBOS cloud')
|
|
50
76
|
.action(() => {
|
|
@@ -122,7 +148,7 @@ applicationCommands
|
|
|
122
148
|
.command('logs')
|
|
123
149
|
.description("Print this application's logs")
|
|
124
150
|
.option('-l, --last <integer>', 'How far back to query, in seconds from current time. By default, we retrieve all data', parseInt)
|
|
125
|
-
.action(async (options: { last: number}) => {
|
|
151
|
+
.action(async (options: { last: number }) => {
|
|
126
152
|
const exitCode = await getAppLogs(DBOSCloudHost, options.last);
|
|
127
153
|
process.exit(exitCode);
|
|
128
154
|
});
|
|
@@ -157,7 +183,7 @@ databaseCommands
|
|
|
157
183
|
.description("Retrieve the status of a Postgres database instance")
|
|
158
184
|
.argument('<name>', 'database instance name')
|
|
159
185
|
.option('--json', 'Emit JSON output')
|
|
160
|
-
.action((async (dbname: string, options: { json: boolean}) => {
|
|
186
|
+
.action((async (dbname: string, options: { json: boolean }) => {
|
|
161
187
|
const exitCode = await getUserDb(DBOSCloudHost, dbname, options.json)
|
|
162
188
|
process.exit(exitCode);
|
|
163
189
|
}))
|
|
@@ -166,7 +192,7 @@ databaseCommands
|
|
|
166
192
|
.command('list')
|
|
167
193
|
.description("List all your Postgres database instances")
|
|
168
194
|
.option('--json', 'Emit JSON output')
|
|
169
|
-
.action((async (options: { json: boolean}) => {
|
|
195
|
+
.action((async (options: { json: boolean }) => {
|
|
170
196
|
const exitCode = await listUserDB(DBOSCloudHost, options.json)
|
|
171
197
|
process.exit(exitCode);
|
|
172
198
|
}))
|
|
@@ -176,7 +202,7 @@ databaseCommands
|
|
|
176
202
|
.description("Reset password for a Postgres database instance")
|
|
177
203
|
.argument('<name>', 'database instance name')
|
|
178
204
|
.option('-W, --password <string>', 'Specify the database user password')
|
|
179
|
-
.action((async (dbName: string, options: { password: string}) => {
|
|
205
|
+
.action((async (dbName: string, options: { password: string }) => {
|
|
180
206
|
if (!options.password) {
|
|
181
207
|
options.password = prompt('Database Password: ', { echo: '*' });
|
|
182
208
|
}
|
package/dashboards.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import axios, { AxiosError } from "axios";
|
|
2
|
-
import { getLogger, getCloudCredentials, isCloudAPIErrorResponse, handleAPIErrors } from "./cloudutils";
|
|
2
|
+
import { getLogger, getCloudCredentials, isCloudAPIErrorResponse, handleAPIErrors } from "./cloudutils.js";
|
|
3
3
|
|
|
4
4
|
export async function launchDashboard(host: string): Promise<number> {
|
|
5
5
|
const logger = getLogger();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-app.d.ts","sourceRoot":"","sources":["../../applications/delete-app.ts"],"names":[],"mappings":"AAGA,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA+B/E"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import { isCloudAPIErrorResponse, handleAPIErrors, getCloudCredentials, getLogger, retrieveApplicationName } from "../cloudutils.js";
|
|
3
|
+
export async function deleteApp(host, appName) {
|
|
4
|
+
const logger = getLogger();
|
|
5
|
+
const userCredentials = getCloudCredentials();
|
|
6
|
+
const bearerToken = "Bearer " + userCredentials.token;
|
|
7
|
+
appName = appName ?? retrieveApplicationName(logger);
|
|
8
|
+
if (!appName) {
|
|
9
|
+
return 1;
|
|
10
|
+
}
|
|
11
|
+
logger.info(`Deleting application: ${appName}`);
|
|
12
|
+
try {
|
|
13
|
+
await axios.delete(`https://${host}/v1alpha1/${userCredentials.userName}/applications/${appName}`, {
|
|
14
|
+
headers: {
|
|
15
|
+
"Content-Type": "application/json",
|
|
16
|
+
Authorization: bearerToken,
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
logger.info(`Successfully deleted application: ${appName}`);
|
|
20
|
+
return 0;
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
const errorLabel = `Failed to delete application ${appName}`;
|
|
24
|
+
const axiosError = e;
|
|
25
|
+
if (isCloudAPIErrorResponse(axiosError.response?.data)) {
|
|
26
|
+
handleAPIErrors(errorLabel, axiosError);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
logger.error(`${errorLabel}: ${e.message}`);
|
|
30
|
+
}
|
|
31
|
+
return 1;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=delete-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-app.js","sourceRoot":"","sources":["../../applications/delete-app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,mBAAmB,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAErI,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,OAAgB;IAC5D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,eAAe,GAAG,mBAAmB,EAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;IAEtD,OAAO,GAAG,OAAO,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAA;IAE/C,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,IAAI,aAAa,eAAe,CAAC,QAAQ,iBAAiB,OAAO,EAAE,EAAE;YACjG,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,WAAW;aAC3B;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,UAAU,GAAG,gCAAgC,OAAO,EAAE,CAAC;QAC7D,MAAM,UAAU,GAAG,CAAe,CAAC;QACnC,IAAI,uBAAuB,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;YACvD,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-app-code.d.ts","sourceRoot":"","sources":["../../applications/deploy-app-code.ts"],"names":[],"mappings":"AAkCA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmFjE"}
|
|
@@ -1,40 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const axios_1 = __importDefault(require("axios"));
|
|
8
|
-
const fs_1 = require("fs");
|
|
9
|
-
const cloudutils_1 = require("../cloudutils");
|
|
10
|
-
const path_1 = __importDefault(require("path"));
|
|
11
|
-
const jszip_1 = __importDefault(require("jszip"));
|
|
12
|
-
const fast_glob_1 = __importDefault(require("fast-glob"));
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import { existsSync, readFileSync } from 'fs';
|
|
3
|
+
import { handleAPIErrors, dbosConfigFilePath, getCloudCredentials, getLogger, checkReadFile, sleep, isCloudAPIErrorResponse, retrieveApplicationName, dbosEnvPath } from "../cloudutils.js";
|
|
4
|
+
import path from "path";
|
|
5
|
+
import JSZip from "jszip";
|
|
6
|
+
import fg from 'fast-glob';
|
|
13
7
|
async function createZipData() {
|
|
14
|
-
const zip = new
|
|
15
|
-
const files = await (
|
|
8
|
+
const zip = new JSZip();
|
|
9
|
+
const files = await fg(`${process.cwd()}/**/*`, { dot: true, onlyFiles: true, ignore: [`**/${dbosEnvPath}/**`, '**/node_modules/**', '**/dist/**', `**/${dbosConfigFilePath}`] });
|
|
16
10
|
files.forEach(file => {
|
|
17
11
|
const relativePath = file.replace(`${process.cwd()}/`, '');
|
|
18
|
-
const fileData =
|
|
12
|
+
const fileData = readFileSync(file);
|
|
19
13
|
zip.file(relativePath, fileData, { binary: true });
|
|
20
14
|
});
|
|
21
15
|
// Add the interpolated config file at package root
|
|
22
|
-
const interpolatedConfig = readInterpolatedConfig(
|
|
23
|
-
zip.file(
|
|
16
|
+
const interpolatedConfig = readInterpolatedConfig(dbosConfigFilePath);
|
|
17
|
+
zip.file(dbosConfigFilePath, interpolatedConfig, { binary: true });
|
|
24
18
|
// Generate ZIP file as a Buffer
|
|
25
19
|
const buffer = await zip.generateAsync({ type: 'nodebuffer' });
|
|
26
20
|
return buffer.toString('base64');
|
|
27
21
|
}
|
|
28
|
-
async function deployAppCode(host) {
|
|
29
|
-
const logger =
|
|
30
|
-
const userCredentials =
|
|
22
|
+
export async function deployAppCode(host) {
|
|
23
|
+
const logger = getLogger();
|
|
24
|
+
const userCredentials = getCloudCredentials();
|
|
31
25
|
const bearerToken = "Bearer " + userCredentials.token;
|
|
32
|
-
const appName =
|
|
26
|
+
const appName = retrieveApplicationName(logger);
|
|
33
27
|
if (!appName) {
|
|
34
28
|
return 1;
|
|
35
29
|
}
|
|
36
30
|
// Verify that package-lock.json exists
|
|
37
|
-
if (!
|
|
31
|
+
if (!existsSync(path.join(process.cwd(), 'package-lock.json'))) {
|
|
38
32
|
logger.error("package-lock.json not found. Please run 'npm install' before deploying.");
|
|
39
33
|
return 1;
|
|
40
34
|
}
|
|
@@ -42,7 +36,7 @@ async function deployAppCode(host) {
|
|
|
42
36
|
const zipData = await createZipData();
|
|
43
37
|
// Submit the deploy request
|
|
44
38
|
logger.info(`Submitting deploy request for ${appName}`);
|
|
45
|
-
const response = await
|
|
39
|
+
const response = await axios.post(`https://${host}/v1alpha1/${userCredentials.userName}/applications/${appName}`, {
|
|
46
40
|
application_archive: zipData,
|
|
47
41
|
}, {
|
|
48
42
|
headers: {
|
|
@@ -68,7 +62,7 @@ async function deployAppCode(host) {
|
|
|
68
62
|
return 1;
|
|
69
63
|
}
|
|
70
64
|
// Retrieve the application status, check if it is "AVAILABLE"
|
|
71
|
-
const list = await
|
|
65
|
+
const list = await axios.get(`https://${host}/v1alpha1/${userCredentials.userName}/applications`, {
|
|
72
66
|
headers: {
|
|
73
67
|
Authorization: bearerToken,
|
|
74
68
|
},
|
|
@@ -79,9 +73,9 @@ async function deployAppCode(host) {
|
|
|
79
73
|
applicationAvailable = true;
|
|
80
74
|
}
|
|
81
75
|
}
|
|
82
|
-
await
|
|
76
|
+
await sleep(1000);
|
|
83
77
|
}
|
|
84
|
-
await
|
|
78
|
+
await sleep(5000); // Leave time for route cache updates
|
|
85
79
|
logger.info(`Successfully deployed ${appName}!`);
|
|
86
80
|
logger.info(`Access your application at https://${userCredentials.userName}-${appName}.${host}/`);
|
|
87
81
|
return 0;
|
|
@@ -89,8 +83,8 @@ async function deployAppCode(host) {
|
|
|
89
83
|
catch (e) {
|
|
90
84
|
const errorLabel = `Failed to deploy application ${appName}`;
|
|
91
85
|
const axiosError = e;
|
|
92
|
-
if (
|
|
93
|
-
|
|
86
|
+
if (isCloudAPIErrorResponse(axiosError.response?.data)) {
|
|
87
|
+
handleAPIErrors(errorLabel, axiosError);
|
|
94
88
|
}
|
|
95
89
|
else {
|
|
96
90
|
logger.error(`${errorLabel}: ${e.message}`);
|
|
@@ -98,9 +92,8 @@ async function deployAppCode(host) {
|
|
|
98
92
|
return 1;
|
|
99
93
|
}
|
|
100
94
|
}
|
|
101
|
-
exports.deployAppCode = deployAppCode;
|
|
102
95
|
function readInterpolatedConfig(configFilePath) {
|
|
103
|
-
const configFileContent =
|
|
96
|
+
const configFileContent = checkReadFile(configFilePath);
|
|
104
97
|
const regex = /\${([^}]+)}/g; // Regex to match ${VAR_NAME} style placeholders
|
|
105
98
|
return configFileContent.replace(regex, (_, g1) => {
|
|
106
99
|
return process.env[g1] || ""; // If the env variable is not set, return an empty string.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-app-code.js","sourceRoot":"","sources":["../../applications/deploy-app-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-app-info.d.ts","sourceRoot":"","sources":["../../applications/get-app-info.ts"],"names":[],"mappings":"AAIA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqC/F"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse, retrieveApplicationName } from "../cloudutils.js";
|
|
3
|
+
import { prettyPrintApplication } from "./types.js";
|
|
4
|
+
export async function getAppInfo(host, json, appName) {
|
|
5
|
+
const logger = getLogger();
|
|
6
|
+
const userCredentials = getCloudCredentials();
|
|
7
|
+
const bearerToken = "Bearer " + userCredentials.token;
|
|
8
|
+
appName = appName ?? retrieveApplicationName(logger, json);
|
|
9
|
+
if (!appName) {
|
|
10
|
+
return 1;
|
|
11
|
+
}
|
|
12
|
+
if (!json) {
|
|
13
|
+
logger.info(`Retrieving info for application: ${appName}`);
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
const res = await axios.get(`https://${host}/v1alpha1/${userCredentials.userName}/applications/${appName}`, {
|
|
17
|
+
headers: {
|
|
18
|
+
"Content-Type": "application/json",
|
|
19
|
+
Authorization: bearerToken,
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
const app = res.data;
|
|
23
|
+
if (json) {
|
|
24
|
+
console.log(JSON.stringify(app));
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
prettyPrintApplication(app);
|
|
28
|
+
}
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
const errorLabel = `Failed to retrieve info for application ${appName}`;
|
|
33
|
+
const axiosError = e;
|
|
34
|
+
if (isCloudAPIErrorResponse(axiosError.response?.data)) {
|
|
35
|
+
handleAPIErrors(errorLabel, axiosError);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
logger.error(`${errorLabel}: ${e.message}`);
|
|
39
|
+
}
|
|
40
|
+
return 1;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=get-app-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-app-info.js","sourceRoot":"","sources":["../../applications/get-app-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,SAAS,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACrI,OAAO,EAAe,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,IAAa,EAAE,OAAgB;IAC5E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,eAAe,GAAG,mBAAmB,EAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;IAEtD,OAAO,GAAG,OAAO,IAAI,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,CAAC,IAAI,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAA;IAC5D,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,WAAW,IAAI,aAAa,eAAe,CAAC,QAAQ,iBAAiB,OAAO,EAAE,EAAE;YAC1G,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,WAAW;aAC3B;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,CAAC,IAAmB,CAAA;QACnC,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,UAAU,GAAG,2CAA2C,OAAO,EAAE,CAAC;QACxE,MAAM,UAAU,GAAG,CAAe,CAAC;QACnC,IAAI,uBAAuB,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;YACvD,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-app-logs.d.ts","sourceRoot":"","sources":["../../applications/get-app-logs.ts"],"names":[],"mappings":"AAGA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyC5E"}
|
|
@@ -1,28 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getAppLogs = void 0;
|
|
7
|
-
const axios_1 = __importDefault(require("axios"));
|
|
8
|
-
const cloudutils_1 = require("../cloudutils");
|
|
9
|
-
async function getAppLogs(host, last) {
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse, retrieveApplicationName } from "../cloudutils.js";
|
|
3
|
+
export async function getAppLogs(host, last) {
|
|
10
4
|
if (last != undefined && (isNaN(last) || last <= 0)) {
|
|
11
5
|
throw new Error('The --last parmameter must be an integer greater than 0');
|
|
12
6
|
}
|
|
13
7
|
if (last == undefined) {
|
|
14
8
|
last = 0; //internally, 0 means "get all the logs." This is the default.
|
|
15
9
|
}
|
|
16
|
-
const logger =
|
|
17
|
-
const userCredentials =
|
|
10
|
+
const logger = getLogger();
|
|
11
|
+
const userCredentials = getCloudCredentials();
|
|
18
12
|
const bearerToken = "Bearer " + userCredentials.token;
|
|
19
|
-
const appName =
|
|
13
|
+
const appName = retrieveApplicationName(logger);
|
|
20
14
|
if (!appName) {
|
|
21
15
|
return 1;
|
|
22
16
|
}
|
|
23
17
|
logger.info(`Retrieving logs for application: ${appName}`);
|
|
24
18
|
try {
|
|
25
|
-
const res = await
|
|
19
|
+
const res = await axios.get(`https://${host}/v1alpha1/${userCredentials.userName}/logs/applications/${appName}?last=${last}`, {
|
|
26
20
|
headers: {
|
|
27
21
|
"Content-Type": "application/json",
|
|
28
22
|
Authorization: bearerToken,
|
|
@@ -40,8 +34,8 @@ async function getAppLogs(host, last) {
|
|
|
40
34
|
catch (e) {
|
|
41
35
|
const errorLabel = `Failed to retrieve logs of application ${appName}`;
|
|
42
36
|
const axiosError = e;
|
|
43
|
-
if (
|
|
44
|
-
|
|
37
|
+
if (isCloudAPIErrorResponse(axiosError.response?.data)) {
|
|
38
|
+
handleAPIErrors(errorLabel, axiosError);
|
|
45
39
|
}
|
|
46
40
|
else {
|
|
47
41
|
logger.error(`${errorLabel}: ${e.message}`);
|
|
@@ -49,5 +43,4 @@ async function getAppLogs(host, last) {
|
|
|
49
43
|
return 1;
|
|
50
44
|
}
|
|
51
45
|
}
|
|
52
|
-
exports.getAppLogs = getAppLogs;
|
|
53
46
|
//# sourceMappingURL=get-app-logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-app-logs.js","sourceRoot":"","sources":["../../applications/get-app-logs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,SAAS,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAErI,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,IAAY;IACzD,IAAI,IAAI,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;QACtB,IAAI,GAAG,CAAC,CAAA,CAAM,8DAA8D;IAC9E,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,eAAe,GAAG,mBAAmB,EAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;IAEtD,MAAM,OAAO,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAA;IAE1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,WAAW,IAAI,aAAa,eAAe,CAAC,QAAQ,sBAAsB,OAAO,SAAS,IAAI,EAAE,EAAE;YAC5H,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,WAAW;aAC3B;SACF,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,+CAA+C,OAAO,EAAE,CAAC,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,UAAU,GAAG,0CAA0C,OAAO,EAAE,CAAC;QACvE,MAAM,UAAU,GAAG,CAAe,CAAC;QACnC,IAAI,uBAAuB,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;YACvD,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { registerApp } from './register-app.js';
|
|
2
|
+
export { listApps } from './list-apps.js';
|
|
3
|
+
export { deleteApp } from './delete-app.js';
|
|
4
|
+
export { deployAppCode } from './deploy-app-code.js';
|
|
5
|
+
export { getAppLogs } from './get-app-logs.js';
|
|
6
|
+
export { updateApp } from './update-app.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../applications/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { registerApp } from './register-app.js';
|
|
2
|
+
export { listApps } from './list-apps.js';
|
|
3
|
+
export { deleteApp } from './delete-app.js';
|
|
4
|
+
export { deployAppCode } from './deploy-app-code.js';
|
|
5
|
+
export { getAppLogs } from './get-app-logs.js';
|
|
6
|
+
export { updateApp } from './update-app.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../applications/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-apps.d.ts","sourceRoot":"","sources":["../../applications/list-apps.ts"],"names":[],"mappings":"AAIA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAqC3E"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse } from "../cloudutils.js";
|
|
3
|
+
import { prettyPrintApplication } from "./types.js";
|
|
4
|
+
export async function listApps(host, json) {
|
|
5
|
+
const logger = getLogger();
|
|
6
|
+
const userCredentials = getCloudCredentials();
|
|
7
|
+
const bearerToken = "Bearer " + userCredentials.token;
|
|
8
|
+
try {
|
|
9
|
+
const list = await axios.get(`https://${host}/v1alpha1/${userCredentials.userName}/applications`, {
|
|
10
|
+
headers: {
|
|
11
|
+
Authorization: bearerToken,
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
const applications = list.data;
|
|
15
|
+
if (json) {
|
|
16
|
+
console.log(JSON.stringify(applications));
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
if (applications.length === 0) {
|
|
20
|
+
logger.info("No applications found");
|
|
21
|
+
}
|
|
22
|
+
applications.forEach(app => {
|
|
23
|
+
prettyPrintApplication(app);
|
|
24
|
+
console.log('-------------------------');
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return 0;
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
const errorLabel = 'Failed to list applications';
|
|
31
|
+
const axiosError = e;
|
|
32
|
+
if (isCloudAPIErrorResponse(axiosError.response?.data)) {
|
|
33
|
+
handleAPIErrors(errorLabel, axiosError);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
logger.error(`${errorLabel}: ${e.message}`);
|
|
37
|
+
}
|
|
38
|
+
return 1;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=list-apps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-apps.js","sourceRoot":"","sources":["../../applications/list-apps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC5G,OAAO,EAAe,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,IAAa;IACxD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,eAAe,GAAG,mBAAmB,EAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAC1B,WAAW,IAAI,aAAa,eAAe,CAAC,QAAQ,eAAe,EACnE;YACE,OAAO,EAAE;gBACP,aAAa,EAAE,WAAW;aAC3B;SACF,CACF,CAAC;QACF,MAAM,YAAY,GAAkB,IAAI,CAAC,IAAqB,CAAC;QAC/D,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACvC,CAAC;YACD,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACzB,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,UAAU,GAAG,6BAA6B,CAAC;QACjD,MAAM,UAAU,GAAG,CAAe,CAAC;QACnC,IAAI,uBAAuB,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;YACvD,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-app.d.ts","sourceRoot":"","sources":["../../applications/register-app.ts"],"names":[],"mappings":"AAGA,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuC/E"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse, retrieveApplicationName } from "../cloudutils.js";
|
|
3
|
+
export async function registerApp(dbname, host) {
|
|
4
|
+
const logger = getLogger();
|
|
5
|
+
const userCredentials = getCloudCredentials();
|
|
6
|
+
const bearerToken = "Bearer " + userCredentials.token;
|
|
7
|
+
const appName = retrieveApplicationName(logger);
|
|
8
|
+
if (!appName) {
|
|
9
|
+
return 1;
|
|
10
|
+
}
|
|
11
|
+
logger.info(`Registering application: ${appName}`);
|
|
12
|
+
try {
|
|
13
|
+
const register = await axios.put(`https://${host}/v1alpha1/${userCredentials.userName}/applications`, {
|
|
14
|
+
name: appName,
|
|
15
|
+
database: dbname,
|
|
16
|
+
}, {
|
|
17
|
+
headers: {
|
|
18
|
+
"Content-Type": "application/json",
|
|
19
|
+
Authorization: bearerToken,
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
const uuid = register.data;
|
|
23
|
+
logger.info(`${appName} ID: ${uuid}`);
|
|
24
|
+
logger.info(`Successfully registered ${appName}!`);
|
|
25
|
+
return 0;
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
const errorLabel = `Failed to register application ${appName}`;
|
|
29
|
+
const axiosError = e;
|
|
30
|
+
if (isCloudAPIErrorResponse(axiosError.response?.data)) {
|
|
31
|
+
handleAPIErrors(errorLabel, axiosError);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
logger.error(`${errorLabel}: ${e.message}`);
|
|
35
|
+
}
|
|
36
|
+
return 1;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=register-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-app.js","sourceRoot":"","sources":["../../applications/register-app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,SAAS,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAErI,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,IAAY;IAC5D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,eAAe,GAAG,mBAAmB,EAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;IAEtD,MAAM,OAAO,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAA;IAElD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAC9B,WAAW,IAAI,aAAa,eAAe,CAAC,QAAQ,eAAe,EACnE;YACE,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,MAAM;SACjB,EACD;YACE,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,WAAW;aAC3B;SACF,CACF,CAAC;QACF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAc,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,2BAA2B,OAAO,GAAG,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,UAAU,GAAG,kCAAkC,OAAO,EAAE,CAAC;QAC/D,MAAM,UAAU,GAAG,CAAe,CAAC;QACnC,IAAI,uBAAuB,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;YACvD,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../applications/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,QAQtD"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.prettyPrintApplication = void 0;
|
|
4
|
-
function prettyPrintApplication(app) {
|
|
1
|
+
export function prettyPrintApplication(app) {
|
|
5
2
|
console.log(`Application Name: ${app.Name}`);
|
|
6
3
|
console.log(`ID: ${app.ID}`);
|
|
7
4
|
console.log(`Postgres Instance Name: ${app.PostgresInstanceName}`);
|
|
@@ -10,5 +7,4 @@ function prettyPrintApplication(app) {
|
|
|
10
7
|
console.log(`Version: ${app.Version}`);
|
|
11
8
|
console.log(`App URL: ${app.AppURL}`);
|
|
12
9
|
}
|
|
13
|
-
exports.prettyPrintApplication = prettyPrintApplication;
|
|
14
10
|
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../applications/types.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,sBAAsB,CAAC,GAAgB;IACrD,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,CAAC"}
|