From 74b0850024a7002ae425540f14af08d272dd33fb Mon Sep 17 00:00:00 2001 From: Josh Black Date: Sat, 5 Dec 2020 10:51:14 -0600 Subject: [PATCH] feat(cli): add component command (#7384) * feat(cli): add component command * chore(react): remove test files * chore(cli): fix eslint violations Co-authored-by: DAK <40970507+dakahn@users.noreply.github.com> Co-authored-by: TJ Egan Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- .eslintignore | 3 + .prettierignore | 3 + .yarn/offline-mirror/ansi-colors-4.1.1.tgz | Bin 0 -> 8180 bytes .yarn/offline-mirror/enquirer-2.3.6.tgz | Bin 0 -> 47843 bytes packages/cli/package.json | 2 + packages/cli/src/cli.js | 4 +- packages/cli/src/commands/component.js | 130 ++++++++++++++++++ packages/cli/src/component/index.js | 47 +++++++ .../component/templates/component.template.js | 19 +++ .../src/component/templates/index.template.js | 9 ++ .../src/component/templates/mdx.template.mdx | 37 +++++ .../src/component/templates/story.template.js | 22 +++ .../src/component/templates/test.template.js | 35 +++++ packages/cli/src/logger.js | 40 ++++-- yarn.lock | 12 ++ 15 files changed, 353 insertions(+), 10 deletions(-) create mode 100644 .yarn/offline-mirror/ansi-colors-4.1.1.tgz create mode 100644 .yarn/offline-mirror/enquirer-2.3.6.tgz create mode 100644 packages/cli/src/commands/component.js create mode 100644 packages/cli/src/component/index.js create mode 100644 packages/cli/src/component/templates/component.template.js create mode 100644 packages/cli/src/component/templates/index.template.js create mode 100644 packages/cli/src/component/templates/mdx.template.mdx create mode 100644 packages/cli/src/component/templates/story.template.js create mode 100644 packages/cli/src/component/templates/test.template.js diff --git a/.eslintignore b/.eslintignore index 9495ed7c48c5..d745b4b718d3 100644 --- a/.eslintignore +++ b/.eslintignore @@ -38,3 +38,6 @@ packages/components/node_modules # React **/storybook-static/** + +# Templates +packages/cli/src/component/templates/** diff --git a/.prettierignore b/.prettierignore index d973e3d317c4..4c9d4a9c5a40 100644 --- a/.prettierignore +++ b/.prettierignore @@ -51,3 +51,6 @@ packages/components/docs/js # Generated files **/generated/** + +# Templates +**/*.template.* diff --git a/.yarn/offline-mirror/ansi-colors-4.1.1.tgz b/.yarn/offline-mirror/ansi-colors-4.1.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d18e121b0fecb0fc597a885f5a50ddecc1caa4f5 GIT binary patch literal 8180 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 a+jqZrzjwcPzjwd+zyAX!D&f2UcmM#cUG!K0 literal 0 HcmV?d00001 diff --git a/.yarn/offline-mirror/enquirer-2.3.6.tgz b/.yarn/offline-mirror/enquirer-2.3.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..920d6e31f503ae8d1afad6e5b8baa392f1864fec GIT binary patch literal 47843 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 { + return names + .filter((name) => { + return !blocklist.has(name); + }) + .map((name) => { + const extension = path.extname(name); + return { + name: path.basename(name, `.template${extension}`), + filepath: path.join(TEMPLATES_DIR, name), + }; + }); + }); + + const templates = {}; + + for (const { name, filepath } of files) { + const contents = await fs.readFile(filepath, 'utf8'); + const compile = template(contents); + templates[name] = { + compile, + }; + } + + return templates; +} + +module.exports = { + loadTemplates, +}; diff --git a/packages/cli/src/component/templates/component.template.js b/packages/cli/src/component/templates/component.template.js new file mode 100644 index 000000000000..efcd9231556e --- /dev/null +++ b/packages/cli/src/component/templates/component.template.js @@ -0,0 +1,19 @@ +/** + * Copyright IBM Corp. 2016, 2020 + * + * This source code is licensed under the Apache-2.0 license found in the + * LICENSE file in the root directory of this source tree. + */ + +import PropTypes from 'prop-types'; +import React from 'react'; + +function <%= name %>({ children, ...rest }) { + return
{children}
; +} + +<%= name %>.propTypes = { + children: PropTypes.node, +}; + +export default <%= name %>; diff --git a/packages/cli/src/component/templates/index.template.js b/packages/cli/src/component/templates/index.template.js new file mode 100644 index 000000000000..376a6359cb18 --- /dev/null +++ b/packages/cli/src/component/templates/index.template.js @@ -0,0 +1,9 @@ +/** + * Copyright IBM Corp. 2016, 2020 + * + * This source code is licensed under the Apache-2.0 license found in the + * LICENSE file in the root directory of this source tree. + */ + + import <%= name %> from './<%= name %>'; + export { <%= name %> }; diff --git a/packages/cli/src/component/templates/mdx.template.mdx b/packages/cli/src/component/templates/mdx.template.mdx new file mode 100644 index 000000000000..cf7402301845 --- /dev/null +++ b/packages/cli/src/component/templates/mdx.template.mdx @@ -0,0 +1,37 @@ +import { Props } from '@storybook/addon-docs/blocks'; +import { <%= name %> } from './'; + +# <%= name %> + +[Source +code](https://github.com/carbon-design-system/carbon/tree/master/packages/react/src/components/<%= +name %>)  |  [Usage +guidelines](https://www.carbondesignsystem.com/components/<%= name %>/usage) + |  [Accessibility](https://www.carbondesignsystem.com/components/<%= +url %>/accessibility) + + + + +## Table of Contents + +- [Overview](#overview) +- [Component API](#component-api) +- [Feedback](#feedback) + + + +## Overview + +TODO + +## Component API + + + +## Feedback + +Help us improve this component by providing feedback, asking questions on Slack, +or updating this file on +[GitHub](https://github.com/carbon-design-system/carbon/edit/master/packages/react/src/components/<%= +name %>/<%= name %>.mdx). diff --git a/packages/cli/src/component/templates/story.template.js b/packages/cli/src/component/templates/story.template.js new file mode 100644 index 000000000000..021cf57c7236 --- /dev/null +++ b/packages/cli/src/component/templates/story.template.js @@ -0,0 +1,22 @@ +/** + * Copyright IBM Corp. 2016, 2018 + * + * This source code is licensed under the Apache-2.0 license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; +import { <%= name %> } from './'; +import mdx from './<%= name %>.mdx'; + +export default { + title: '<%= name %>', + component: <%= name %>, + parameters: { + docs: { + page: mdx, + }, + }, +}; + +export const example = () => <<%= name %>>Story Example>; diff --git a/packages/cli/src/component/templates/test.template.js b/packages/cli/src/component/templates/test.template.js new file mode 100644 index 000000000000..11c3574eeb0e --- /dev/null +++ b/packages/cli/src/component/templates/test.template.js @@ -0,0 +1,35 @@ +/** + * Copyright IBM Corp. 2016, 2020 + * + * This source code is licensed under the Apache-2.0 license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { cleanup, render, screen } from '@testing-library/react'; +import React from 'react'; +import { <%= name %> } from '../'; + +describe('<%= name %>', () => { + afterEach(cleanup); + + it('should work', () => { + render(<<%= name %>>test>); + // TODO + }); + + describe('automated accessibility testing', () => { + it('should have no axe violations', async () => { + render(<<%= name %>>test>); + await expect(screen.getByText('test')).toHaveNoAxeViolations(); + }); + + it('should have no accessibility checker violations', async () => { + render(<<%= name %>>test>); + await expect(screen.getByText('test')).toHaveNoACViolations('<%= name %>'); + }); + }); + + describe('Component API', () => { + // TODO + }); +}); diff --git a/packages/cli/src/logger.js b/packages/cli/src/logger.js index 431dfdf8d7c8..2cdc9b6495d3 100644 --- a/packages/cli/src/logger.js +++ b/packages/cli/src/logger.js @@ -16,7 +16,8 @@ const chalk = require('chalk'); * @returns {object} */ function createLogger(command) { - let start; + const timers = []; + let indentLevel = 0; /** * Display the given message with a box character. This also includes @@ -29,24 +30,46 @@ function createLogger(command) { console.log(chalk`{yellow ${command} ▐} {gray ${boxCharacter}} ${message}`); } + function getLinePrefix() { + let prefix = ''; + for (let i = 0; i < indentLevel; i++) { + prefix += '┃ '; + } + return prefix; + } + return { info(message) { - log('┣', chalk.gray(message)); + indentLevel -= 1; + const prefix = getLinePrefix(); + indentLevel += 1; + + log(prefix + '┣', chalk.gray(message)); }, start(message) { - start = Date.now(); - log('┏', message); + const start = Date.now(); + timers.push(start); + + const prefix = getLinePrefix(); + log(prefix + '┏', message); + + indentLevel += 1; }, stop(message) { - const duration = ((Date.now() - start) / 1000).toFixed(2); + indentLevel -= 1; + + const duration = ((Date.now() - timers.pop()) / 1000).toFixed(2); + const prefix = getLinePrefix(); + if (message) { - log('┗', message); + log(prefix + '┗', message); } else { - log('┗', chalk`{gray Done in {italic ${duration}s}}`); + log(prefix + '┗', chalk`{gray Done in {italic ${duration}s}}`); } }, newline() { - log('┃'); + const prefix = getLinePrefix(); + log(prefix + '┃'); }, }; } @@ -63,7 +86,6 @@ function displayBanner() { / __/ _\` | '__| '_ \\ / _ \\| '_ \\ | (_| (_| | | | |_) | (_) | | | | \\___\\__,_|_| |_.__/ \\___/|_| |_| - `); } diff --git a/yarn.lock b/yarn.lock index 7ed0b4572924..5688c8e109fb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5435,6 +5435,11 @@ ansi-colors@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + ansi-cyan@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" @@ -10172,6 +10177,13 @@ enhanced-resolve@^4.1.0: memory-fs "^0.5.0" tapable "^1.0.0" +enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + ent@^2.2.0, ent@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"