feat: add clipboard file handling for Mattermost and implement batch debounce functionality
This commit is contained in:
40
scripts/iphone-photo-inbox/copy_files_to_clipboard.swift
Executable file
40
scripts/iphone-photo-inbox/copy_files_to_clipboard.swift
Executable file
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env swift
|
||||
|
||||
import AppKit
|
||||
import Foundation
|
||||
|
||||
let paths = CommandLine.arguments.dropFirst()
|
||||
|
||||
guard !paths.isEmpty else {
|
||||
fputs("usage: copy_files_to_clipboard.swift <path> [path...]\n", stderr)
|
||||
exit(64)
|
||||
}
|
||||
|
||||
let urls = paths.map { URL(fileURLWithPath: $0).standardizedFileURL }
|
||||
let missing = urls.filter { !FileManager.default.fileExists(atPath: $0.path) }
|
||||
|
||||
guard missing.isEmpty else {
|
||||
for url in missing {
|
||||
fputs("missing file: \(url.path)\n", stderr)
|
||||
}
|
||||
exit(66)
|
||||
}
|
||||
|
||||
let pasteboard = NSPasteboard.general
|
||||
pasteboard.clearContents()
|
||||
|
||||
let wroteObjects = pasteboard.writeObjects(urls as [NSURL])
|
||||
|
||||
let filenamesType = NSPasteboard.PasteboardType("NSFilenamesPboardType")
|
||||
let pathsList = urls.map(\.path)
|
||||
let wroteFilenames = pasteboard.setPropertyList(pathsList, forType: filenamesType)
|
||||
let wrotePlainText = pasteboard.setString(pathsList.joined(separator: "\n"), forType: .string)
|
||||
|
||||
if wroteObjects || wroteFilenames || wrotePlainText {
|
||||
let itemCount = pasteboard.pasteboardItems?.count ?? 0
|
||||
fputs("pasteboard files=\(urls.count) items=\(itemCount) objects=\(wroteObjects) filenames=\(wroteFilenames) text=\(wrotePlainText)\n", stderr)
|
||||
exit(0)
|
||||
}
|
||||
|
||||
fputs("failed to write file URLs to pasteboard\n", stderr)
|
||||
exit(1)
|
||||
Reference in New Issue
Block a user