qontract-development-cli 0.19.1__tar.gz → 0.20.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. qontract_development_cli-0.20.0/PKG-INFO +436 -0
  2. qontract_development_cli-0.20.0/README.md +415 -0
  3. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/pyproject.toml +33 -32
  4. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/cli.py +7 -5
  5. qontract_development_cli-0.20.0/qontract_development_cli/commands/agentic.py +42 -0
  6. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/commands/config.py +16 -11
  7. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/commands/env.py +4 -3
  8. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/commands/profile.py +79 -66
  9. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/config.py +16 -10
  10. qontract_development_cli-0.20.0/qontract_development_cli/headless.py +224 -0
  11. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/models.py +54 -33
  12. qontract_development_cli-0.20.0/qontract_development_cli/orchestration.py +89 -0
  13. qontract_development_cli-0.20.0/qontract_development_cli/process.py +121 -0
  14. qontract_development_cli-0.20.0/qontract_development_cli/report.py +43 -0
  15. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/shell.py +64 -39
  16. qontract_development_cli-0.20.0/qontract_development_cli/skill.py +46 -0
  17. qontract_development_cli-0.20.0/qontract_development_cli/skills/qd-integration-dry-run/SKILL.md +222 -0
  18. qontract_development_cli-0.20.0/qontract_development_cli/skills/qd-setup/SKILL.md +185 -0
  19. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/templates/api.yml.j2 +8 -1
  20. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/templates/opa.yml.j2 +8 -0
  21. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/templates/reconcile.yml.j2 +5 -0
  22. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/templates/server.yml.j2 +7 -0
  23. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/templates/subscriber.yml.j2 +8 -1
  24. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/templates/vault.yml.j2 +6 -0
  25. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/templates/worker.yml.j2 +9 -2
  26. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/utils.py +2 -0
  27. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/watchdog.py +10 -2
  28. qontract_development_cli-0.19.1/PKG-INFO +0 -383
  29. qontract_development_cli-0.19.1/README.md +0 -362
  30. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/.gitignore +0 -0
  31. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/__init__.py +0 -0
  32. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/__main__.py +0 -0
  33. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/commands/__init__.py +0 -0
  34. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/completions.py +0 -0
  35. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/templates/cache.yml.j2 +0 -0
  36. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/templates/compose.override.yml.j2 +0 -0
  37. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/templates/compose.yml.j2 +0 -0
  38. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/templates/internal-redhat-ca.yml.j2 +0 -0
  39. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/templates/prep-worktree.sh.j2 +0 -0
  40. {qontract_development_cli-0.19.1 → qontract_development_cli-0.20.0}/qontract_development_cli/templates.py +0 -0
@@ -0,0 +1,436 @@
1
+ Metadata-Version: 2.5
2
+ Name: qontract-development-cli
3
+ Version: 0.20.0
4
+ Summary: Helper tool for qontract-reconcile development
5
+ Project-URL: homepage, http://github.com/chassing/qontract-development-cli
6
+ Project-URL: repository, http://github.com/chassing/qontract-development-cli
7
+ Project-URL: documentation, http://github.com/chassing/qontract-development-cli
8
+ Author-email: Christian Assing <cassing@redhat.com>
9
+ License: MIT
10
+ Requires-Python: >=3.14
11
+ Requires-Dist: appdirs~=1.4.4
12
+ Requires-Dist: getkey~=0.6.5
13
+ Requires-Dist: jinja2~=3.1
14
+ Requires-Dist: pydantic-settings~=2.6
15
+ Requires-Dist: pydantic~=2.9
16
+ Requires-Dist: pyyaml~=6.0.2
17
+ Requires-Dist: rich~=15.0
18
+ Requires-Dist: typer~=0.27.0
19
+ Requires-Dist: watchfiles~=1.3.0
20
+ Description-Content-Type: text/markdown
21
+
22
+ # Qontract Development CLI
23
+
24
+ [![PyPI](https://img.shields.io/pypi/v/qontract-development-cli)][pypi-link]
25
+ [![Python Version from PEP 621 TOML][python-versions]][pypi-link]
26
+ ![PyPI - License](https://img.shields.io/pypi/l/qontract-development-cli)
27
+
28
+ Qontract Development CLI supports your daily [qontract-reconcile][qontract-reconcile] development work.
29
+
30
+ - [Recommended Installation Method](#recommended-installation-method)
31
+ - [Alternative Installation Methods](#alternative-installation-methods)
32
+ - [Quickstart](#quickstart)
33
+ - [Features](#features)
34
+ - [Examples](#examples)
35
+ - [Usage](#usage)
36
+ - [Let your coding agent check an integration](#let-your-coding-agent-check-an-integration)
37
+ - [Config](#config)
38
+ - [Global Settings](#global-settings)
39
+ - [Environments](#environments)
40
+ - [Environment Settings](#environment-settings)
41
+ - [Profiles](#profiles)
42
+ - [--no-dry-run](#--no-dry-run)
43
+ - [Profile Settings](#profile-settings)
44
+ - [Connecting your IDE to QR](#connecting-your-ide-to-qr)
45
+ - [PR/MR support](#prmr-support)
46
+ - [Development](#development)
47
+ - [Release](#release)
48
+
49
+ ## Recommended Installation Method
50
+
51
+ The recommended way to install `qontract-development-cli` is to use the [uv](https://docs.astral.sh/uv/) tool:
52
+
53
+ ```shell
54
+ uv tool install qontract-development-cli
55
+ ```
56
+
57
+ and upgrade an existing installation with:
58
+
59
+ ```shell
60
+ uv tool upgrade qontract-development-cli
61
+ ```
62
+
63
+ ## Alternative Installation Methods
64
+
65
+ You can install this library from [PyPI][pypi-link] with `pip`:
66
+
67
+ ```shell
68
+ python3 -m pip install qontract-development-cli
69
+ ```
70
+
71
+ or install it with `pipx`:
72
+
73
+ ```shell
74
+ pipx install qontract-development-cli
75
+ ```
76
+
77
+ and upgrade an existing installation with:
78
+
79
+ ```shell
80
+ pipx upgrade qontract-development-cli
81
+ ```
82
+
83
+ ## Quickstart
84
+
85
+ - Create initial configuration
86
+
87
+ ```shell
88
+ qd config init
89
+ ```
90
+
91
+ ![qd init](/demo/qd_config_init.gif)
92
+
93
+ - Create a profile `sql-query` to run the `sql-query` integration
94
+
95
+ ```shell
96
+ qd profile create sql-query
97
+ ```
98
+
99
+ ![qd profile create](/demo/qd_profile_create.gif)
100
+
101
+ - Run `sql-query` profile
102
+
103
+ ```shell
104
+ qd profile run dev sql-query
105
+ ```
106
+
107
+ ![qd sql_query](/images/profile_run_sql_query.svg)
108
+
109
+ ## Features
110
+
111
+ Qontract Development CLI currently provides the following features (get help with `-h` or `--help`):
112
+
113
+ - Run `qontract-reconcile` and `qontract-server` as docker containers on your local machine
114
+ - Support for different App-Interface environments (dev, prod, ...) via the `env` command
115
+ - Configure your [qontract-reconcile integration][qontract-reconcile] with the `profile` command
116
+ - Support pull request reviews (see `profile create`)
117
+ - Bootstrap your initial configurations with the `config` command
118
+ - Shell auto-completion (see `qd --help`)
119
+ - Automatically restart `qontract-reconcile` container when files change
120
+ - Automatically rebuild the App-Interface bundle and restart the `qontract-server` container when files change
121
+
122
+ ## Examples
123
+
124
+ Take a look at the [examples](examples) directory for different profile examples.
125
+
126
+ ## Usage
127
+
128
+ The following sections describe all available commands, their options and use-cases.
129
+
130
+ ### Let your coding agent check an integration
131
+
132
+ Your coding agent can set up qd and check integrations against real configuration
133
+ using your local code—without attaching an IDE debugger or watching logs yourself.
134
+
135
+ Enable agent support once:
136
+
137
+ ```shell
138
+ qd agentic skill-install
139
+ ```
140
+
141
+ Then ask your agent:
142
+
143
+ > Help me set up qd for local integration development.
144
+
145
+ Or, when you're ready to test:
146
+
147
+ > Use qd to dry-run automated-actions-config and summarize the results.
148
+
149
+ The agent asks for missing details and your approval, then reviews the complete
150
+ output and reports failures or gaps in coverage.
151
+
152
+ ### Config
153
+
154
+ Manage global qontract-development-cli configuration.
155
+
156
+ `qd config [sub-cmd] --help`
157
+
158
+ - **edit**: open the configuration file in your favorite editor
159
+ - **init**: create a default configuration
160
+
161
+ #### Global Settings
162
+
163
+ | **Key** | **Description** | **Default** |
164
+ | --------------------------- | ------------------------------------- | ------------------------------------ |
165
+ | debug | Enable/disable debug mode | false |
166
+ | defaults_profile | Name of defaults profile | defaults |
167
+ | docker_compose_project_name | Docker compose project name | qontract-development |
168
+ | editor | Your favorite editor | $EDITOR or vim |
169
+ | environments_dir | Directory to store environment files | User config directory / environments |
170
+ | profiles_dir | Directory to store profile files | User config directory / profiles |
171
+ | worktrees_dir | Directory to store git repo worktrees | User cache directory / worktrees |
172
+
173
+ ### Environments
174
+
175
+ An environment specifies app-interface instance settings, e.g., **dev** vs. **prod** config and path to the actual app-interface instance.
176
+
177
+ `qd env [sub-cmd] --help`
178
+
179
+ - **edit**: Create/edit an environment file in your editor.
180
+ - **ls**: List all available environments.
181
+ - **rm**: Remove environment.
182
+ - **show**: Display environment.
183
+
184
+ #### Environment Settings
185
+
186
+ | **Key** | **Description** | **Default** |
187
+ | ---------------------------------- | ------------------------------------------------ | ---------------------------------------------- |
188
+ | **app_interface_path** | Path to local app-interface instance | ~/workspace/app-interface |
189
+ | app_interface_state_bucket | S3 bucket | empty |
190
+ | app_interface_state_bucket_account | AWS S3 account | empty |
191
+ | **config** | app-interface config | ~/workspace/qontract-reconcile/config.dev.toml |
192
+ | container_platform | Default Docker container platform for all images | linux/amd64 |
193
+ | gitlab_pr_submitter_queue_url | Gitlab pr submitter queue url | |
194
+ | run_qontract_api | Run qontract-api container | false |
195
+ | run_qontract_api_subscriber | Run qontract-api-subscriber container | false |
196
+ | run_qontract_api_worker | Run qontract-api-worker container | false |
197
+ | run_cache | Run cache (Redis) container | false |
198
+ | run_qontract_reconcile | Run qontract-reconcile container | true |
199
+ | run_qontract_server | Run qontract-server container | true |
200
+ | run_vault | Run vault container | false |
201
+
202
+ > :point_right: **Bold keys** are mandatory or should be customized.
203
+
204
+ ### Profiles
205
+
206
+ A profile specifies all settings to run a qontract-reconcile integration (e.g., *sql-query*).
207
+
208
+ `qd profile [sub-cmd] --help`
209
+
210
+ - **create**: Create a new profile to run an integration.
211
+
212
+ Supports the creation of a new profile from an open PR/MR. See `$ qd profile create --help` for all available options.
213
+
214
+ - **edit**: Edit a profile in your editor.
215
+ - **ls**: List all available profiles.
216
+ - **rm**: Remove profile.
217
+ - **run**: Run a profile.
218
+ - **show**: Display profile.
219
+
220
+ For a non-interactive check, use `--headless --output-dir PATH`. qd starts the
221
+ full configured stack, records the integration's output and exit status, then
222
+ stops the whole stack. This replaces any running qd stack; volumes are retained.
223
+ Images are reused. Use `--force-rebuild` when dependencies changed or images have
224
+ not been built yet.
225
+
226
+ Use `--no-skip-initial-make-bundle` to refresh the bundle even when the profile
227
+ normally skips it; the saved profile remains unchanged.
228
+
229
+ `additional_environment` intentionally allows overriding generated runtime
230
+ settings, including `DRY_RUN`, `MANAGER_DRY_RUN`, `RUN_ONCE`, and `DEBUGGER`, even
231
+ in headless mode. These overrides take precedence over the corresponding profile
232
+ settings; headless dry-run and run-once settings are not guarantees when overridden.
233
+
234
+ #### --no-dry-run
235
+
236
+ By default, `qd` runs integrations in `dry-run` mode if not explicitly specified differently in the profile config.
237
+ There is also a `--no-dry-run` flag which lets you disable `dry-run` mode from the command line.
238
+
239
+ ```shell
240
+ qd profile run dev my-integration --no-dry-run
241
+ ```
242
+
243
+ The command line flag takes precedence over any configuration you might have in the profile settings.
244
+
245
+ #### Profile Settings
246
+
247
+ | **Key** | **Description** | **Default** |
248
+ | ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
249
+ | additional_environment | Dictionary of additional environment variables to pass to the qontract-reconcile container | `{}` |
250
+ | container_uid | Change ownership of /recconcile files in container to this user id | current UID |
251
+ | command | Command to run in the qontract-reconcile container. | `run-integration` |
252
+ | command_extra_args | Additional arguments to pass to the command. | |
253
+ | debugger | Python debugger | `debugpy` |
254
+ | dry_run | Run --dry-run mode | `true` |
255
+ | extra_hosts | List of 'HOSTNAME:IP' mapping entries for qontract-reconcile `/etc/hosts`. See [extra_hosts](https://docs.docker.com/compose/compose-file/#extra_hosts) docker compose file. | `[]` |
256
+ | **integration_name** | Intergration name | |
257
+ | **integration_extra_args** | Intergration extra arguments | |
258
+ | **internal_redhat_ca** | Inject Red Hat internal CAs and `REQUESTS_CA_BUNDLE` environment variable | `false` |
259
+ | internal_redhat_ca_image | The Red Hat internal CA image | Internal one |
260
+ | internal_redhat_ca_container_platform | The Red Hat internal CA container platform | Default from [environment](#environment-settings) |
261
+ | log_level | Log level | `info` |
262
+ | app_interface_path | App-interface instance path. (Overrides *env.app_interface_path*) | |
263
+ | app_interface_pr | App-interface PR/MR number | |
264
+ | app_interface_upstream | Upstream remote name | `upstream` |
265
+ | cache_image | Cache (Redis) image | `redis:7-alpine` |
266
+ | cache_container_platform | Cache (Redis) container platform | Default from [environment](#environment-settings) |
267
+ | cache_compose_file | Cache docker-compose file template | `cache.yml.j2` |
268
+ | qontract_api_build_image | Build qontract-api image | `true` |
269
+ | qontract_api_image | Qontract-api image | `quay.io/redhat-services-prod/.../qontract-api-master:latest` |
270
+ | qontract_api_container_platform | Qontract-api container platform | Default from [environment](#environment-settings) |
271
+ | qontract_api_compose_file | Qontract-api docker-compose file template | `api.yml.j2` |
272
+ | qontract_api_debugger_port | Debugger port for qontract-api | `5679` |
273
+ | qontract_api_subscriber_build_image | Build qontract-api-subscriber image | `true` |
274
+ | qontract_api_subscriber_image | Qontract-api-subscriber image | `quay.io/redhat-services-prod/.../qontract-api-master:latest` |
275
+ | qontract_api_subscriber_container_platform | Qontract-api-subscriber container platform | Default from [environment](#environment-settings) |
276
+ | qontract_api_subscriber_compose_file | Qontract-api-subscriber docker-compose file template | `subscriber.yml.j2` |
277
+ | qontract_api_subscriber_debugger_port | Debugger port for qontract-api-subscriber | `5681` |
278
+ | qontract_api_worker_build_image | Build qontract-api-worker image | `true` |
279
+ | qontract_api_worker_image | Qontract-api-worker image | `quay.io/redhat-services-prod/.../qontract-api-worker-master:latest` |
280
+ | qontract_api_worker_container_platform | Qontract-api-worker container platform | Default from [environment](#environment-settings) |
281
+ | qontract_api_worker_compose_file | Qontract-api-worker docker-compose file template | `worker.yml.j2` |
282
+ | qontract_api_worker_debugger_port | Debugger port for qontract-api-worker | `5680` |
283
+ | qontract_reconcile_build_image | Build qontract-reconcile image | `true` |
284
+ | qontract_reconcile_image | Qontract-reconcile image | `quay.io/redhat-services-prod/.../qontract-reconcile-master:latest` |
285
+ | qontract_reconcile_container_platform | Qontract-reconcile container platform | Default from [environment](#environment-settings) |
286
+ | qontract_reconcile_path | Qontract-reconcile path | `~/workspace/qontract-reconcile` |
287
+ | qontract_reconcile_pr | Qontract-reconcile PR/MR number | |
288
+ | qontract_reconcile_upstream | Upstream remote name | `upstream` |
289
+ | qontract_reconcile_compose_file | Qontract-reconcile docker-compose file template | `reconcile.yml.j2` |
290
+ | qontract_reconcile_debugger_port | Debugger port for qontract-reconcile | `5678` |
291
+ | qontract_server_build_image | Build qontract-server image | `true` |
292
+ | qontract_server_image | Qontract-server image | `quay.io/redhat-services-prod/.../qontract-server-master:latest` |
293
+ | qontract_server_container_platform | Qontract-server container platform | Default from [environment](#environment-settings) |
294
+ | qontract_server_path | Qontract-server path | `~/workspace/qontract-server` |
295
+ | qontract_server_compose_file | Qontract-server docker-compose file template | `server.yml.j2` |
296
+ | qontract_server_debugger_port | Debugger port for qontract-server | `6789` |
297
+ | qontract_schemas_path | Qontract-schemas path | `~/workspace/qontract-schemas` |
298
+ | qontract_schemas_pr | Qontract-schemas PR/MR number | |
299
+ | qontract_schemas_upstream | Upstream remote name | `upstream` |
300
+ | run_once | If 'true', execute the integration once and exit | `true` |
301
+ | sleep_duration_secs | If not *run_once*, sleep duration until integration runs again | `10` |
302
+ | localstack | Run localstack container and set AWS related environment variables | `false` |
303
+ | localstack_compose_file | Path to your Localstack docker-compose file | `qontract_reconcile_path` / `dev/localstack/docker-compose.yml` |
304
+ | skip_initial_make_bundle | Skip initial make bundle step | `false` |
305
+ | vault_image | Vault image | `vault:1.5.4` |
306
+ | vault_container_platform | Vault container platform | Default from [environment](#environment-settings) |
307
+ | vault_compose_file | Vault docker-compose file template | `vault.yml.j2` |
308
+
309
+ > :point_right: **Bold keys** are mandatory or should be customized.
310
+
311
+ ### Connecting your IDE to QR
312
+
313
+ Note that the Qontract Reconcile container will not start running until it is connected to by a debugger. You can use a config like this for VSCode:
314
+
315
+ ```json
316
+ {
317
+ "version": "0.2.0",
318
+ "configurations": [
319
+ {
320
+ "name": "Python Debugger: Reconcile",
321
+ "type": "debugpy",
322
+ "request": "attach",
323
+ "connect": { "host": "localhost", "port": 5678 },
324
+ "pathMappings": [
325
+ { "localRoot": "${workspaceFolder}", "remoteRoot": "/work" }
326
+ ],
327
+ "justMyCode": false,
328
+ "autoReload": {
329
+ "enable": true
330
+ }
331
+ },
332
+ {
333
+ "name": "Python Debugger: Api",
334
+ "type": "debugpy",
335
+ "request": "attach",
336
+ "connect": { "host": "localhost", "port": 5679 },
337
+ "pathMappings": [
338
+ { "localRoot": "${workspaceFolder}", "remoteRoot": "/opt/app-root/src" }
339
+ ],
340
+ "justMyCode": false,
341
+ "autoReload": {
342
+ "enable": true
343
+ }
344
+ },
345
+ {
346
+ "name": "Python Debugger: Subscriber",
347
+ "type": "debugpy",
348
+ "request": "attach",
349
+ "connect": { "host": "localhost", "port": 5681 },
350
+ "pathMappings": [
351
+ { "localRoot": "${workspaceFolder}", "remoteRoot": "/opt/app-root/src" }
352
+ ],
353
+ "justMyCode": true,
354
+ "autoReload": {
355
+ "enable": true
356
+ }
357
+ },
358
+ {
359
+ "name": "Python Debugger: Worker",
360
+ "type": "debugpy",
361
+ "request": "attach",
362
+ "connect": { "host": "localhost", "port": 5680 },
363
+ "pathMappings": [
364
+ { "localRoot": "${workspaceFolder}", "remoteRoot": "/opt/app-root/src" }
365
+ ],
366
+ "justMyCode": true,
367
+ "autoReload": {
368
+ "enable": true
369
+ }
370
+ }
371
+ ],
372
+ "compounds": [
373
+ {
374
+ "name": "Debug: Reconcile + qontract-api",
375
+ "configurations": [
376
+ "Python Debugger: Reconcile",
377
+ "Python Debugger: Api",
378
+ "Python Debugger: Subscriber",
379
+ "Python Debugger: Worker"
380
+ ],
381
+ "stopAll": true,
382
+ "presentation": {
383
+ "hidden": false,
384
+ "group": "Full Stack",
385
+ "order": 0
386
+ }
387
+ }
388
+ ]
389
+ }
390
+
391
+ ```
392
+
393
+ **Please note that development does not currently work with PyCharm as debugpy is not yet supported. [This issue is being tracked here](https://youtrack.jetbrains.com/issue/PY-63403/Support-debugpy)**
394
+
395
+ ### PR/MR support
396
+
397
+ It's a pretty handy feature to create a profile from a pull request (merge request). E.g.:
398
+
399
+ ```shell
400
+ qd profile create --app-interface PATH_TO_YOUR_LOCAL/app-interface-dev-data --app-interface-pr NUMBER --qontract-schemas-pr NUMBER --qontract-reconcile-pr NUMBER --integration-name glitchtip --integration-extra-args '' glitchtip-pr-check
401
+ ```
402
+
403
+ Which results in this profile:
404
+
405
+ ```shell
406
+ $ qd profile show glitchtip-pr-check
407
+ ---
408
+ app_interface_path: PATH_TO_YOUR_LOCAL/app-interface-dev-data
409
+ app_interface_pr: NUMBER
410
+ integration_name: glitchtip
411
+ qontract_reconcile_pr: NUMBER
412
+ qontract_schemas_pr: NUMBER
413
+ ```
414
+
415
+ Running this profile will:
416
+
417
+ - Create new git worktrees (see `config.worktrees_dir`) for app-interface-dev-data, qontract-schema, and qontract-reconcile PRs
418
+ - Start the containers with the adapted path to these worktrees
419
+ - Restarting the profile will fetch PR updates
420
+
421
+ > :point_right: A git worktree cleanup isn't implemented yet
422
+
423
+ ## Development
424
+
425
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
426
+ [![Checked with mypy](https://www.mypy-lang.org/static/mypy_badge.svg)](https://mypy-lang.org/)
427
+
428
+ ### Release
429
+
430
+ - Bump the version in `pyproject.toml`
431
+ - Update the `CHANGELOG.md`
432
+ - Commit the changes
433
+
434
+ [pypi-link]: https://pypi.org/project/qontract-development-cli/
435
+ [python-versions]: https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Fapp-sre%2Fqontract-development-cli%2Frefs%2Fheads%2Fmain%2Fpyproject.toml
436
+ [qontract-reconcile]: https://github.com/app-sre/qontract-reconcile