Skip to content

Instantly share code, notes, and snippets.

@Rikezenho
Last active February 11, 2019 12:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Rikezenho/e6792b04221dbca7ee6e4ace880be489 to your computer and use it in GitHub Desktop.
Save Rikezenho/e6792b04221dbca7ee6e4ace880be489 to your computer and use it in GitHub Desktop.
CLI tutorial - step 5
#!/usr/bin/env node
const program = require('commander');
const { join } = require('path');
const fs = require('fs');
const inquirer = require('inquirer');
const chalk = require('chalk');
const package = require('./package.json');
const todosPath = join(__dirname, 'todos.json');
const getJson = (path) => {
const data = fs.existsSync(path) ? fs.readFileSync(path) : [];
try {
return JSON.parse(data);
} catch (e) {
return [];
}
};
const saveJson = (path, data) => fs.writeFileSync(path, JSON.stringify(data, null, '\t'));
program.version(package.version);
program
.command('add [todo]')
.description('Adiciona um to-do')
.action(async (todo) => {
let answers;
if (!todo) {
answers = await inquirer.prompt([
{
type: 'input',
name: 'todo',
message: 'Qual é o seu to-do?',
validate: value => value ? true : 'Não é permitido um to-do vazio'
}
]);
}
const data = getJson(todosPath);
data.push({
title: todo || answers.todo,
done: false
});
saveJson(todosPath, data);
console.log(`${chalk.green('To-do adicionado com sucesso!')}`);
});
program.parse(process.argv);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment