MCPcopy Create free account
hub / github.com/github/gh-aw / resolveTarget

Function resolveTarget

actions/setup/js/close_issue.cjs:105–144  ·  view source on GitHub ↗
(item, _config, resolvedTemporaryIds)

Source from the content-addressed store, hash-verified

103 ISSUE_CONFIG,
104 {
105 resolveTarget(item, _config, resolvedTemporaryIds) {
106 // Resolve and validate target repository
107 const repoResult = resolveAndValidateRepo(item, defaultTargetRepo, allowedRepos, "issue");
108 if (!repoResult.success) {
109 return { success: false, error: repoResult.error };
110 }
111 const { repo: entityRepo, repoParts } = repoResult;
112
113 // Determine issue number - either from explicit field or from context
114 if (item.issue_number !== undefined) {
115 // Try to resolve as temporary ID first, then fall back to integer parsing
116 const tempIdMap = loadTemporaryIdMapFromResolved(resolvedTemporaryIds);
117 const resolvedTarget = resolveRepoIssueTarget(item.issue_number, tempIdMap, repoParts.owner, repoParts.repo);
118 if (resolvedTarget.wasTemporaryId && resolvedTarget.resolved) {
119 const issueNumber = resolvedTarget.resolved.number;
120 core.info(`Resolved temporary ID '${item.issue_number}' to #${issueNumber}`);
121 return { success: true, entityNumber: issueNumber, owner: repoParts.owner, repo: repoParts.repo, entityRepo };
122 } else if (resolvedTarget.wasTemporaryId && !resolvedTarget.resolved) {
123 return {
124 success: false,
125 deferred: true,
126 error: resolvedTarget.errorMessage || `Unresolved temporary ID: ${item.issue_number}`,
127 };
128 }
129
130 // Not a temporary ID - parse as integer
131 const issueNumber = parseInt(String(item.issue_number), 10);
132 if (isNaN(issueNumber)) {
133 return { success: false, error: `Invalid issue number: ${item.issue_number}` };
134 }
135 return { success: true, entityNumber: issueNumber, owner: repoParts.owner, repo: repoParts.repo, entityRepo };
136 }
137
138 // Fall back to context issue number
139 const contextIssue = context.payload?.issue?.number;
140 if (!contextIssue) {
141 return { success: false, error: "No issue number available" };
142 }
143 return { success: true, entityNumber: contextIssue, owner: repoParts.owner, repo: repoParts.repo, entityRepo };
144 },
145
146 getDetails: getIssueDetails,
147

Callers 7

mainFunction · 0.70
mainFunction · 0.70
mainFunction · 0.70
processSafeOutputFunction · 0.70
mainFunction · 0.70
mainFunction · 0.70

Calls 3

resolveAndValidateRepoFunction · 0.85
resolveRepoIssueTargetFunction · 0.85

Tested by

no test coverage detected