todite
Version:
Connect your application to Todite, a free to-do list app
178 lines • 7.99 kB
JavaScript
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
;