From d200c515ac2bb3aeab91c629e11954cd27b76ca7 Mon Sep 17 00:00:00 2001 From: Joel Worrall Date: Thu, 27 Aug 2020 13:45:10 -0400 Subject: [PATCH] fix: jsdoc initial rules --- .gitignore | 1 + index.js | 21 ++++++------ package-lock.json | 6 ++-- package.json | 2 +- rules/file-contents.js | 24 +++++++++++++- rules/git-grep-commits.js | 67 ++++++++++++++++++++++++++++++++++++++- rules/git-grep-log.js | 40 ++++++++++++++++++++++- rules/git-list-tree.js | 32 ++++++++++++++++++- 8 files changed, 176 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index e4801c83..11f57149 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ tmp/ .idea/ vendor/ .bundle +out \ No newline at end of file diff --git a/index.js b/index.js index 0c8c98de..c8bd2dcc 100644 --- a/index.js +++ b/index.js @@ -19,7 +19,7 @@ const Axioms = require('./axioms/axioms') /** * @typedef {object} Formatter * - * @property {(output: LintResult, dryRun: boolean) => string} formatOutput A function to format the entire linter output + * @property {func} formatOutput A function to format the entire linter output */ /** @@ -79,8 +79,13 @@ module.exports.resultFormatter = exports.defaultFormatter /** * @typedef {object} LintResult * - * @property {{ targetDir: string, filterPaths: string[], rulesetPath?: string, ruleset: object }} params + * @property {Object} params * The parameters to the lint function call, including the found/supplied ruleset object. + * @property {string} params.targetDir + * @property {string[]} params.filterPaths + * @property {string} [params.rulesetPath] + * @property {Object} params.ruleset + * * @property {boolean} passed Whether or not all lint rules and fix rules succeeded. Will be false if an error occurred during linting. * @property {boolean} errored Whether or not an error occurred during the linting process (ex. the configuration failed validation). * @property {string} [errMsg] A string indication error information, will be present if errored is true. @@ -209,7 +214,7 @@ async function lint (targetDir, filterPaths = [], dryRun = false, ruleset = null * is for rules. This function is split in three to allow NCC to * statically determine the modules to resolve. * - * @returns {Promise any>>} + * @return {Promise} * An object containing JS file names associated with their appropriate require function */ async function loadRules () { @@ -229,7 +234,7 @@ async function loadRules () { * is for fixes. This function is split in three to allow NCC to * statically determine the modules to resolve. * - * @returns {Promise any>>} + * @returns {Promise} * An object containing JS file names associated with their appropriate require function */ async function loadFixes () { @@ -249,7 +254,7 @@ async function loadFixes () { * is for Axioms. This function is split in three to allow NCC to * statically determine the modules to resolve. * - * @returns {Promise any>>} + * @returns {Promise} * An object containing JS file names associated with their appropriate require function */ async function loadAxioms () { @@ -298,7 +303,6 @@ async function runRuleset (ruleset, targets, fileSystem, dryRun) { let result try { // load the rule - /** @type {(fs: FileSystem, options: object) => Promise | Result} */ const ruleFunc = allRules[r.ruleType]() // run the rule! result = await ruleFunc(fileSystem, r.ruleConfig) @@ -314,7 +318,6 @@ async function runRuleset (ruleset, targets, fileSystem, dryRun) { if (!Object.prototype.hasOwnProperty.call(allFixes, r.fixType)) { return FormatResult.CreateError(r, `${r.fixType} is not a valid fix`) } let fixresult try { - /** @type {(fs: FileSystem, options: object, targets: string[], dryRun: boolean) => Promise | Result} */ const fixFunc = allFixes[r.fixType]() fixresult = await fixFunc(fileSystem, r.fixConfig, fixTargets, dryRun) } catch (e) { @@ -333,7 +336,7 @@ async function runRuleset (ruleset, targets, fileSystem, dryRun) { * * @param {object} axiomconfig A configuration conforming to the "axioms" section in schema.json * @param {FileSystem} fs The filesystem to run axioms against - * @returns {Promise>} An object representing axiom name: axiom results. The array will be null if the axiom could not run. + * @returns {Promise} An object representing axiom name: axiom results. The array will be null if the axiom could not run. */ async function determineTargets (axiomconfig, fs) { // load axioms @@ -353,7 +356,7 @@ async function determineTargets (axiomconfig, fs) { * Validate a repolint configuration against a known JSON schema * * @param {object} config The configuration to validate - * @returns {Promise<{ passed: boolean, error?: string }>} Whether or not the config validation succeeded + * @returns {Promise} Whether or not the config validation succeeded */ async function validateConfig (config) { // compile the json schema diff --git a/package-lock.json b/package-lock.json index 1c34ae81..afa7cd78 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1340,9 +1340,9 @@ } }, "eslint-plugin-jsdoc": { - "version": "30.2.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.2.4.tgz", - "integrity": "sha512-7TLp+1EK/ufnzlBUuzgDiPz5k2UUIa01cFkZTvvbJr8PE0iWVDqENg0yLhqGUYaZfYRFhHpqCML8SQR94omfrg==", + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.3.0.tgz", + "integrity": "sha512-RvDLH26ILwX2J60P7tlNdz5IlTFeC52TEFgAC12+nz/lOx4a7n3/hP8fBPFZrQP07WA1t9ZOO8H/i7cEs2BTnA==", "dev": true, "requires": { "comment-parser": "^0.7.6", diff --git a/package.json b/package.json index b455a7b9..c99bca0d 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "chai-string": "^1.5.0", "command-exists": "^1.2.9", "eslint": "^7.7.0", - "eslint-plugin-jsdoc": "^30.2.4", + "eslint-plugin-jsdoc": "^30.3.0", "markdown-toc": "^1.2.0", "markdownlint": "^0.20.4", "mocha": "^8.1.1", diff --git a/rules/file-contents.js b/rules/file-contents.js index ea60316f..b3ec13e8 100644 --- a/rules/file-contents.js +++ b/rules/file-contents.js @@ -4,7 +4,29 @@ // eslint-disable-next-line no-unused-vars const Result = require('../lib/result') // eslint-disable-next-line no-unused-vars -const FileSystem = require('../lib/file_system') +const FileSystem = require/** + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * @param options + */ +('../lib/file_system') function getContent (options) { return options['human-readable-content'] !== undefined ? options['human-readable-content'] : options.content diff --git a/rules/git-grep-commits.js b/rules/git-grep-commits.js index f456de52..1cb639dd 100644 --- a/rules/git-grep-commits.js +++ b/rules/git-grep-commits.js @@ -4,7 +4,53 @@ const spawnSync = require('child_process').spawnSync const Result = require('../lib/result') // eslint-disable-next-line no-unused-vars -const FileSystem = require('../lib/file_system') +const FileSystem = require/** +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc +cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc * @param fileSystem +cccccccccccccccccccccccccc * @param options +cccccccccccccccccccccccccc */ +('../lib/file_system') function listCommitsWithLines (fileSystem, options) { const pattern = '(' + options.denylist.join('|') + ')' @@ -18,16 +64,31 @@ function listCommitsWithLines (fileSystem, options) { }).filter(commit => commit.lines.length > 0) } +/** + * @param targetDir + */ function gitAllCommits (targetDir) { const args = ['-C', targetDir, 'rev-list', '--all'] return spawnSync('git', args).stdout.toString().trim().split('\n') } +/** + * @param targetDir + * @param pattern + * @param ignoreCase + * @param commit + */ function gitGrep (targetDir, pattern, ignoreCase, commit) { const args = ['-C', targetDir, 'grep', '-E', ignoreCase ? '-i' : '', pattern, commit] return spawnSync('git', args).stdout.toString().split('\n').filter(x => !!x) } +/** + * @param targetDir + * @param pattern + * @param ignoreCase + * @param commit + */ function gitLinesAtCommit (targetDir, pattern, ignoreCase, commit) { const lines = gitGrep(targetDir, pattern, ignoreCase, commit) .map((entry) => { @@ -38,6 +99,10 @@ function gitLinesAtCommit (targetDir, pattern, ignoreCase, commit) { return lines } +/** + * @param fileSystem + * @param options + */ function listFiles (fileSystem, options) { const files = [] diff --git a/rules/git-grep-log.js b/rules/git-grep-log.js index 51f143f8..1493e953 100644 --- a/rules/git-grep-log.js +++ b/rules/git-grep-log.js @@ -4,7 +4,39 @@ const spawnSync = require('child_process').spawnSync const Result = require('../lib/result') // eslint-disable-next-line no-unused-vars -const FileSystem = require('../lib/file_system') +const FileSystem = require/** + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * @param fileSystem + * cccccccccccccccccccccccccc * @param options + * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * @param fileSystem + * @param options + */ +('../lib/file_system') function grepLog (fileSystem, options) { const args = ['-C', fileSystem.targetDir, 'log', '--all', '--format=full', '-E'] @@ -16,12 +48,18 @@ function grepLog (fileSystem, options) { return parseLog(log) } +/** + * @param log + */ function parseLog (log) { const logEntries = log.split('\ncommit ').filter(x => !!x) return logEntries.map(entry => extractInfo(entry)) } +/** + * @param commit + */ function extractInfo (commit) { const [hash, , , ...message] = commit.split('\n') return { diff --git a/rules/git-list-tree.js b/rules/git-list-tree.js index a1a291e8..0b4f5a8a 100644 --- a/rules/git-list-tree.js +++ b/rules/git-list-tree.js @@ -4,18 +4,48 @@ const spawnSync = require('child_process').spawnSync const Result = require('../lib/result') // eslint-disable-next-line no-unused-vars -const FileSystem = require('../lib/file_system') +const FileSystem = require/** + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param targetDir + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param targetDir + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param targetDir + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param targetDir + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param targetDir + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param targetDir + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param targetDir + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param targetDir + * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * cccccccccccccccccccccccccc * @param targetDir + * cccccccccccccccccccccccccc cccccccccccccccccccccccccc + * @param targetDir + */ +('../lib/file_system') function gitAllCommits (targetDir) { const args = ['-C', targetDir, 'rev-list', '--all'] return spawnSync('git', args).stdout.toString().split('\n') } +/** + * @param targetDir + * @param commit + */ function gitFilesAtCommit (targetDir, commit) { const args = ['-C', targetDir, 'ls-tree', '-r', '--name-only', commit] return spawnSync('git', args).stdout.toString().split('\n') } +/** + * @param fileSystem + * @param options + */ function listFiles (fileSystem, options) { const files = []