discovery.manager
napt.discovery.manager
Discovery pipeline orchestration.
This module owns the top-level discover_recipe
entry point used by napt discover. It loads the merged configuration,
picks a flow based on the recipe's discovery.strategy value, persists
the discovery cache for the next run, records the release as a pending
publication candidate in deployment state, and returns the public
DiscoverResult.
Two Flows
Two flows feed into the same orchestration:
- Version-first (api_github, api_json, web_scrape and any other registered DiscoveryStrategy): the strategy returns a RemoteVersion, and resolve_with_cache decides whether to skip the download (version unchanged + file present) or fetch fresh.
- url_download (handled by
run_url_download):
downloads the file with HTTP conditional headers (
ETag/Last-Modified) and extracts the version from the file's metadata. Not a registered strategy because it cannot determine the version without the file.
Both flows return a StrategyResult, which this module unwraps into state-cache fields and the public result.
discover_recipe
discover_recipe(
recipe_path: Path,
output_dir: Path | None = None,
cache_file: Path | None = None,
state_dir: Path | None = None,
stateless: bool = False,
) -> DiscoverResult
Discovers the latest version of an app and resolves its installer.
Loads the recipe configuration, dispatches to the appropriate
discovery flow (version-first registered strategy or url_download),
persists the result to the discovery cache, records the release as the
pending publication candidate in deployment state when it differs from
the published version, and returns the public discovery result.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
recipe_path
|
Path
|
Path to the recipe YAML file. Must exist and be readable. |
required |
output_dir
|
Path | None
|
Directory to download the installer into. When
omitted, falls back to |
None
|
cache_file
|
Path | None
|
Path to the discovery cache file. When omitted,
falls back to |
None
|
state_dir
|
Path | None
|
Directory holding per-app deployment state files.
When omitted, falls back to |
None
|
stateless
|
bool
|
When True, skips loading and saving the discovery cache and deployment state entirely. Forces every run to behave as if no prior cache existed. |
False
|
Returns:
| Type | Description |
|---|---|
DiscoverResult
|
Public discovery result containing the resolved version, |
DiscoverResult
|
file path, and SHA-256 hash. |
Raises:
| Type | Description |
|---|---|
ConfigError
|
On missing or invalid configuration, including
an unknown |
NetworkError
|
On download or version-extraction failures from either flow. |
StateError
|
On a corrupted deployment state file. |
Source code in napt/discovery/manager.py
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | |