Installomator¶
See also
Catalog Sources for what each catalog source contributes.
- class InstallomatorClient(concurrency: int = 5, api: HTTPClient | None = None)[source]¶
Wrapper around the Installomator project (the macOS automated-installer script set).
This class provides methods for discovering, fetching, and matching Installomator labels to
PatchTitleobjects. Discovery uses the lightweightLabels.txtfile at the Installomator repo root; individual.shfragments are fetched lazily and only for matches.- Parameters:
concurrency (int) – Maximum concurrent requests for label fetches. Defaults to 5.
api (
HTTPClient| None) – HTTP client used for fetches against Installomator’s GitHub. Defaults to a freshHTTPClient. No Jamf credentials required, so library callers can useInstallomatorClient()standalone to enumerate or fetch labels. Whenmatch()is needed, pass a configuredJamfClientinstead (it inherits fromHTTPClientand adds the Jamf-specificget_app_names()call thatmatch()requires).PatcherClientinjects its sharedJamfClientautomatically.
- async list_available_labels() set[str][source]¶
Return the set of every label name currently available in Installomator.
Fetches and parses
_LABELS_TXT_URL. The result is cached on the instance for the session; subsequent calls do not re-fetch.- Returns:
A set of label script names (e.g.
{"googlechrome", "1password8", ...}).- Return type:
- Raises:
PatcherError – If the labels file cannot be fetched.
- async get_label(name: str) Label | None[source]¶
Fetch and parse a single Installomator label by script name.
Lookup order:
Instance cache (
self._labels_by_name)On-disk cache (
~/Library/Application Support/Patcher/.labels/<name>.sh)HTTP fetch from
_FRAGMENT_URL_TEMPLATE
- async get_labels(names: Iterable[str] | None = None) list[Label][source]¶
Fetch and parse multiple Installomator labels in parallel.
- Parameters:
names (Iterable[str] | None) – Specific label script names to fetch. If
None(the default), fetches every label listed in_LABELS_TXT_URL, typically ~700 HTTP calls on first run and served from disk cache on subsequent runs. Prefer passing a concrete name list when you know what you need.- Returns:
List of successfully parsed
Labelobjects. Labels that fail to fetch, hit an ignored Team ID, or fail validation are silently omitted (warnings are logged).- Return type:
list[
Label]
InstallomatorClient covers label discovery and fetch:
list_available_labels(),
get_label(),
get_labels().
The match algorithm itself lives at module level in
patcher.core.matching so other backends can exercise it without
instantiating the client.
Note
The shell-pipeline resolver that historically lived alongside InstallomatorClient (resolve, _exec_*, is_shell_expression, looks_like_clean_http_url, Resolved/Unresolvable/InvalidOutput) moved to patcher_api.installomator.resolver as part of the Patcher API workspace. Resolution is an ingest concern; the patcher package consumes resolved values via the API rather than running pipelines itself.