gcal-commander
Version:
A command-line interface for Google Calendar operations
61 lines (60 loc) • 2.72 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const base_command_1 = require("../../base-command");
const table_formatter_1 = require("../../utils/table-formatter");
class CalendarsList extends base_command_1.BaseCommand {
static description = 'List all available calendars';
static examples = ['<%= config.bin %> <%= command.id %>', '<%= config.bin %> <%= command.id %> --format json'];
static flags = {
...base_command_1.BaseCommand.baseFlags,
};
async run() {
await this.parse(CalendarsList);
try {
await this.initI18nService();
this.logStatus(this.t('calendars.list.authenticating'));
await this.initCalendarService();
this.logStatus(this.t('calendars.list.fetching'));
const calendars = await this.calendarService.listCalendars();
if (calendars.length === 0) {
this.logResult(this.t('calendars.list.noCalendarsFound'));
return;
}
if (this.format === 'json' || this.format === 'pretty-json') {
this.outputJson(calendars);
}
else {
this.displayCalendarsTable(calendars);
}
}
catch (error) {
this.logError(this.t('calendars.list.error', { error: String(error) }));
}
}
displayCalendarsTable(calendars) {
this.logResult(this.t('calendars.list.tableHeader', { count: calendars.length }));
const columns = [
{ key: 'name', label: this.t('calendars.list.columns.name'), width: 25 },
{ key: 'id', label: this.t('calendars.list.columns.id'), width: 35 },
{ key: 'access', label: this.t('calendars.list.columns.access'), width: 15 },
{ key: 'primary', label: this.t('calendars.list.columns.primary'), width: 10 },
{ key: 'description', label: this.t('calendars.list.columns.description'), width: 30 },
{ key: 'color', label: this.t('calendars.list.columns.color'), width: 15 },
];
const formatter = new table_formatter_1.TableFormatter({
columns,
fields: this.fields,
});
const tableData = calendars.map((calendar) => ({
name: calendar.summary || this.t('calendars.list.noName'),
id: calendar.id || '',
access: calendar.accessRole || '',
primary: calendar.primary ? '✓' : '',
description: calendar.description || '',
color: calendar.backgroundColor || '',
}));
const table = formatter.format(tableData);
this.logResult(table);
}
}
exports.default = CalendarsList;