Skip to content

Commit

Permalink
Fix import cycles
Browse files Browse the repository at this point in the history
  • Loading branch information
scalvert committed Mar 5, 2022
1 parent 4493bd9 commit b598b6e
Show file tree
Hide file tree
Showing 5 changed files with 442 additions and 22 deletions.
2 changes: 1 addition & 1 deletion bin/ember-template-lint.js
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ async function run() {
process.exitCode = 1;
}

printResults(results, { options, todoInfo, config: linter.config });
await printResults(results, { options, todoInfo, config: linter.config });
}

run();
3 changes: 3 additions & 0 deletions lib/formatters/load-formatter.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ import { createRequire } from 'node:module';
import path from 'node:path';

import JsonFormatter from './json.js';
// The following disable should be safe. This particular rule does not need to identify
// cycles that are broken when using dynamic imports. See https://github.com/import-js/eslint-plugin-import/issues/2265
// eslint-disable-next-line import/no-cycle
import MultiFormatter from './multi.js';
import PrettyFormatter from './pretty.js';
import SarifFormatter from './sarif.js';
Expand Down
40 changes: 21 additions & 19 deletions lib/formatters/multi.js
Original file line number Diff line number Diff line change
@@ -1,31 +1,33 @@
import printResults from '../helpers/print-results.js';

export default class PrettyFormatter {
export default class MultiFormatter {
constructor(options = {}) {
this.options = options;
}

format(results, todoInfo) {
async format(results, todoInfo) {
let formatConfig = this.options.config.format;

if (!formatConfig && !formatConfig.formatters) {
return '';
}
if (formatConfig && formatConfig.formatters) {
// The following disable should be safe. This particular rule does not need to identify
// cycles that are broken when using dynamic imports. See https://github.com/import-js/eslint-plugin-import/issues/2265
// eslint-disable-next-line import/no-cycle
const { default: printResults } = await import('../helpers/print-results.js');
for (let formatter of formatConfig.formatters) {
let formatterOptions = {
options: Object.assign({}, this.options, {
format: formatter.name,
}),
todoInfo,
config: this.options.config,
};

for (let formatter of formatConfig.formatters) {
let formatterOptions = {
options: Object.assign({}, this.options, {
format: formatter.name,
}),
todoInfo,
config: this.options.config,
};
if (formatter.outputFile) {
formatterOptions.options.outputFile = formatter.outputFile;
}

if (formatter.outputFile) {
formatterOptions.options.outputFile = formatter.outputFile;
await printResults(results, formatterOptions);
}

printResults(results, formatterOptions);
}

return '';
}
}
7 changes: 5 additions & 2 deletions lib/helpers/print-results.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
// The following disable should be safe. This particular rule does not need to identify
// cycles that are broken when using dynamic imports. See https://github.com/import-js/eslint-plugin-import/issues/2265
// eslint-disable-next-line import/no-cycle
import { loadFormatter } from '../formatters/load-formatter.js';
import writeOutputFile from './write-output-file.js';

export default function printResults(results, { options, todoInfo, config }) {
export default async function printResults(results, { options, todoInfo, config }) {
let hasErrors = results.errorCount > 0;
let hasWarnings = results.warningCount > 0;
let hasTodos = options.includeTodo && results.todoCount;
Expand All @@ -14,7 +17,7 @@ export default function printResults(results, { options, todoInfo, config }) {
});

if (typeof formatter.format === 'function') {
let output = formatter.format(results, todoInfo);
let output = await formatter.format(results, todoInfo);

if ('outputFile' in options && typeof options.outputFile !== 'undefined') {
let outputPath = writeOutputFile(output, formatter.defaultFileExtension || 'txt', options);
Expand Down

0 comments on commit b598b6e

Please sign in to comment.