Skip to content

Commit 5cef7e7

Browse files
committed
Add debug logging for missing packageUrl and improve package URL handling
1 parent 7f8a022 commit 5cef7e7

File tree

3 files changed

+74
-33
lines changed

3 files changed

+74
-33
lines changed

componentDetection.ts

Lines changed: 36 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,15 @@ export default class ComponentDetection {
7575

7676
var json: any = JSON.parse(results);
7777
json.componentsFound.forEach(async (component: any) => {
78+
// Add debug log to show components with missing packageUrl
79+
if (!component.component.packageUrl) {
80+
core.debug(`Component detected without packageUrl: ${JSON.stringify({
81+
id: component.component.id,
82+
name: component.component.name || 'unnamed',
83+
type: component.component.type || 'unknown'
84+
}, null, 2)}`);
85+
}
86+
7887
const packageUrl = ComponentDetection.makePackageUrl(component.component.packageUrl);
7988

8089
if (!packageCache.hasPackage(packageUrl)) {
@@ -121,23 +130,35 @@ export default class ComponentDetection {
121130
}
122131

123132
public static makePackageUrl(packageUrlJson: any): string {
124-
var packageUrl = `${packageUrlJson.Scheme}:${packageUrlJson.Type}/`;
125-
if (packageUrlJson.Namespace) {
126-
packageUrl += `${packageUrlJson.Namespace.replaceAll("@", "%40")}/`;
133+
// Handle case when packageUrlJson is null or undefined
134+
if (!packageUrlJson) {
135+
core.debug(`Warning: Received null or undefined packageUrlJson. Unable to create package URL.`);
136+
return ""; // Return a blank string for unknown packages
127137
}
128-
packageUrl += `${packageUrlJson.Name.replaceAll("@", "%40")}`;
129-
if (packageUrlJson.Version) {
130-
packageUrl += `@${packageUrlJson.Version}`;
131-
}
132-
if (typeof packageUrlJson.Qualifiers === "object"
133-
&& packageUrlJson.Qualifiers !== null
134-
&& Object.keys(packageUrlJson.Qualifiers).length > 0) {
135-
const qualifierString = Object.entries(packageUrlJson.Qualifiers)
136-
.map(([key, value]) => `${key}=${value}`)
137-
.join("&");
138-
packageUrl += `?${qualifierString}`;
138+
139+
try {
140+
var packageUrl = `${packageUrlJson.Scheme}:${packageUrlJson.Type}/`;
141+
if (packageUrlJson.Namespace) {
142+
packageUrl += `${packageUrlJson.Namespace.replaceAll("@", "%40")}/`;
143+
}
144+
packageUrl += `${packageUrlJson.Name.replaceAll("@", "%40")}`;
145+
if (packageUrlJson.Version) {
146+
packageUrl += `@${packageUrlJson.Version}`;
147+
}
148+
if (typeof packageUrlJson.Qualifiers === "object"
149+
&& packageUrlJson.Qualifiers !== null
150+
&& Object.keys(packageUrlJson.Qualifiers).length > 0) {
151+
const qualifierString = Object.entries(packageUrlJson.Qualifiers)
152+
.map(([key, value]) => `${key}=${value}`)
153+
.join("&");
154+
packageUrl += `?${qualifierString}`;
155+
}
156+
return packageUrl;
157+
} catch (error) {
158+
core.debug(`Error creating package URL from packageUrlJson: ${JSON.stringify(packageUrlJson, null, 2)}`);
159+
core.debug(`Error details: ${error}`);
160+
return ""; // Return a blank string for error cases
139161
}
140-
return packageUrl;
141162
}
142163

143164
private static async getLatestReleaseURL(): Promise<string> {

dist/index.js

Lines changed: 37 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)