in src/github/junie/attachment-downloader.ts [144:179]
export async function downloadJiraAttachmentsAndRewriteText(
text: string,
attachments: Array<JiraAttachment>
): Promise<string> {
if (attachments.length === 0) {
return text;
}
let updatedText = text;
// Find all Jira wiki markup references: !filename.ext! or !filename.ext|params!
const matches = [...text.matchAll(JIRA_ATTACHMENT_PATTERN)];
for (const match of matches) {
const fullMatch = match[0]; // Full match: !filename.jpg|width=100!
const filename = match[1]; // Captured filename: filename.jpg
// Find the attachment by filename
const attachment = attachments.find(att => att.filename === filename);
if (attachment) {
try {
const localPath = await downloadJiraAttachment(attachment.content, filename);
// Replace the entire wiki markup with just the local path
updatedText = updatedText.replace(fullMatch, localPath);
} catch (error) {
console.error(`Failed to download Jira attachment: ${filename}`, error);
// Keep the original markup if download fails
}
} else {
console.warn(`Jira attachment not found: ${filename}`);
}
}
return updatedText;
}