- Added typedRequestInterfaces import to plugins.ts for better type handling. - Updated CLI client to utilize environment variables for Cloudly API credentials and improved authentication flow. - Refactored appstate.ts to use a shared API client instance, reducing redundancy in API calls for various actions. - Simplified external registry actions in appstate.ts by leveraging the shared API client. - Updated CloudlyDashboard and CloudlyViewSettings components to utilize the shared API client for fetching settings and managing connections. - Removed redundant TypedRequest instances in favor of direct API client calls for improved performance and maintainability. - Exposed the API client in plugins.ts for easier access in UI components.
29 lines
1015 B
TypeScript
29 lines
1015 B
TypeScript
import * as plugins from './plugins.js';
|
|
import { CliClient } from './classes.cliclient.js';
|
|
|
|
export const runCli = async () => {
|
|
const cliQenv = new plugins.qenv.Qenv();
|
|
const cloudlyUrl = await cliQenv.getEnvVarOnDemand('CLOUDLY_URL');
|
|
const token = process.env.CLOUDLY_TOKEN;
|
|
const username = process.env.CLOUDLY_USERNAME;
|
|
const password = process.env.CLOUDLY_PASSWORD;
|
|
|
|
const apiClient = new plugins.servezoneApi.CloudlyApiClient({
|
|
registerAs: 'cli',
|
|
cloudlyUrl,
|
|
});
|
|
await apiClient.start();
|
|
|
|
if (token) {
|
|
await apiClient.getIdentityByToken(token, { tagConnection: true, statefullIdentity: true });
|
|
} else if (username && password) {
|
|
await apiClient.loginWithUsernameAndPassword(username, password);
|
|
} else {
|
|
console.log('No credentials provided. Set CLOUDLY_TOKEN or CLOUDLY_USERNAME/CLOUDLY_PASSWORD.');
|
|
}
|
|
|
|
const cliClient = new CliClient(apiClient);
|
|
// Default action example: list clusters when invoked without subcommands
|
|
await cliClient.getClusters();
|
|
};
|