Skip to content

Commit 1c4bf31

Browse files
committed
Bugfix: The Package json to Markdown command failed if the node_modules folder did not exist.
1 parent b01634f commit 1c4bf31

File tree

3 files changed

+43
-15
lines changed

3 files changed

+43
-15
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Change Log
22

3+
## Version 1.4.5
4+
5+
- Bugfix: The Package json to Markdown command failed if the node_modules folder did not exist.
6+
37
## Version 1.4.4
48

59
- Bugfix: Not all modules was recognized by the 'Generate a Markdown file of all modules in the current project.' command.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"displayName": "AngularTools",
55
"description": "AngularTools is a collection of tools for exploring an Angular project, help you with documenting, reverse engineering a project or help when refactoring.",
66
"icon": "images/logo.png",
7-
"version": "1.4.4",
7+
"version": "1.4.5",
88
"license": "MIT",
99
"repository": "https://github.com/CoderAllan/vscode-angulartools",
1010
"author": {

src/commands/packageJsonToMarkdown.ts

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -65,20 +65,38 @@ export class PackageJsonToMarkdown extends CommandBase {
6565
Promise.all(peerDependenciesRequests).then(responses => {
6666
peerDependenciesMarkdown = this.updateMarkdownRow(responses, localPackages);
6767
}).then(() => {
68+
if(dependenciesMarkdown === '') {
69+
dependenciesMarkdown = 'No dependencies specified.';
70+
} else {
71+
dependenciesMarkdown =
72+
'| Name | Local version | Latest Version | License | Description|\n' +
73+
'| ---- | ---- | ---- | ---- |:-----------|\n' +
74+
dependenciesMarkdown;
75+
}
76+
if(devDependenciesMarkdown === '') {
77+
devDependenciesMarkdown = 'No dev dependencies specified.';
78+
} else {
79+
devDependenciesMarkdown =
80+
'| Name | Local version | Latest Version | License | Description|\n' +
81+
'| ---- | ---- | ---- | ---- |:-----------|\n' +
82+
devDependenciesMarkdown;
83+
}
84+
if(peerDependenciesMarkdown === '') {
85+
peerDependenciesMarkdown = 'No peer dependencies specified.';
86+
} else {
87+
peerDependenciesMarkdown =
88+
'| Name | Local version | Latest Version | License | Description|\n' +
89+
'| ---- | ---- | ---- | ---- |:-----------|\n' +
90+
peerDependenciesMarkdown;
91+
}
6892
const markdownContent =
6993
'# Package.json\n\n' +
7094
'## Dependencies\n\n' +
71-
'| Name | Local version | Latest Version | License | Description|\n' +
72-
'| ---- | ---- | ---- | ---- |:-----------|\n' +
7395
dependenciesMarkdown + '\n' +
7496
'## Dev dependencies\n\n' +
75-
'| Name | Local version | Latest Version | License | Description|\n' +
76-
'| ---- | ---- | ---- | ---- |:-----------|\n' +
7797
devDependenciesMarkdown + '\n' +
7898
'## Peer dependencies\n\n' +
79-
'| Name | Local version | Latest Version | License | Description|\n' +
80-
'| ---- | ---- | ---- | ---- |:-----------|\n' +
81-
peerDependenciesMarkdown;
99+
peerDependenciesMarkdown + '\n';
82100
const fsUtils = new FileSystemUtils();
83101
fsUtils.writeFileAndOpen(path.join(workspaceDirectory, this.config.packageJsonMarkdownFilename), markdownContent);
84102
});
@@ -88,7 +106,7 @@ export class PackageJsonToMarkdown extends CommandBase {
88106

89107
private updateMarkdownRow(responses: { name: string; version: string; description: string; license: string }[], localPackages: { [pkgName: string]: string; }): string {
90108
let markdownStr: string = '';
91-
responses.sort((first, second) => (first.name.replace('@','') < second.name.replace('@','') ? -1 : 1)).forEach(response => {
109+
responses.sort((first, second) => (first.name.replace('@', '') < second.name.replace('@', '') ? -1 : 1)).forEach(response => {
92110
if (response) {
93111
const localVersion = localPackages[response.name];
94112
markdownStr += `| ${response.name} | ${localVersion} | ${response.version} | ${response.license} | ${response.description} |\n`;
@@ -100,13 +118,13 @@ export class PackageJsonToMarkdown extends CommandBase {
100118
private updateLocalPackagesDictionary(dict: { [pkgName: string]: string; }, localPackages: { [pkgName: string]: string; }) {
101119
Object.entries(dict).forEach(([pkgName, version]) => {
102120
if (localPackages[pkgName] !== undefined) {
103-
if(!localPackages[pkgName].includes(String(version))) {
121+
if (!localPackages[pkgName].includes(String(version))) {
104122
localPackages[pkgName] += ', ' + String(version);
105123
}
106124
} else {
107125
localPackages[pkgName] = String(version);
108126
}
109-
});
127+
});
110128
}
111129

112130
private fetchPackageInformation(pckName: string, workspaceDirectory: string): Promise<{ name: string, version: string, description: string, license: string }> {
@@ -131,11 +149,17 @@ export class PackageJsonToMarkdown extends CommandBase {
131149
private getLicenseInformationFromNodeModulesFolder(workspaceDirectory: string, pckName: string): string {
132150
const pckFolder = path.join(workspaceDirectory, 'node_modules', pckName);
133151
const packageJsonFile = path.join(pckFolder, 'package.json');
134-
const contents = fs.readFileSync(packageJsonFile).toString('utf8');
135-
const packageJson = JSON.parse(contents);
136-
if(packageJson.license) {
152+
let packageJson = undefined;
153+
try {
154+
const contents = fs.readFileSync(packageJsonFile).toString('utf8');
155+
packageJson = JSON.parse(contents);
156+
}
157+
catch {
158+
packageJson = undefined;
159+
}
160+
if (packageJson !== undefined && packageJson.license) {
137161
return packageJson.license;
138-
} else{
162+
} else {
139163
return 'N/A';
140164
}
141165
}

0 commit comments

Comments
 (0)