UNPKG

gcal-commander

Version:

A command-line interface for Google Calendar operations

61 lines (60 loc) 2.72 kB
"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;