Skip to content

Commit

Permalink
Pass only debug to loggers
Browse files Browse the repository at this point in the history
  • Loading branch information
webpro committed Oct 21, 2022
1 parent 89e7c07 commit 08ca0c9
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 27 deletions.
22 changes: 11 additions & 11 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { debugLogObject, debugLogFiles, debugLogSourceFiles } from './util/debug
import { getMessageUpdater } from './progress';
import type { UnresolvedConfiguration, Configuration } from './types';

export const main = async (options: UnresolvedConfiguration) => {
export const main = async (unresolvedConfiguration: UnresolvedConfiguration) => {
const {
cwd,
workingDir,
Expand All @@ -24,11 +24,11 @@ export const main = async (options: UnresolvedConfiguration) => {
isShowProgress,
jsDoc,
debug,
} = options;
} = unresolvedConfiguration;

const updateMessage = getMessageUpdater(options);
const updateMessage = getMessageUpdater(unresolvedConfiguration);

debugLogObject(options, 1, 'Unresolved configuration', options);
debugLogObject(debug, 1, 'Unresolved configuration', unresolvedConfiguration);

updateMessage('Reading configuration and manifest files...');

Expand Down Expand Up @@ -62,7 +62,7 @@ export const main = async (options: UnresolvedConfiguration) => {
const dir = relative(workingDir);
const resolvedConfig = resolveConfig(manifest.knip ?? localConfig, { workingDir: dir, isDev });

debugLogObject(options, 1, 'Resolved configuration', resolvedConfig);
debugLogObject(debug, 1, 'Resolved configuration', resolvedConfig);

if (!resolvedConfigFilePath && !manifest.knip && !resolvedTsConfigFilePath) {
throw new ConfigurationError(`Unable to find ${configFilePath} or package.json#knip or ${tsConfigFilePath}`);
Expand All @@ -82,17 +82,17 @@ export const main = async (options: UnresolvedConfiguration) => {
ignore,
gitignore,
});
debugLogFiles(options, 1, 'Globbed entry paths', entryPaths);
debugLogFiles(debug, 1, 'Globbed entry paths', entryPaths);

// Create workspace for entry files, but don't resolve dependencies yet
const production = createProject({ ...projectOptions, ...skipAddFiles }, entryPaths);
const entryFiles = production.getSourceFiles();
debugLogSourceFiles(options, 1, 'Included entry source files', entryFiles);
debugLogSourceFiles(debug, 1, 'Included entry source files', entryFiles);

// Now resolve dependencies of entry files to find all production files
production.resolveSourceFileDependencies();
const productionFiles = production.getSourceFiles();
debugLogSourceFiles(options, 1, 'Included production source files', productionFiles);
debugLogSourceFiles(debug, 1, 'Included production source files', productionFiles);

updateMessage('Resolving project files...');
const projectPaths = await resolvePaths({
Expand All @@ -101,12 +101,12 @@ export const main = async (options: UnresolvedConfiguration) => {
ignore,
gitignore,
});
debugLogFiles(options, 1, 'Globbed project paths', projectPaths);
debugLogFiles(debug, 1, 'Globbed project paths', projectPaths);

// Create workspace for the entire project
const project = createProject({ ...projectOptions, ...skipAddFiles }, projectPaths);
const projectFiles = project.getSourceFiles();
debugLogSourceFiles(options, 1, 'Included project source files', projectFiles);
debugLogSourceFiles(debug, 1, 'Included project source files', projectFiles);

return { entryFiles, productionFiles, projectFiles };
} else {
Expand Down Expand Up @@ -143,7 +143,7 @@ export const main = async (options: UnresolvedConfiguration) => {

const { issues, counters } = await findIssues(config);

debugLogObject(options, 2, 'Issues', issues);
debugLogObject(debug, 2, 'Issues', issues);

return { report, issues, counters };
};
10 changes: 5 additions & 5 deletions src/runner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import type { Identifier } from 'ts-morph';
import type { Configuration, Issues, Issue, Counters, ProjectIssueType, SymbolIssueType } from './types';

export async function findIssues(configuration: Configuration) {
const { workingDir, report, isDev, jsDocOptions } = configuration;
const { workingDir, report, isDev, jsDocOptions, debug } = configuration;
const { entryFiles, productionFiles, projectFiles, isIncludeEntryFiles } = configuration;

const updateMessage = getMessageUpdater(configuration);
Expand All @@ -26,10 +26,10 @@ export async function findIssues(configuration: Configuration) {
const [usedProductionFiles, unreferencedProductionFiles] = partitionSourceFiles(projectFiles, productionFiles);
const [usedEntryFiles, usedNonEntryFiles] = partitionSourceFiles(usedProductionFiles, entryFiles);

debugLogSourceFiles(configuration, 1, 'Used production files', usedProductionFiles);
debugLogSourceFiles(configuration, 1, 'Unreferenced production files', unreferencedProductionFiles);
debugLogSourceFiles(configuration, 1, 'Used entry files', usedEntryFiles);
debugLogSourceFiles(configuration, 1, 'Used non-entry files', usedNonEntryFiles);
debugLogSourceFiles(debug, 1, 'Used production files', usedProductionFiles);
debugLogSourceFiles(debug, 1, 'Unreferenced production files', unreferencedProductionFiles);
debugLogSourceFiles(debug, 1, 'Used entry files', usedEntryFiles);
debugLogSourceFiles(debug, 1, 'Used non-entry files', usedNonEntryFiles);

// Set up the results
const issues: Issues = {
Expand Down
20 changes: 9 additions & 11 deletions src/util/debug.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
import util from 'node:util';
import type { SourceFile } from 'ts-morph';

type Config = { debug: { isEnabled: boolean; level: number } };
type Debug = { isEnabled: boolean; level: number };

// Inspect arrays, otherwise Node [will, knip, ...n-100 more items]
const logArray = (collection: string[]) => console.log(util.inspect(collection, { maxArrayLength: null }));

export const debugLogObject = (config: Config, minimumLevel: number, name: string, obj: unknown) => {
if (minimumLevel > config.debug.level) return;
export const debugLogObject = (debug: Debug, minimumLevel: number, name: string, obj: unknown) => {
if (minimumLevel > debug.level) return;
console.log(`[knip] ${name}:`);
console.log(util.inspect(obj, { depth: null, colors: true }));
};

export const debugLogFiles = (config: Config, minimumLevel: number, name: string, filePaths: string[]) => {
if (minimumLevel > config.debug.level) return;
const { debug } = config;
export const debugLogFiles = (debug: Debug, minimumLevel: number, name: string, filePaths: string[]) => {
if (minimumLevel > debug.level) return;
if (debug.level > 1) {
console.debug(`[knip] ${name} (${filePaths.length}):`);
logArray(filePaths);
Expand All @@ -23,9 +22,8 @@ export const debugLogFiles = (config: Config, minimumLevel: number, name: string
}
};

export const debugLogSourceFiles = (config: Config, minimumLevel: number, name: string, sourceFiles: SourceFile[]) => {
if (minimumLevel > config.debug.level) return;
const { debug } = config;
export const debugLogSourceFiles = (debug: Debug, minimumLevel: number, name: string, sourceFiles: SourceFile[]) => {
if (minimumLevel > debug.level) return;
if (debug.level > 1) {
// let files = Array.from(sourceFiles);
console.debug(`[knip] ${name} (${sourceFiles.length}):`);
Expand All @@ -36,8 +34,8 @@ export const debugLogSourceFiles = (config: Config, minimumLevel: number, name:
};

// ESLint should detect this unused variable within this file
const debugLogDiff = (config: Config, minimumLevel: number, name: string, arrA: string[], arrB: string[]) => {
if (minimumLevel > config.debug.level) return;
const debugLogDiff = (debug: Debug, minimumLevel: number, name: string, arrA: string[], arrB: string[]) => {
if (minimumLevel > debug.level) return;
const onlyInA = arrA.filter(itemA => !arrB.includes(itemA)).sort();
const onlyInB = arrB.filter(itemB => !arrA.includes(itemB)).sort();
console.log(`[knip] ${name}`);
Expand Down

0 comments on commit 08ca0c9

Please sign in to comment.