Skip to content

Commit 7d96271

Browse files
committed
PackageJsonToMarkdown command now shows the package license name in the generated list.
1 parent 927f9c4 commit 7d96271

File tree

1 file changed

+32
-19
lines changed

1 file changed

+32
-19
lines changed

src/commands/packageJsonToMarkdown.ts

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -42,40 +42,40 @@ export class PackageJsonToMarkdown {
4242
let dependenciesMarkdown = '';
4343
let devDependenciesMarkdown = '';
4444
let peerDependenciesMarkdown = '';
45-
const dependenciesRequests: Promise<{ name: string, version: string, description: string }>[] = [];
45+
const dependenciesRequests: Promise<{ name: string, version: string, description: string, license: string }>[] = [];
4646
dependencies.sort(ArrayUtils.sortStrings).forEach(pckName => {
47-
dependenciesRequests.push(this.makeRequest(pckName));
47+
dependenciesRequests.push(this.fetchPackageInformation(pckName, workspaceDirectory));
4848
});
4949
Promise.all(dependenciesRequests).then(responses => {
5050
dependenciesMarkdown = this.updateMarkdownRow(responses, localPackages);
5151
}).then(() => {
52-
const devDependenciesRequests: Promise<{ name: string, version: string, description: string }>[] = [];
52+
const devDependenciesRequests: Promise<{ name: string, version: string, description: string, license: string }>[] = [];
5353
devDependencies.sort(ArrayUtils.sortStrings).forEach(pckName => {
54-
devDependenciesRequests.push(this.makeRequest(pckName));
54+
devDependenciesRequests.push(this.fetchPackageInformation(pckName, workspaceDirectory));
5555
});
5656
Promise.all(devDependenciesRequests).then(responses => {
5757
devDependenciesMarkdown = this.updateMarkdownRow(responses, localPackages);
5858
}).then(() => {
59-
const peerDependenciesRequests: Promise<{ name: string, version: string, description: string }>[] = [];
59+
const peerDependenciesRequests: Promise<{ name: string, version: string, description: string, license: string }>[] = [];
6060
peerDependencies.sort(ArrayUtils.sortStrings).forEach(pckName => {
61-
peerDependenciesRequests.push(this.makeRequest(pckName));
61+
peerDependenciesRequests.push(this.fetchPackageInformation(pckName, workspaceDirectory));
6262
});
6363
Promise.all(peerDependenciesRequests).then(responses => {
6464
peerDependenciesMarkdown = this.updateMarkdownRow(responses, localPackages);
6565
}).then(() => {
6666
const markdownContent =
6767
'# Package.json\n\n' +
6868
'## Dependencies\n\n' +
69-
'| Name | Local version | Latest Version | Description|\n' +
70-
'| ---- | ---- | ---- |:-----------|\n' +
69+
'| Name | Local version | Latest Version | License | Description|\n' +
70+
'| ---- | ---- | ---- | ---- |:-----------|\n' +
7171
dependenciesMarkdown + '\n' +
7272
'## Dev dependencies\n\n' +
73-
'| Name | Local version | Latest Version | Description|\n' +
74-
'| ---- | ---- | ---- |:-----------|\n' +
73+
'| Name | Local version | Latest Version | License | Description|\n' +
74+
'| ---- | ---- | ---- | ---- |:-----------|\n' +
7575
devDependenciesMarkdown + '\n' +
7676
'## Peer dependencies\n\n' +
77-
'| Name | Local version | Latest Version | Description|\n' +
78-
'| ---- | ---- | ---- |:-----------|\n' +
77+
'| Name | Local version | Latest Version | License | Description|\n' +
78+
'| ---- | ---- | ---- | ---- |:-----------|\n' +
7979
peerDependenciesMarkdown;
8080
const fsUtils = new FileSystemUtils();
8181
fsUtils.writeFileAndOpen(path.join(workspaceDirectory, this.config.packageJsonMarkdownFilename), markdownContent);
@@ -84,12 +84,12 @@ export class PackageJsonToMarkdown {
8484
});
8585
}
8686

87-
private updateMarkdownRow(responses: { name: string; version: string; description: string; }[], localPackages: { [pkgName: string]: string; }): string {
87+
private updateMarkdownRow(responses: { name: string; version: string; description: string; license: string }[], localPackages: { [pkgName: string]: string; }): string {
8888
let markdownStr: string = '';
8989
responses.sort((first, second) => (first.name.replace('@','') < second.name.replace('@','') ? -1 : 1)).forEach(response => {
9090
if (response) {
9191
const localVersion = localPackages[response.name];
92-
markdownStr += `| ${response.name} | ${localVersion} | ${response.version} | ${response.description} |\n`;
92+
markdownStr += `| ${response.name} | ${localVersion} | ${response.version} | ${response.license} | ${response.description} |\n`;
9393
}
9494
});
9595
return markdownStr;
@@ -107,21 +107,34 @@ export class PackageJsonToMarkdown {
107107
});
108108
}
109109

110-
private makeRequest(pckName: string): Promise<{ name: string, version: string, description: string }> {
110+
private fetchPackageInformation(pckName: string, workspaceDirectory: string): Promise<{ name: string, version: string, description: string, license: string }> {
111111
const uri = `/${pckName}`;
112-
const request = fetch.json(uri)
112+
const license = this.getLicenseInformationFromNodeModulesFolder(workspaceDirectory, pckName);
113+
const result = fetch.json(uri)
113114
.then((json: any) => {
114115
let packageName = json.name;
115116
packageName = packageName?.replace('|', '&#124;');
116117
let packageDescription = json.description;
117118
packageDescription = packageDescription?.replace('|', '&#124;');
118119
let packageVersion = json['dist-tags'].latest;
119120
packageVersion = packageVersion?.replace('|', '&#124;');
120-
return { name: packageName, description: packageDescription, version: packageVersion };
121+
return { name: packageName, description: packageDescription, version: packageVersion, license: license };
121122
})
122123
.catch(() => {
123-
return { name: pckName, description: 'N/A', version: 'N/A' };
124+
return { name: pckName, description: 'N/A', version: 'N/A', license: license };
124125
});
125-
return request;
126+
return result;
127+
}
128+
129+
private getLicenseInformationFromNodeModulesFolder(workspaceDirectory: string, pckName: string): string {
130+
const pckFolder = path.join(workspaceDirectory, 'node_modules', pckName);
131+
const packageJsonFile = path.join(pckFolder, 'package.json');
132+
const contents = fs.readFileSync(packageJsonFile).toString('utf8');
133+
const packageJson = JSON.parse(contents);
134+
if(packageJson.license) {
135+
return packageJson.license;
136+
} else{
137+
return 'N/A';
138+
}
126139
}
127140
}

0 commit comments

Comments
 (0)