#!/usr/bin/env node import minimist from 'minimist'; import { listAccounts, setDefaultAccount, removeAccount, getDefaultAccount } from './auth/auth-utils.js'; function printUsage() { console.log(` šŸ“‹ Google Calendar Account Manager Usage: node manage-accounts.js --list List all configured accounts node manage-accounts.js --set-default Set default account node manage-accounts.js --remove Remove an account node manage-accounts.js --info Show detailed account info Examples: node manage-accounts.js --list node manage-accounts.js --set-default work node manage-accounts.js --remove old-account `); } async function main() { const args = minimist(process.argv.slice(2)); try { // List accounts if (args.list || args.l) { const accounts = listAccounts(); if (accounts.length === 0) { console.log('\nāŒ No accounts configured.'); console.log(' Run: npm run setup -- --account \n'); return; } console.log('\nšŸ“‹ Configured Google Calendar Accounts:\n'); accounts.forEach(acc => { const marker = acc.isDefault ? '⭐' : ' '; console.log(`${marker} ${acc.id}`); console.log(` Email: ${acc.email}`); console.log(` Scopes: ${acc.scope}`); console.log(''); }); console.log(`Total accounts: ${accounts.length}`); console.log(`Default: ${accounts.find(a => a.isDefault)?.id || 'none'}\n`); return; } // Show info if (args.info || args.i) { const accounts = listAccounts(); const defaultId = getDefaultAccount(); console.log('\nšŸ“Š Account Information:\n'); console.log(JSON.stringify({ totalAccounts: accounts.length, defaultAccount: defaultId, accounts: accounts }, null, 2)); console.log(''); return; } // Set default account if (args['set-default']) { const accountId = args['set-default']; setDefaultAccount(accountId); console.log(`\nāœ… Default account set to: ${accountId}\n`); return; } // Remove account if (args.remove) { const accountId = args.remove; const accounts = listAccounts(); const account = accounts.find(a => a.id === accountId); if (!account) { console.error(`\nāŒ Account '${accountId}' not found.\n`); process.exit(1); } if (account.isDefault && accounts.length > 1) { console.log(`\nāš ļø Removing default account '${accountId}'.`); console.log(` A new default will be automatically assigned.\n`); } removeAccount(accountId); console.log(`āœ… Account '${accountId}' (${account.email}) removed.\n`); const remaining = listAccounts(); if (remaining.length > 0) { console.log('Remaining accounts:'); remaining.forEach(acc => { const marker = acc.isDefault ? '⭐' : ' '; console.log(`${marker} ${acc.id} (${acc.email})`); }); console.log(''); } return; } // No recognized action printUsage(); } catch (error) { console.error(`\nāŒ Error: ${error.message}\n`); process.exit(1); } } main();