Skip to content

Commit

Permalink
feat: keep reading package.json as fallback
Browse files Browse the repository at this point in the history
  • Loading branch information
jmcdo29 committed Nov 17, 2020
1 parent 95f2012 commit 298eee0
Showing 1 changed file with 78 additions and 21 deletions.
99 changes: 78 additions & 21 deletions actions/info.action.ts
Expand Up @@ -45,30 +45,87 @@ export class InfoAction extends AbstractAction {
console.info('NodeJS Version :', chalk.blue(process.version));
await this.displayPackageManagerVersion();
}
};

const displayCliVersion = () => {
console.info(chalk.green('[Nest CLI]'));
console.info(
'Nest CLI Version :',
chalk.blue(require('../package.json').version),
'\n',
);
};
async displayPackageManagerVersion() {
try {
const version: string = await this.manager.version();
console.info(`${this.manager.name} Version :`, chalk.blue(version), '\n');
} catch {
console.error(`${this.manager.name} Version :`, chalk.red('Unknown'), '\n');
}
}

async displayNestInformation(): Promise<void> {
this.displayCliVersion();
console.info(chalk.green('[Nest Platform Information]'));
try {
const dependencies: PackageJsonDependencies = await this.readProjectLockDependencies();
this.displayNestVersions(dependencies);
} catch {
await this.displayNestInformationFromPackage();
}
}

async displayNestInformationFromPackage(): Promise<void> {
try {
const dependencies: PackageJsonDependencies =await this.readProjectPackageDependencies();
this.displayNestVersions(dependencies);
} catch {
console.error(
chalk.red(MESSAGES.NEST_INFORMATION_PACKAGE_MANAGER_FAILED),
);
}
}

displayCliVersion(): void {
console.info(chalk.green('[Nest CLI]'));
console.info(
'Nest CLI Version :',
chalk.blue(require('../package.json').version),
'\n',
);
}

const readProjectPackageJsonDependencies = async (): Promise<
PackageJsonDependencies
> => {
return new Promise<PackageJsonDependencies>((resolve, reject) => {
readFile(
join(process.cwd(), 'package.json'),
(error: NodeJS.ErrnoException | null, buffer: Buffer) => {
if (error !== undefined && error !== null) {
reject(error);
} else {
resolve(JSON.parse(buffer.toString()).dependencies);
async readProjectLockDependencies(): Promise<PackageJsonDependencies> {
return new Promise<PackageJsonDependencies>((resolve, reject) => {
readFile(
join(process.cwd(), this.manager.name === 'YARN' ? 'yarn.lock' : 'package-lock.json'),
(error: NodeJS.ErrnoException | null, buffer: Buffer) => {
if (error !== undefined && error !== null) {
reject(error);
} else {
resolve(this.manager.lockParser.parse(buffer.toString())[this.manager.name === 'YARN' ? 'object' : 'dependencies']);
}
},
);
});
}

async readProjectPackageDependencies(): Promise<PackageJsonDependencies> {
return new Promise<PackageJsonDependencies>((resolve, reject) => {
readFile(
join(process.cwd(), 'package.json'),
(error: NodeJS.ErrnoException | null, buffer: Buffer) => {
if (error !== undefined && error !== null) {
reject(error);
} else {
const pack = JSON.parse(buffer.toString());
const dependencies = { ...pack.dependencies, ...pack.devDependencies };
Object.keys(dependencies).forEach((key) => {
dependencies[key] = {
version: dependencies[key]
}
});
resolve(dependencies);
}
}
},
)
});
}

displayNestVersions(dependencies: PackageJsonDependencies) {
this.buildNestVersionsMessage(dependencies).forEach((dependency) =>
console.info(dependency.name, chalk.blue(dependency.value)),
);
});
};
Expand Down

0 comments on commit 298eee0

Please sign in to comment.