diff --git a/generate.js b/generate.js index 7f1e0ef07..c78c3800a 100644 --- a/generate.js +++ b/generate.js @@ -11,10 +11,10 @@ console.log('Generating rule', newRuleName); // Write rule file fs.writeFileSync(path.join( __dirname, - 'packages/eslint-plugin-pf-codemods/lib/rules', + 'packages/eslint-plugin-pf-codemods/lib/rules/v5', `${newRuleName}.js` ), - `const { getPackageImports } = require('../helpers'); + `const { getPackageImports } = require('../../helpers'); // https://github.com/patternfly/patternfly-react/pull/YOURNUMBERHERE module.exports = { @@ -44,11 +44,11 @@ module.exports = { // Write test file fs.writeFileSync(path.join( __dirname, - 'packages/eslint-plugin-pf-codemods/test/rules', + 'packages/eslint-plugin-pf-codemods/test/rules/v5', `${newRuleName}.js` ), -`const ruleTester = require('../ruletester'); -const rule = require('../../lib/rules/${newRuleName}'); +`const ruleTester = require('../../ruletester'); +const rule = require('../../../lib/rules/v5/${newRuleName}'); ruleTester.run("${newRuleName}", rule, { valid: [ @@ -76,5 +76,5 @@ const ruleIndex = fs.readFileSync(ruleIndexPath, 'utf8'); fs.writeFileSync( ruleIndexPath, // (ab)Use fact that `rules` object is at top of file - ruleIndex.replace("};", ` "${newRuleName}": require('./lib/rules/${newRuleName}'),\n};`) + ruleIndex.replace("};", ` "${newRuleName}": require('./lib/rules/v5/${newRuleName}'),\n};`) ); diff --git a/packages/eslint-plugin-pf-codemods/index.js b/packages/eslint-plugin-pf-codemods/index.js index bfe062f8c..845b6903e 100644 --- a/packages/eslint-plugin-pf-codemods/index.js +++ b/packages/eslint-plugin-pf-codemods/index.js @@ -44,9 +44,11 @@ const rules = { "chartVoronoiContainer-remove-allowTooltip": require('./lib/rules/v4/chartVoronoiContainer-remove-allowTooltip'), "chart-remove-allowZoom": require('./lib/rules/v4/chartVoronoiContainer-remove-allowTooltip'), "react-icons-remove-icon": require('./lib/rules/v4/react-icons-remove-icon'), + + "divider-remove-isVertical": require('./lib/rules/v5/divider-remove-isVertical'), + "tableComposable-remove-hasSelectableRowCaption": require('./lib/rules/v5/tableComposable-remove-hasSelectableRowCaption'), "toolbar-remove-visiblity": require('./lib/rules/v5/toolbar-remove-visiblity'), "tooltip-remove-props": require('./lib/rules/v5/tooltip-remove-props'), - "divider-remove-isVertical": require('./lib/rules/v5/divider-remove-isVertical'), }; module.exports = { diff --git a/packages/eslint-plugin-pf-codemods/lib/rules/v5/tableComposable-remove-hasSelectableRowCaption.js b/packages/eslint-plugin-pf-codemods/lib/rules/v5/tableComposable-remove-hasSelectableRowCaption.js new file mode 100644 index 000000000..aa2c8aff4 --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/lib/rules/v5/tableComposable-remove-hasSelectableRowCaption.js @@ -0,0 +1,13 @@ +const { renameProps } = require('../../helpers'); + +// https://github.com/patternfly/patternfly-react/pull/8352 +const renames = { + 'TableComposable': { + hasSelectableRowCaption: '' + } +}; + +module.exports = { + meta: { fixable: 'code' }, + create: renameProps(renames) +}; \ No newline at end of file diff --git a/packages/eslint-plugin-pf-codemods/test/rules/v5/tableComposable-remove-hasSelectableRowCaption.js b/packages/eslint-plugin-pf-codemods/test/rules/v5/tableComposable-remove-hasSelectableRowCaption.js new file mode 100644 index 000000000..23169b4db --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/test/rules/v5/tableComposable-remove-hasSelectableRowCaption.js @@ -0,0 +1,24 @@ +const ruleTester = require('../../ruletester'); +const rule = require('../../../lib/rules/v5/tableComposable-remove-hasSelectableRowCaption'); + +ruleTester.run("tableComposable-remove-hasSelectableRowCaption", rule, { + valid: [ + { + code: `import { TableComposable } from '@patternfly/react-core'; `, + }, + { + // No @patternfly/react-core import + code: ``, + } + ], + invalid: [ + { + code: `import { TableComposable } from '@patternfly/react-core'; `, + output: `import { TableComposable } from '@patternfly/react-core'; `, + errors: [{ + message: `hasSelectableRowCaption prop for TableComposable has been removed`, + type: "JSXOpeningElement", + }] + }, + ] +}); \ No newline at end of file diff --git a/packages/pf-codemods/README.md b/packages/pf-codemods/README.md index 69a598944..667c5de78 100644 --- a/packages/pf-codemods/README.md +++ b/packages/pf-codemods/README.md @@ -56,6 +56,24 @@ Out: ``` +### tableComposable-remove-hasSelectableRowCaption [(#8352)](https://github.com/patternfly/patternfly-react/pull/8352) + +We've removed the depracated `hasSelectableRowCaption` prop. + +#### Examples + +In: + +```jsx + +``` + +Out: + +```jsx + +``` + ### toolbar-remove-visiblity [(#8212)](https://github.com/patternfly/patternfly-react/pull/8212) We've removed the deprecated `visiblity` prop. This rule wil replace it with the correct spelled `visibility` prop.