UNPKG

todite

Version:

Connect your application to Todite, a free to-do list app

178 lines 7.99 kB
#!/usr/bin/env node "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); // Using the `require` function so TypeScript doesn't tell us '`./index.min.js` doesn't exist' // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-var-requires const Todite = require(`${__dirname}/index.min.js`); const commander_1 = require("commander"); const program = new commander_1.Command(); program .version('1.0.0', '-v, --version') .name('todite'); program .command('get-all') .description('Get all to-dos') .requiredOption('-a, --api-key <api-key>', 'Your Todite API Key [REQUIRED]') .action((options) => __awaiter(void 0, void 0, void 0, function* () { try { const apiKey = options.apiKey; const todite = new Todite(apiKey); const todos = yield todite.getAll(); const formattedTodos = todos.map(todo => { var _a; const completed = todo.completed ? '✓' : '×'; const date = ((_a = todo.date) === null || _a === void 0 ? void 0 : _a.toLocaleDateString('en-GB', { hour: '2-digit', minute: '2-digit' })) || 'Whenever'; return { ID: todo._id, Name: todo.name, Completed: completed, 'Firebase User ID': todo.user, 'Done by': date }; }); console.table(formattedTodos); } catch (err) { console.error(err.message); process.exit(1); } })); program .command('get') .description('Get one to-do') .requiredOption('-a, --api-key <api-key>', 'Your Todite API Key [REQUIRED]') .requiredOption('-id, --todo-id <todo-id>', 'The To-do ID [REQUIRED]') .action((options) => __awaiter(void 0, void 0, void 0, function* () { var _a; try { const apiKey = options.apiKey; const id = options.todoId; const todite = new Todite(apiKey); const todo = yield todite.get(id); if (!todo) { console.log('Could not find to-do with that ID.'); return; } const formattedCompleted = todo.completed ? '✓' : '×'; const formettedDate = ((_a = todo.date) === null || _a === void 0 ? void 0 : _a.toLocaleDateString('en-GB', { hour: '2-digit', minute: '2-digit' })) || 'Whenever'; const formattedTodo = { ID: todo._id, Name: todo.name, Completed: formattedCompleted, 'Firebase User ID': todo.user, 'Done by': formettedDate }; // Put it into an array for nicer formatting console.table([formattedTodo]); } catch (err) { console.error(err.message); process.exit(1); } })); program .command('update') .description('Update a to-do') .requiredOption('-a, --api-key <api-key>', 'Your Todite API Key [REQUIRED]') .requiredOption('-id, --todo-id <todo-id>', 'The To-do ID [REQUIRED]') .option('-n, --name <name>', 'The To-dos updated name') .option('-c, --completed [completed]', 'Whether the updated to-do should be completed', undefined) .option('-d, --date <date>', 'The to-dos updated date (in ISO format)') .action((options) => __awaiter(void 0, void 0, void 0, function* () { var _b; try { const apiKey = options.apiKey; const id = options.todoId; const todite = new Todite(apiKey); const todo = yield todite.get(id); if (!todo) { console.log('Could not find to-do with that ID.'); return; } const newName = options.name || todo.name; const newDate = new Date(options.date || todo.date); let newCompleted; if (options.completed) { if (options.completed === 'true' || options.completed === true) newCompleted = true; else if (options.completed === 'false' || options.completed === false) newCompleted = false; else newCompleted = todo.completed; } else { newCompleted = todo.completed; } const updatedTodo = yield todite.update({ id, name: newName, completed: newCompleted, date: newDate }); const formattedCompleted = updatedTodo.completed ? '✓' : '×'; const formettedDate = ((_b = updatedTodo.date) === null || _b === void 0 ? void 0 : _b.toLocaleDateString('en-GB', { hour: '2-digit', minute: '2-digit' })) || 'Whenever'; const formattedTodo = { ID: updatedTodo._id, Name: updatedTodo.name, Completed: formattedCompleted, 'Firebase User ID': updatedTodo.user, 'Done by': formettedDate }; // Put it into an array for nicer formatting console.table([formattedTodo]); } catch (err) { console.error(err.message); process.exit(1); } })); program .command('delete') .description('Delete a to-do') .requiredOption('-a, --api-key <api-key>', 'Your Todite API Key [REQUIRED]') .requiredOption('-id, --todo-id <todo-id>', 'The To-do ID [REQUIRED]') .action((options) => __awaiter(void 0, void 0, void 0, function* () { try { const apiKey = options.apiKey; const id = options.todoId; const todite = new Todite(apiKey); yield todite.delete(id); console.log('To-do successfully deleted'); } catch (err) { console.error(err.message); process.exit(1); } })); program .command('create') .description('Create a new to-do') .requiredOption('-a, --api-key <api-key>', 'Your Todite API Key [REQUIRED]') .requiredOption('-n, --name <name>', 'The To-dos name [REQUIRED]') .option('-c, --completed [completed]', 'Whether the to-do should be completed', undefined) .option('-d, --date <date>', 'When the to-do needs to be done by (in ISO format)') .action((options) => __awaiter(void 0, void 0, void 0, function* () { var _c; try { const apiKey = options.apiKey; const name = options.name; const date = options.date ? new Date(options.date) : undefined; let completed = false; if (options.completed) { if (options.completed === 'true' || options.completed === true) completed = true; else if (options.completed === 'false' || options.completed === false) completed = false; else completed = false; } const todite = new Todite(apiKey); const todo = yield todite.create({ name, completed, date }); const formattedCompleted = todo.completed ? '✓' : '×'; const formettedDate = ((_c = todo.date) === null || _c === void 0 ? void 0 : _c.toLocaleDateString('en-GB', { hour: '2-digit', minute: '2-digit' })) || 'Whenever'; const formattedTodo = { ID: todo._id, Name: todo.name, Completed: formattedCompleted, 'Firebase User ID': todo.user, 'Done by': formettedDate }; // Put it into an array for nicer formatting console.table([formattedTodo]); } catch (err) { console.error(err.message); process.exit(1); } })); program.parse(process.argv); //# sourceMappingURL=cli.js.map