Skip to content

Commit

Permalink
♻️ Questions and utils functions refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
Franck committed Jun 4, 2019
1 parent aa6e3eb commit 177c086
Show file tree
Hide file tree
Showing 8 changed files with 83 additions and 49 deletions.
35 changes: 13 additions & 22 deletions src/cli.js
Original file line number Diff line number Diff line change
@@ -1,36 +1,27 @@
const ejs = require('ejs')
const inquirer = require('inquirer')
const getProjectName = require('project-name')

const get = require('lodash/get')
const { getPackageJson } = require('./utils')
const getTemplate = require('./get-template')
const createReadme = require('./create-readme')

const getContext = async () => {
const packageJson = await getPackageJson()
const { getTemplate, createReadme } = require('./utils')
const {
getProjectNameQuestion,
getProjectDescriptionQuestion
} = require('./questions')

/**
* Ask user questions and return context to generate a README
*/
const askQuestions = async () => {
const questions = [
{
type: 'input',
message: 'Enter your project name',
name: 'projectName',
default: getProjectName() || undefined
},
{
type: 'input',
message: 'Enter your project description',
name: 'projectDescription',
default: get(packageJson, 'description', undefined)
}
getProjectNameQuestion(),
await getProjectDescriptionQuestion()
]

return inquirer.prompt(questions)
}

module.exports = async function generateReadme(args) {
module.exports = async args => {
const template = await getTemplate(args.template)
const context = await getContext()
const context = await askQuestions()
const readmeContent = ejs.render(template, context)

await createReadme(readmeContent)
Expand Down
5 changes: 0 additions & 5 deletions src/create-readme.js

This file was deleted.

5 changes: 0 additions & 5 deletions src/get-template.js

This file was deleted.

7 changes: 7 additions & 0 deletions src/questions/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const getProjectNameQuestion = require('./project-name')
const getProjectDescriptionQuestion = require('./project-description')

module.exports = {
getProjectNameQuestion,
getProjectDescriptionQuestion
}
14 changes: 14 additions & 0 deletions src/questions/project-description.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
const get = require('lodash/get')

const { getPackageJson } = require('../utils')

module.exports = async () => {
const packageJson = await getPackageJson()

return {
type: 'input',
message: 'Enter your project description',
name: 'projectDescription',
default: get(packageJson, 'description', undefined)
}
}
8 changes: 8 additions & 0 deletions src/questions/project-name.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
const getProjectName = require('project-name')

module.exports = () => ({
type: 'input',
message: 'Enter your project name',
name: 'projectName',
default: getProjectName() || undefined
})
17 changes: 0 additions & 17 deletions src/utils.js

This file was deleted.

41 changes: 41 additions & 0 deletions src/utils/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
const util = require('util')
const readFile = util.promisify(require('fs').readFile)
const writeFile = util.promisify(require('fs').writeFile)
const loadJsonFile = require('load-json-file')

/**
* Create readme file from the given readmeContent
*
* @param {string} readmeContent
*/
const createReadme = async readmeContent =>
await writeFile('README.md', readmeContent)

/**
* Get template content from the given templateName
*
* @param {string} templateName
*/
const getTemplate = async templateName =>
await readFile(`./templates/${templateName}.md`, 'utf8')

/**
* Get package.json content
*/
const getPackageJson = async () => {
let packageJson = undefined

try {
packageJson = await loadJsonFile('package.json')
} catch (err) {
// eslint-disable-next-line no-empty
}

return packageJson
}

module.exports = {
getPackageJson,
getTemplate,
createReadme
}

0 comments on commit 177c086

Please sign in to comment.