@papavault/cli
Version:
CLI tool for Papa Vault Secret Manager
61 lines (60 loc) • 2.97 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.listProjectsCommand = listProjectsCommand;
const chalk_1 = __importDefault(require("chalk"));
const ora_1 = __importDefault(require("ora"));
const config_1 = require("../utils/config");
const api_1 = require("../utils/api");
function listProjectsCommand(program) {
program
.command('list-projects')
.description('List all available projects')
.option('-t, --token <token>', 'API token for authentication (overrides stored token)')
.action(async (options) => {
// Check if authenticated
if (!(0, config_1.isAuthenticated)() && !options.token) {
console.log(chalk_1.default.red('You need to be logged in to list projects.'));
console.log(chalk_1.default.yellow('Run `papavault login` to authenticate or provide a token with --token.'));
return;
}
// Fetch projects
const spinner = (0, ora_1.default)('Fetching projects...').start();
try {
const projects = await (0, api_1.getProjects)(options.token);
spinner.succeed(`Found ${projects.length} projects.`);
if (projects.length === 0) {
console.log(chalk_1.default.yellow('No projects found.'));
return;
}
// Display projects
console.log(chalk_1.default.bold('\nAvailable Projects:'));
console.log(chalk_1.default.gray('------------------'));
projects.forEach((project, index) => {
console.log(chalk_1.default.bold(`\n${index + 1}. ${project.name}`));
console.log(chalk_1.default.gray(` ID: ${project.id}`));
if (project.description) {
console.log(chalk_1.default.gray(` Description: ${project.description}`));
}
// Display environments
if (project.environments && project.environments.length > 0) {
console.log(chalk_1.default.cyan(' Environments:'));
project.environments.forEach((env) => {
const envDisplay = env.name ? `${env.name} (${env.id})` : env.id;
console.log(chalk_1.default.gray(` - ${envDisplay}`));
});
}
else {
console.log(chalk_1.default.yellow(' No environments configured.'));
}
});
console.log(chalk_1.default.green('\nTip:'), 'Use', chalk_1.default.cyan('`papavault set-project`'), 'to configure a project for secret syncing.');
}
catch (error) {
spinner.fail('Failed to fetch projects');
console.error(chalk_1.default.red('Error:'), error);
}
});
}