A nifty little library for reading unique identifiers from .app, .dSYM, .bundle, .xcarchive, .framework, .dylib, or macOS binary files.
- Install this package globally
npm i -g macho-uuid - Run macho-uuid with
-hto see the latest usage information:
bobby@BugSplat % ~ % macho-uuid -h
macho-uuid
A command line utility and library for reading the UUID of a .app, .dSYM,
.bundle, .xcarchive, .framework, .dylib, or macOS binary file.
Usage
--path string Path to a .app, .dSYM, .bundle, .xcarchive, .framework, .dylib or
macOS binary file.
-h, --help Print this usage guide.
Example
macho-uuid path-to-macho-bundle-or-fat-file
Links
π https://bugsplat.com
π» https://github.com/BugSplat-Git/macho-uuid
π [email protected]- Run macho-uuid specifying a path to a
.app,.dSYM,.bundle,.xcarchive,.framework,.dylib, or macOS binary file:
bobby@BugSplat % ~ % macho-uuid ./path/to/bugsplat-ios.app
UUID: 59686D50-E0A4-3FB9-AD27-BAADAD47E0BC (arm64) spec/support/bugsplat-ios.app/bugsplat-ios
UUID: C3E6032C-B73E-39D5-9D87-2ACC2A515240 (arm64) spec/support/bugsplat-ios.app/Frameworks/bugsplat.framework/bugsplat
UUID: 39D9CB72-DE66-3CA6-B85B-BFA04B60782E (x86_64) spec/support/bugsplat-ios.app/Frameworks/bugsplat.framework/HockeySDKResources.bundle/Contents/MacOS/HockeySDKResources
UUID: 7F2B35C3-9745-33D1-B991-EC0DA93CC085 (arm64) spec/support/bugsplat-ios.app/Frameworks/bugsplat.framework/HockeySDKResources.bundle/Contents/MacOS/HockeySDKResources- Install this package locally
npm i macho-uuid.
Use the createMachoFiles factory to recursively create an array of MachoFile instances for a given path.
import { createMachoFiles } from 'macho-uuid';
const machoFiles = await createMachoFiles('./path/to/bugsplat.app');
for (const file of machoFiles) {
const uuid = await file.getUUID();
console.log(uuid);
}To read Mach-O headers in the browser (e.g., from a File object obtained via drag-and-drop), use the WebReader with MachoFile or FatFile.
Note: You'll need a polyfill for
Bufferin your web environment (e.g.,bufferpackage).
import { MachoFile, FatFile, WebReader } from 'macho-uuid';
// Assume 'file' is a File object from an input or drag event
const reader = new WebReader(file);
if (await FatFile.isFat(reader)) {
const fatFile = new FatFile(reader);
const machos = await fatFile.getMachos();
for (const macho of machos) {
console.log(await macho.getUUID());
}
} else if (await MachoFile.isMacho(reader)) {
const macho = new MachoFile(reader, 0, file.size);
console.log(await macho.getUUID());
}BugSplat is a software crash and error reporting service with support for macOS, iOS, Qt, Unreal Engine and many more. BugSplat automatically captures critical diagnostic data such as stack traces, log files, and other runtime information. BugSplat also provides automated incident notifications, a convenient dashboard for monitoring trends and prioritizing engineering efforts, and integrations with popular development tools to maximize productivity and ship more profitable software.
