forked from DefinitelyTyped/DefinitelyTyped
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add danger for showing dts-critic suggestions (DefinitelyTyped#44430)
* First attempt * cwd churn * cwd churn 2 * cwd churn 3 * cwd churn 4 * cwd churn 5 * cwd churn 6 * dump ls * Add a TS dangerfile * Faff with the CI * try to read suggestions * add bogus aframe change * use correct dir * handle no suggestions * delete more of aframe to get dts-critic to notice * now try yauzl * move danger to travis for now * Revert "delete more of aframe to get dts-critic to notice" This reverts commit 65ea09f. * Revert "add bogus aframe change" This reverts commit a6546bd. * first try at formatting with markdown * maybe it's a line-oriented format * rebreak aframe * Better formatting Still not best * better wording, maybe better formatting * maybe I need a space to get autonumbering * even better formatting * special-case for >5 properties * Use a summary discolosure * Adds links to unpkg and the dts * Fix the unpkg link * Better unpkg/file linking 1. only show files if more than one was edited. 2. put top-level unpkg on top-level package heading * fix formatting and single-file skip * url needs trailing / * Revert "now try yauzl" This reverts commit 08ab238. * Revert "rebreak aframe" This reverts commit 6ceed76. Co-authored-by: Orta Therox <[email protected]>
- Loading branch information
Showing
4 changed files
with
65 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,13 +12,15 @@ jobs: | |
displayName: 'npm install' | ||
inputs: | ||
verbose: false | ||
|
||
- script: | | ||
if [[ $BUILD_REASON == "Schedule" ]]; then git config --global user.email "[email protected]" && git config --global user.name "TypeScript Bot" && npm run update-codeowners; fi | ||
git checkout -- . && npm run test | ||
git checkout -- . | ||
npm run test | ||
displayName: 'npm run test' | ||
trigger: | ||
- master | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
import fs = require('fs') | ||
import os = require('os') | ||
import { markdown, danger } from "danger" | ||
const suggestionsDir = [os.homedir(), ".dts", "suggestions"].join('/') | ||
const lines: string[] = [] | ||
const missingProperty = /module exports a property named '(.+?)', which is missing/ | ||
|
||
if (fs.existsSync(suggestionsDir)) { | ||
lines.push('Inspecting the JavaScript source for this package found some properties that are not in the .d.ts files.') | ||
lines.push('The check for missing properties isn\'t always right, so take this list as advice, not a requirement.') | ||
for (const suggestionFile of fs.readdirSync(suggestionsDir)) { | ||
const path = [suggestionsDir, suggestionFile].join('/') | ||
const suggestions = fs.readFileSync(path, "utf8").split('\n').map(x => JSON.parse(x)) as Array<{ fileName: string, ruleName: string, message: string }> | ||
const packageName = suggestionFile.slice(0, suggestionFile.indexOf('.txt')) | ||
const missingProperties: { [s: string]: string[] } = {} | ||
for (const s of suggestions) { | ||
const fileName = s.fileName.slice(s.fileName.indexOf("types/" + packageName + "/") + ("types/" + packageName + "/").length) | ||
const match = s.message.match(missingProperty) | ||
const identifier = match ? match[1] : s.message | ||
if (fileName in missingProperties) { | ||
missingProperties[fileName].push(identifier) | ||
} | ||
else { | ||
missingProperties[fileName] = [identifier] | ||
} | ||
} | ||
|
||
const topUnpkgURL = `https://unpkg.com/browse/${packageName}@latest/`; | ||
lines.push("## " + packageName + ` ([<kbd>unpkg</kbd>](${topUnpkgURL}))`) | ||
for (const fileName in missingProperties) { | ||
if (Object.keys(missingProperties).length > 1) { | ||
const originalJS = fileName.replace(".d.ts", ".js") | ||
const unpkgURL = `https://unpkg.com/browse/${packageName}@latest/${originalJS}` | ||
const dtsName = packageName.replace("@", "").replace("/", "__") | ||
const dtsURL = `https://github.com/DefinitelyTyped/DefinitelyTyped/blob/${danger.github.pr.head.sha}/types/${dtsName}/${fileName}` | ||
|
||
lines.push(`### ${fileName} ([<kbd>unpkg</kbd>](${unpkgURL}), [<kbd>d.ts</kbd>](${dtsURL}))`); | ||
} | ||
const properties = missingProperties[fileName] | ||
lines.push(`was missing the following properties: | ||
1. ` + properties.slice(0,5).join('\n1. ')) | ||
if (properties.length > 5) { | ||
const extras = properties.slice(5) | ||
lines.push(` | ||
<details> | ||
<summary>as well as these ${extras.length} other properties...</summary> | ||
<p>${extras.join(", ")}</p> | ||
</details> | ||
`) | ||
} | ||
} | ||
} | ||
markdown(lines.join('\n')) | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters