(options = {})
| 1177 | } |
| 1178 | |
| 1179 | function saveClipboardImage(options = {}) { |
| 1180 | const { cwd, prefix } = options || {} |
| 1181 | const resolvedCwd = resolveCwd(cwd) |
| 1182 | const image = clipboard.readImage() |
| 1183 | if (!image || image.isEmpty()) { |
| 1184 | return { success: false, error: 'clipboard-no-image' } |
| 1185 | } |
| 1186 | const buffer = image.toPNG() |
| 1187 | if (!buffer || buffer.length === 0) { |
| 1188 | return { success: false, error: 'clipboard-image-empty' } |
| 1189 | } |
| 1190 | const safePrefix = normalizeImagePrefix(prefix) |
| 1191 | const pasteDir = ensurePasteDirectory(resolvedCwd) |
| 1192 | if (!pasteDir) { |
| 1193 | return { success: false, error: 'create-paste-dir-failed' } |
| 1194 | } |
| 1195 | const { fileName, filePath } = createUniqueImageName(pasteDir, safePrefix) |
| 1196 | |
| 1197 | try { |
| 1198 | fs.writeFileSync(filePath, buffer) |
| 1199 | } catch (err) { |
| 1200 | return { success: false, error: err.message } |
| 1201 | } |
| 1202 | |
| 1203 | hideFile(filePath) |
| 1204 | |
| 1205 | if (isGitRepoRoot(resolvedCwd)) { |
| 1206 | ensureGitignoreLine(resolvedCwd, `${PASTE_IMAGE_DIR}/`) |
| 1207 | } |
| 1208 | |
| 1209 | return { success: true, fileName, filePath } |
| 1210 | } |
| 1211 | |
| 1212 | function startTerminal(options = {}) { |
| 1213 | if (!pty) { |
no test coverage detected