Noteworthy Processors - autopkg/autopkg GitHub Wiki
There are tasks that recipe writers have found helpful when handling management systems and specific workflows or products. As described in Processor Locations, anyone can make their own helper processors and use them across multiple recipes as needed. You therefore sometimes will not need to solve the same problem others already have to process a particular product or perform a function. This page, which is community-modifiable by anyone with a GitHub account, encourages writers of processors that would be of use to folks outside of the core autopkg recipes to list them here.
Client Management Tool Related
| Client Management Tool | Processor |
|---|---|
| Jamf Pro | JamfUploader, NotifyPatchServer, PatchBot, UpdateTitleEditor |
| JumpCloud | JumpCloudImporter |
| FileWave | FileWaveImporter |
| LANRev | LANRevImporter |
| BigFix | AutoPkgBESEngine |
| SCCM | CmmacCreator |
| Intune | IntuneUploader |
| Kandji | KAPPA |
| Workspace ONE | WorkSpaceOneImporter |
| Fleet | FleetImporter |
Generic Utilities
| Processor | Description | Author |
|---|---|---|
| AppIconExtractor | AppIconExtractor examines an app and exports its icon as a PNG image file (reading the CFBundleIconFile property from an app's Info.plist and saving that image as a PNG file. Additionally, AppIconExtractor can create icon variations by compositing a secondary image on top of the app's icon. More information in this blog post. | @haircut |
| Archive | When this post-processor detects a new download or that a new package was built it will copy it to a the directory given in archive_directory. archive_directory can be on a file server, but it is your responsibility that the share is mounted and available at that path. | @scriptingosx |
| BinaryFileVersioner | Using the /usr/bin/otool command returns the version number of a binary file that has an embedded Info.plist. | @homebysix |
| CaseChanger | Changes the case of a variable (capitalize, lower, title, or upper) | @dataJAR |
| ChoicesXMLGenerator | Generates a choices.xml file for use with an installer. A postinstall script is required to run the installer with the choices.xml. | @grahampugh |
| DatetimeOutputter | Output the current date and time, and optionally output future or past dates and times for use in other processors. | @haircut |
| DirectoryList | Returns a list of items in a subdirectory as a string, separated by commas. | @nmcspadden |
| DistributionPackageCreator | Creates a new distribution package using an existing component installer package generated by AutoPkg. Functionally identical to FlatToDistPkg (see below). | @rtrouton |
| ExecutableFileVersioner | For when the only way to reliably collect a version is to call the executable directly - ex. autopkg version. |
@apizz |
| FileAppender | This processor will simply append a string on to the end of a file. This is useful if an AutoPkg recipe needs to add more variables or other data into a file that already exists (as part of a download, or something created from a previous FileCreator processor). | @nmcspadden |
| FileTemplate | This processor can be used to read a file with placeholder variables and write the result to a new file (presumably in the package being built). I use the FileTemplate processor in the FirefoxPrefs.pkg recipe to insert a javascript settings file with the proper values. | @scriptingosx |
| FlatToDistPkg | Converts a flat package to a distribution-style package. Functionally identical to DistributionPackageCreator (see above). | @davidbpirie |
| GoToMeetingURLProvider | Provides a download URL for the latest GoToMeeting release. | @thenikola |
| GPGSignatureVerifier | Verifies GPG signatures | @gerardkok |
| IconGenerator | IconExtractor is an extension of AppIconExtractor, with the same functionality for extracting an icon and generating variants, but with the alternative option of supplying a path to any .png image for occasions where is no app to point at. Usage is exactly the same, but instead of supplying a value for source_app, you can instead supply source_icon. You don't need to supply a path to the icon if it's in the same repo or folder as the recipe being run. More information in this blog post. |
@grahampugh |
| InstallsArrayFineTuning | Change an installs array to allow fine-tuning of a type. | @nmcspadden |
| JamfRecipeMaker | Automates the generation of .jamf recipes from inputted .pkg or .jss recipes. |
@grahampugh |
| LastRecipeRunChecker | Reads values from the JSON file generated by the LastRecipeRunResult processor, allowing re-use of existing packages and version information. |
@grahampugh |
| LastRecipeRunResult | A post-processor which writes certain information from the recipe run into a JSON file in the Cache folder, which can be then read in a future autopkg run using the LastRecipeRunChecker pre-processor. This allows you pass package and version information on to another recipe so that the recipe does not have to download and recreate the package again. |
@grahampugh |
| MD5Checksum | Calculate a message-digest fingerprint (checksum) for a file | @n8felton |
| ModeChanger | chmod the downloaded item - remember that munki can handle that in a pkginfo if it's a drag-drop type item. |
@jessepeterson |
| MunkiPkginfoReceiptsEditor | Modifies the "optional" state of receipts in a Munki pkginfo. | @keeleysam |
| Notification | This post-processor will show a user notification when the processor detects a new download or that a new package was built. May act strangely when run with no user logged in. | @scriptingosx |
| PackageInfoVersioner | This processor provides a way to get a version number from the PackageInfo file inside a distribution/bundle style package. This processor specifically looks for the "pkg-info" XML tag inside the PackageInfo file and uses that as the version. This is helpful for bundle packages that provide multiple components with unique / differing version numbers, and there's no single item you can reliably use for versioning. The simplest usage is to use something like FileFinder to locate the PackageInfo file inside the bundle package you've downloaded or unarchived and then call this processor. | @nmcspadden |
| PkgInfoVersioner | Finds a package given its package ID and modifies the PackageInfo version, resulting in the receipt database containing the modified version information. | @n8felton |
| PkgSigner | This processor is designed to add code signing by an Apple Developer ID: Installer to an installer package generated by AutoPkg. Certain initial setup requirements are described in the processor Description. Authored by Paul Suh. | @rtrouton (host) |
| RevealInFinder | This post-processor will open a new Finder window and select the new file. It will either use a newly archived file, a newly built package or a new download (in that order). May not work when no user is logged in. | @scriptingosx |
| Rsync | This processor calls out to a locally installed rsync (defaults to /usr/bin/rsync) to rsync between a source and destination. You can specify a path to a specific rsync binary if needed. Arguments can be passed in, and the string provided to the "rsync_arguments" processor input variable will be passed directly into the subprocess call to rsync. See the rsync man page for acceptable arguments. NOTE: The leading hyphens before your arguments are required! Please note that we have so far only used this for local source -> destination copying, and have not tested a very wide a variety of rsync arguments - so there may be some things that get passed in that don't behave properly in this context. If you do find some arguments that cause problems, please let us know! | @nmcspadden |
| SHA1Checksum | Calculate a message-digest fingerprint (checksum) for a file | @n8felton |
| SHA256Checksum | Calculate a message-digest fingerprint (checksum) for a file | @n8felton |
| SHAChecksum | This processors calls out to /usr/bin/shasum to calculate a checksum on a file. You can specify the SHA type (to be passed to the -a argument) as an input variable. |
@nmcspadden |
| SMBMounter and SMBUnmounter | Processors for mounting and unmounting SMB shares. | @grahampugh |
| SourceForgeBestReleaseURLProvider | Provides URLs to the "Best Release" of a project on SourceForge. The "Best Release" is set by the project maintainer, and while one would think that should always be the "latest stable" release, that is not always the case. Always verify output. | @n8felton |
| SourceForgeURLProvider | Provides URL to the latest file that matches a pattern for a particular SourceForge project. | @jessepeterson |
| StringReplacer | This processor replaces a string within a variable with another string, rather like using sed. An example would be to remove a file suffix from a string. |
@grahampugh |
| SubDirectoryList | This is a more complex processor with more specific usage. For a given root path, this processor will walk through and create two lists: one for all files found relative to the root path, and one for all directories found relative to the root path. Both of these lists are stored as strings, with each item separated by the contents of the "suffix_string" input variable (which defaults to ", " comma). This doesn't have too much use in most AutoPkg recipes, but is the foundational key for translating packages into other management suites that require the pre-creation of subdirectories before placing files on the disk. | @nmcspadden |
| TextSearcher | Performs a regular expression match on the text passed via the text_in input variable. (Same code as URLTextSearcher, but searches arbitrary text rather than a web page. Useful for extracting info from a filename using a regular expression.) | @jazzace |
| VersionRegexGenerator | Generates a regex which encompasses the supplied version plus any realistic newer version. Useful in scoping computer groups in Jamf Pro for Munki-like patch version control. | @grahampugh |
| VersionSplitter | Splits version numbers and returns the specified index. | @homebysix |
| VirusTotalAnalyzer | Query downloaded files from the VirusTotal database. | @hjuutilainen |
| YAML | Parse YAML into usable autopkg variables | @n8felton |
Older Commit
While these were part of an early PR from @paulsuh that has not seen activity in some time, there are many interesting processors in this GitHub comparison like the PkgSigner and (munki-specific) PkgInfoTemplateCreator processors.