Skip to content

Instantly share code, notes, and snippets.

@seriema
Last active May 2, 2019 11:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save seriema/b1c00036175cbfc374548b499bafcb27 to your computer and use it in GitHub Desktop.
Save seriema/b1c00036175cbfc374548b499bafcb27 to your computer and use it in GitHub Desktop.
lint-episerver-cms-api

Run with npx https://gist.github.com/seriema/b1c00036175cbfc374548b499bafcb27.

#!/usr/bin/env node
const EslintEngine = require("eslint").CLIEngine;
const args = require('arg')({
'--xproduct': Boolean,
'-x': '--xproduct'
});
const fs = require('fs');
const config = require("./npx-eslintrc.js");
const configXProduct = require("./npx-eslintrc-xproduct.js");
const eslint = new EslintEngine({
// Only use the included config files.
baseConfig: args["--xproduct"] ? configXProduct : config,
useEslintrc: false
});
// Run on all files in the current directory.
const report = eslint.executeOnFiles(
eslint.resolveFileGlobPatterns(["."])
);
// The default formatter "telemetry" is a JSON file we would like to have as feedback on our API's.
const telemetryFormatter = eslint.getFormatter("@episerver/cms");
fs.writeFile('episerver-cms-api-usage.json', telemetryFormatter(report.results), 'utf8', (err) => {
if(err) {
throw err
}
});
// Output a nice summary table.
const summaryFormatter = eslint.getFormatter("@episerver/cms/lib/summary");
console.log(summaryFormatter(report.results));
const config = require("./npx-eslintrc.js");
module.exports = Object.assign({}, config,
{
"rules": {
"@episerver/cms/no-internal-episerver-apis": ["error", "xproduct"]
}
}
);
module.exports = {
"plugins": ["@episerver/cms"],
"extends": "plugin:@episerver/cms/recommended"
};
{
"name": "@episerver/create-cms-api-report",
"version": "0.0.0",
"bin": "index.js",
"dependencies": {
"@episerver/eslint-formatter-cms": "^1.0.0",
"@episerver/eslint-plugin-cms": "^2.1.0",
"arg": "^4.1.0",
"eslint": "^4.19.1"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment