Refactoring of CLI code related with source code. Fixed directory name logging

This commit is contained in:
sanex3339
2020-02-05 00:14:56 +03:00
parent 25c9df4084
commit 8977f92742
8 changed files with 26995 additions and 308 deletions
+40 -41
View File
@@ -3,7 +3,6 @@ import * as path from 'path';
import { TInputCLIOptions } from '../types/options/TInputCLIOptions';
import { TInputOptions } from '../types/options/TInputOptions';
import { TSourceCodeData } from '../types/cli/TSourceCodeData';
import { IFileData } from '../interfaces/cli/IFileData';
import { IInitializable } from '../interfaces/IInitializable';
@@ -76,6 +75,33 @@ export class JavaScriptObfuscatorCLI implements IInitializable {
this.arguments = argv.slice(2);
}
/**
* @param {TInputCLIOptions} inputOptions
* @param {string} inputCodePath
* @returns {TInputOptions}
*/
private static buildOptions (
inputOptions: TInputCLIOptions,
inputCodePath: string
): TInputOptions {
const inputCLIOptions: TInputOptions = JavaScriptObfuscatorCLI.filterOptions(inputOptions);
const configFilePath: string | undefined = inputOptions.config;
const configFileLocation: string = configFilePath ? path.resolve(configFilePath, '.') : '';
const configFileOptions: TInputOptions = configFileLocation ? CLIUtils.getUserConfig(configFileLocation) : {};
const inputFileName: string = path.basename(inputCodePath);
const inputFilePath: string = inputCodePath;
console.log(inputFilePath, inputFileName);
return {
...DEFAULT_PRESET,
...configFileOptions,
...inputCLIOptions,
inputFileName,
inputFilePath
};
}
/**
* @param {TObject} options
* @returns {TInputOptions}
@@ -159,32 +185,12 @@ export class JavaScriptObfuscatorCLI implements IInitializable {
return;
}
const sourceCodeData: TSourceCodeData = new SourceCodeReader(this.inputCLIOptions)
const sourceCodeData: IFileData[] = new SourceCodeReader(this.inputCLIOptions)
.readSourceCode(this.inputPath);
this.processSourceCodeData(sourceCodeData);
}
/**
* @returns {TInputOptions}
*/
private buildOptions (): TInputOptions {
const inputCLIOptions: TInputOptions = JavaScriptObfuscatorCLI.filterOptions(this.inputCLIOptions);
const configFilePath: string | undefined = this.inputCLIOptions.config;
const configFileLocation: string = configFilePath ? path.resolve(configFilePath, '.') : '';
const configFileOptions: TInputOptions = configFileLocation ? CLIUtils.getUserConfig(configFileLocation) : {};
const inputFileName: string = path.basename(this.inputPath);
const inputFilePath: string = this.inputPath;
return {
...DEFAULT_PRESET,
...configFileOptions,
...inputCLIOptions,
inputFileName,
inputFilePath
};
}
private configureCommands (): void {
this.commands
.usage('<inputPath> [options]')
@@ -380,39 +386,32 @@ export class JavaScriptObfuscatorCLI implements IInitializable {
}
/**
* @param {TSourceCodeData} sourceCodeData
* @param {IFileData[]} sourceCodeData
*/
private processSourceCodeData (sourceCodeData: TSourceCodeData): void {
const outputPath: string = this.inputCLIOptions.output
? path.normalize(this.inputCLIOptions.output)
: '';
private processSourceCodeData (sourceCodeData: IFileData[]): void {
sourceCodeData.forEach(({ filePath, content }: IFileData, index: number) => {
const outputCodePath: string = CLIUtils.getOutputCodePath(filePath, this.inputCLIOptions.output);
if (!Array.isArray(sourceCodeData)) {
const outputCodePath: string = outputPath || CLIUtils.getOutputCodePath(this.inputPath);
this.processSourceCode(sourceCodeData, outputCodePath, null);
} else {
sourceCodeData.forEach(({ filePath, content }: IFileData, index: number) => {
const outputCodePath: string = outputPath
? path.join(outputPath, filePath)
: CLIUtils.getOutputCodePath(filePath);
this.processSourceCode(content, outputCodePath, index);
});
}
this.processSourceCode(content, filePath, outputCodePath, index);
});
}
/**
* @param {string} sourceCode
* @param {string} inputCodePath
* @param {string} outputCodePath
* @param {number | null} sourceCodeIndex
*/
private processSourceCode (
sourceCode: string,
inputCodePath: string,
outputCodePath: string,
sourceCodeIndex: number | null
): void {
let options: TInputOptions = this.buildOptions();
let options: TInputOptions = JavaScriptObfuscatorCLI.buildOptions(
this.inputCLIOptions,
inputCodePath
);
if (sourceCodeIndex !== null) {
const baseIdentifiersPrefix: string = this.inputCLIOptions.identifiersPrefix