@enspirit/emb
Version:
A replacement for our Makefile-for-monorepos
51 lines (50 loc) • 1.81 kB
JavaScript
import { getContext } from '../../../index.js';
import { printTable } from '@oclif/table';
import { FlavoredCommand, TABLE_DEFAULTS } from '../../index.js';
export default class SecretsProviders extends FlavoredCommand {
static description = 'Show configured secret providers and their status.';
static enableJsonFlag = true;
static examples = ['<%= config.bin %> <%= command.id %>'];
async run() {
const { flags } = await this.parse(SecretsProviders);
const context = getContext();
const { secrets } = context;
const providerNames = secrets.getProviderNames();
if (providerNames.length === 0) {
if (!flags.json) {
this.log('No secret providers configured.');
this.log('\nTo configure a provider, add it to your .emb.yml:');
this.log(`
plugins:
- name: vault
config:
address: https://vault.example.com
auth:
method: oidc
`);
}
return [];
}
const results = providerNames.map((name) => {
const provider = secrets.get(name);
return {
name,
type: provider?.constructor.name || 'Unknown',
status: provider ? 'connected' : 'not_configured',
};
});
if (!flags.json) {
printTable({
...TABLE_DEFAULTS,
columns: ['name', 'type', 'status'],
data: results.map((r) => ({
name: r.name,
type: r.type,
status: r.status === 'connected' ? '✔ Connected' : '✖ Not configured',
})),
});
this.log(`\n${results.length} provider(s) configured.`);
}
return results;
}
}