#!/usr/bin/env node import { addUser, removeUser, listUsers, regenerateApiKey, setUserEnabled } from './users.js'; const command = process.argv[2]; const args = process.argv.slice(3); function printUsage() { console.log(` PicUpper User Management CLI Usage: node manage-users.js [options] Commands: add [description] Add a new user and generate API key remove Remove a user list List all users regenerate Regenerate API key for a user enable Enable a user disable Disable a user Examples: node manage-users.js add webcam1 "Front door camera" node manage-users.js add backyard "Backyard camera" node manage-users.js list node manage-users.js regenerate webcam1 node manage-users.js disable webcam1 `); } try { switch (command) { case 'add': { const username = args[0]; const description = args.slice(1).join(' ') || ''; if (!username) { console.error('Error: Username is required'); printUsage(); process.exit(1); } const apiKey = addUser(username, description); console.log(`\nUser '${username}' created successfully!`); console.log(`\nAPI Key (save this, it won't be shown again):`); console.log(`\n ${apiKey}\n`); break; } case 'remove': { const username = args[0]; if (!username) { console.error('Error: Username is required'); process.exit(1); } removeUser(username); console.log(`User '${username}' removed successfully.`); break; } case 'list': { const users = listUsers(); if (users.length === 0) { console.log('No users found. Use "add" command to create one.'); break; } console.log('\nRegistered Users:'); console.log('─'.repeat(80)); for (const user of users) { const status = user.enabled ? '✓ enabled' : '✗ disabled'; console.log(` ${user.username}`); console.log(` Key: ${user.keyPreview}`); console.log(` Status: ${status}`); if (user.description) { console.log(` Description: ${user.description}`); } console.log(` Created: ${user.createdAt}`); console.log(''); } break; } case 'regenerate': { const username = args[0]; if (!username) { console.error('Error: Username is required'); process.exit(1); } const newApiKey = regenerateApiKey(username); console.log(`\nAPI key regenerated for '${username}'!`); console.log(`\nNew API Key (save this, it won't be shown again):`); console.log(`\n ${newApiKey}\n`); break; } case 'enable': { const username = args[0]; if (!username) { console.error('Error: Username is required'); process.exit(1); } setUserEnabled(username, true); console.log(`User '${username}' enabled.`); break; } case 'disable': { const username = args[0]; if (!username) { console.error('Error: Username is required'); process.exit(1); } setUserEnabled(username, false); console.log(`User '${username}' disabled.`); break; } case 'help': case '--help': case '-h': case undefined: printUsage(); break; default: console.error(`Unknown command: ${command}`); printUsage(); process.exit(1); } } catch (error) { console.error(`Error: ${error.message}`); process.exit(1); }