Skip to content

Commit

Permalink
Tooling: migrated dt-header to ESLint, with a script (#61793)
Browse files Browse the repository at this point in the history
* Tooling: migrated dt-header to ESLint, with a script

* Update scripts/tslint-rule-to-eslint.js

Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>

* Fix up logging a bit

* Add mistakenly deleted tslint.jsons

* Manual fixup of */v* dt-header overrides

Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
  • Loading branch information
JoshuaKGoldberg and sandersn committed Aug 18, 2022
1 parent 7600b05 commit f3c7343
Show file tree
Hide file tree
Showing 2,486 changed files with 6,359 additions and 1,565 deletions.
1 change: 1 addition & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"@typescript-eslint"
],
"rules": {
"dt-header": "error",
"no-dead-reference": "error",
"no-const-enum": "error"
}
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
"@definitelytyped/utils": "latest",
"@octokit/core": "^3.5.1",
"@octokit/rest": "^16.0.0",
"comment-json": "^4.2.3",
"d3-array": "^3.0.2",
"d3-axis": "^3.0.0",
"d3-scale": "^4.0.0",
Expand Down
2 changes: 1 addition & 1 deletion scripts/jsconfig.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"exclude": ["close-old-issues.js", "fix-tslint.js"],
"exclude": ["close-old-issues.js", "fix-tslint.js", "tslint-rule-to-eslint.js"],
"compilerOptions": {
"noUnusedLocals": true,
"target": "es6",
Expand Down
69 changes: 69 additions & 0 deletions scripts/tslint-rule-to-eslint.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import { parse } from 'comment-json';
import { promises as fs } from 'fs';
import { format } from 'prettier';
import * as path from 'path';

const emptyObject = {};

const parseAndReadFileContents = async filePath => {
try {
return parse((await fs.readFile(filePath)).toString());
} catch {
return undefined;
}
};

(async () => {
const prettierConfig = await parseAndReadFileContents('.prettierrc.json');

const writeFileFormatted = async (filePath, contents) => {
await fs.writeFile(
filePath,
format(JSON.stringify(contents, null, 4), {
...prettierConfig,
filepath: filePath,
}),
);
};

const [, , tslintRuleName, eslintRuleName = tslintRuleName] = process.argv;

const typeNames = await fs.readdir('types');
for (const typeName of typeNames) {
const typeDirectory = path.join('types', typeName);

const tslintFilePath = path.join(typeDirectory, 'tslint.json');
const tslintData = await parseAndReadFileContents(tslintFilePath);
if (tslintData?.rules?.[tslintRuleName] !== false) {
continue;
}

console.log(`Converting ${typeName}...`);

delete tslintData.rules[tslintRuleName];
if (Object.keys(tslintData.rules).length === 0) {
console.log(`\t${tslintFilePath} has no remaining rules; deleting rules property.`);
delete tslintFilePath.rules;
} else {
console.log(`\t${tslintFilePath} has remaining rules.`);
}
await writeFileFormatted(tslintFilePath, tslintData);

const eslintFilePath = path.join(typeDirectory, '.eslintrc.json');
const eslintData = (await parseAndReadFileContents(eslintFilePath)) ?? emptyObject;

if (eslintData === emptyObject) {
console.log(`\t${eslintFilePath} did not yet exist; creating.`);
} else {
console.log(`\t${eslintFilePath} already exists; modifying.`);
}

writeFileFormatted(eslintFilePath, {
...eslintData,
rules: {
...eslintData.rules,
[eslintRuleName]: 'off',
},
});
}
})();
5 changes: 5 additions & 0 deletions types/absolute/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/absolute/tslint.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"extends": "@definitelytyped/dtslint/dt.json",
"rules": {
"dt-header": false,
"npm-naming": [
true,
{
Expand Down
5 changes: 5 additions & 0 deletions types/acc-wizard/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/acc-wizard/tslint.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"extends": "@definitelytyped/dtslint/dt.json",
"rules": {
"ban-types": false,
"dt-header": false,
"no-consecutive-blank-lines": false,
"no-trailing-whitespace": false,
"no-var-keyword": false,
Expand Down
5 changes: 5 additions & 0 deletions types/ace/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/ace/tslint.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
"adjacent-overload-signatures": false,
"ban-types": false,
"comment-format": false,
"dt-header": false,
"interface-name": false,
"jsdoc-format": false,
"max-line-length": false,
Expand Down
5 changes: 5 additions & 0 deletions types/add2home/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/add2home/tslint.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"extends": "@definitelytyped/dtslint/dt.json",
"rules": {
"dt-header": false,
"jsdoc-format": false,
"no-consecutive-blank-lines": false,
"no-redundant-jsdoc-2": false,
Expand Down
5 changes: 5 additions & 0 deletions types/alertify/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/alertify/tslint.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"extends": "@definitelytyped/dtslint/dt.json",
"rules": {
"ban-types": false,
"dt-header": false,
"interface-name": false,
"no-consecutive-blank-lines": false,
"no-trailing-whitespace": false,
Expand Down
5 changes: 5 additions & 0 deletions types/alt/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/alt/tslint.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
"array-type": false,
"ban-types": false,
"comment-format": false,
"dt-header": false,
"interface-over-type-literal": false,
"no-declare-current-package": false,
"no-inferrable-types": false,
Expand Down
5 changes: 5 additions & 0 deletions types/amazon-product-api/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/amazon-product-api/tslint.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"extends": "@definitelytyped/dtslint/dt.json",
"rules": {
"ban-types": false,
"dt-header": false,
"interface-name": false,
"no-consecutive-blank-lines": false,
"one-line": false,
Expand Down
5 changes: 5 additions & 0 deletions types/amqp-rpc/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/amqp-rpc/tslint.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"extends": "@definitelytyped/dtslint/dt.json",
"rules": {
"comment-format": false,
"dt-header": false,
"no-consecutive-blank-lines": false,
"no-unnecessary-generics": false,
"no-var-keyword": false,
Expand Down
5 changes: 5 additions & 0 deletions types/angular-agility/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
8 changes: 1 addition & 7 deletions types/angular-agility/tslint.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"extends": "@definitelytyped/dtslint/dt.json",
"rules": {
"arrow-return-shorthand": false,
"dt-header": false,
"interface-name": false,
"no-consecutive-blank-lines": false,
"no-object-literal-type-assertion": false,
Expand All @@ -11,12 +10,7 @@
"npm-naming": [
true,
{
"errors": [
[
"NeedsExportEquals",
false
]
],
"errors": [["NeedsExportEquals", false]],
"mode": "code"
}
],
Expand Down
5 changes: 5 additions & 0 deletions types/angular-bootstrap-calendar/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/angular-bootstrap-calendar/tslint.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
"array-type": false,
"ban-types": false,
"comment-format": false,
"dt-header": false,
"interface-name": false,
"max-line-length": false,
"no-padding": false,
Expand Down
5 changes: 5 additions & 0 deletions types/angular-breadcrumb/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/angular-breadcrumb/tslint.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"extends": "@definitelytyped/dtslint/dt.json",
"rules": {
"ban-types": false,
"dt-header": false,
"interface-name": false,
"jsdoc-format": false,
"max-line-length": false,
Expand Down
5 changes: 5 additions & 0 deletions types/angular-clipboard/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
7 changes: 1 addition & 6 deletions types/angular-clipboard/tslint.json
Original file line number Diff line number Diff line change
@@ -1,6 +1 @@
{
"extends": "@definitelytyped/dtslint/dt.json",
"rules": {
"dt-header": false
}
}
{ "extends": "@definitelytyped/dtslint/dt.json" }
5 changes: 5 additions & 0 deletions types/angular-cookie/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/angular-cookie/tslint.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"extends": "@definitelytyped/dtslint/dt.json",
"rules": {
"ban-types": false,
"dt-header": false,
"no-trailing-whitespace": false,
"no-var-keyword": false,
"object-literal-shorthand": false,
Expand Down
5 changes: 5 additions & 0 deletions types/angular-deferred-bootstrap/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/angular-deferred-bootstrap/tslint.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"extends": "@definitelytyped/dtslint/dt.json",
"rules": {
"dt-header": false,
"interface-name": false,
"no-internal-module": false,
"no-unnecessary-qualifier": false,
Expand Down
5 changes: 5 additions & 0 deletions types/angular-dialog-service/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/angular-dialog-service/tslint.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"extends": "@definitelytyped/dtslint/dt.json",
"rules": {
"dt-header": false,
"interface-name": false,
"no-consecutive-blank-lines": false,
"no-padding": false,
Expand Down
5 changes: 5 additions & 0 deletions types/angular-environment/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/angular-environment/tslint.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"extends": "@definitelytyped/dtslint/dt.json",
"rules": {
"array-type": false,
"dt-header": false,
"no-trailing-whitespace": false,
"no-unnecessary-qualifier": false,
"no-var-keyword": false,
Expand Down
5 changes: 5 additions & 0 deletions types/angular-es/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/angular-es/tslint.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
"rules": {
"array-type": false,
"ban-types": false,
"dt-header": false,
"no-declare-current-package": false,
"no-duplicate-imports": false,
"no-padding": false,
Expand Down
5 changes: 5 additions & 0 deletions types/angular-feature-flags/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/angular-feature-flags/tslint.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"extends": "@definitelytyped/dtslint/dt.json",
"rules": {
"array-type": false,
"dt-header": false,
"no-reference-import": false,
"no-unnecessary-qualifier": false,
"only-arrow-functions": false,
Expand Down
5 changes: 5 additions & 0 deletions types/angular-formly/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}
1 change: 0 additions & 1 deletion types/angular-formly/tslint.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
"array-type": false,
"ban-types": false,
"comment-format": false,
"dt-header": false,
"interface-name": false,
"no-consecutive-blank-lines": false,
"no-declare-current-package": false,
Expand Down
5 changes: 5 additions & 0 deletions types/angular-fullscreen/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"dt-header": "off"
}
}

0 comments on commit f3c7343

Please sign in to comment.