mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
Refactoring of CLI code related with source code. Fixed directory name logging
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user