Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | 2x 2x 2x 2x 2x 9x 9x 9x 9x 6x 2x 1x 1x 4x 4x 4x 4x 5x 1x 4x 4x 3x 5x 4x 6x 1x 5x 6x 1x 6x 4x 1x 1x 1x 1x 3x | import { ParseArgs } from './parseArgs';
import { getLogger } from './logger';
import merge from 'lodash.merge';
import { Utils } from './utils';
/**
* The main class of the Node Package Builder. Handels the whole workflow.
*/
export class Worker {
/**
* The Utils class
*
* @private
*/
private readonly utils: Utils;
/**
* The logger
*
* @private
*/
private readonly logger = getLogger('worker');
/**
* The constructor parses the cli arguments and instantiate the Util class.
*/
constructor() {
const parsedArgs: ParseArgs = new ParseArgs();
parsedArgs.build();
this.utils = new Utils(parsedArgs.parseArgs());
}
/**
* Main method. Starts the workflow.
*/
public start() {
if (this.utils.isResetEnvironment()) {
if (this.utils.isDryRun()) {
this.logger.warn(`Won't reset package.json because of "dry-run" enabled...`);
} else {
this.utils.restoreBackup();
}
} else {
const packageJson = this.getPackageJson();
const environmentJson = this.getEnvironmentJson();
const mergedPackage = this.mergeJson(packageJson, environmentJson);
this.writeNewPackage(mergedPackage);
}
}
/**
* Loads the package.json file.
*
* @returns The package.json as object
*
* @private
*/
private getPackageJson(): any {
let packageString;
if (this.utils.isBackupExisting()) {
packageString = this.utils.loadBackupJson();
} else {
packageString = this.utils.loadPackageJson();
if (!this.utils.isDryRun()) {
this.utils.backupPackageJson();
}
}
return JSON.parse(packageString);
}
/**
* Loads the environment file.
*
* @returns Environment as object
*
* @private
*/
private getEnvironmentJson(): any {
return JSON.parse(this.utils.loadEnvironmentJson());
}
/**
* Does the merge of the two package.json parts. If "replace" is passed via parameter, only the environment file content is used. (So no merge is done)
*
* @param packageJson The package.json object
* @param environmentJson The environment object
*
* @returns The merged/replaced package.json object
*
* @private
*/
private mergeJson(packageJson: any, environmentJson: any): any {
let merged;
if (this.utils.isReplace()) {
merged = environmentJson;
} else {
merged = merge({}, packageJson, environmentJson);
}
if (this.utils.isIncludeEnvironment()) {
merged.npbEnv = [this.utils.getEnvironment()];
}
return merged;
}
/**
* Saved the new package.json to disk or displays it to console if "dry-run" is passed via cli.
*
* @param mergedPackage New package.json content object
*
* @private
*/
private writeNewPackage(mergedPackage: any) {
if (this.utils.isDryRun()) {
this.logger.info('##################################');
this.logger.info('######### DRY-RUN output #########');
this.logger.info(JSON.stringify(mergedPackage, null, 4));
this.logger.info('##################################');
} else {
this.utils.savePackageJson(mergedPackage);
}
}
}
|