Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
d0252d4
fix: align OTel versions to v1.44.0 and use explicit e2e timeout fall…
tmshort Jul 2, 2026
6a28728
:seedling: Bump github.com/google/go-containerregistry (#2800)
dependabot[bot] Jul 2, 2026
8013292
feat: replace asciinema with godog-based demo recording (#2801)
pedjak Jul 3, 2026
6655994
chore(deps): bump golang.org/x/net in /hack/tools/test-profiling (#2804)
dependabot[bot] Jul 3, 2026
395bb86
:seedling: Bump github.com/sigstore/fulcio from 1.8.5 to 1.8.6 (#2793)
dependabot[bot] Jul 3, 2026
7461774
fix: missing olm.operatorNamespace annotation (#2803)
Kajot-dev Jul 6, 2026
a918ca8
fix: use static permissions in update-demos workflow (#2805)
pedjak Jul 6, 2026
60f2706
:seedling: Bump actions/setup-go from 6.4.0 to 6.5.0 (#2807)
dependabot[bot] Jul 8, 2026
b7926dc
:seedling: Bump pymdown-extensions from 10.21.3 to 11.0 (#2808)
dependabot[bot] Jul 8, 2026
abd8c4a
:seedling: Bump helm.sh/helm/v3 from 3.21.1 to 3.21.2 (#2806)
dependabot[bot] Jul 8, 2026
dd78f2f
:seedling: Bump actions/setup-python from 6.2.0 to 6.3.0 (#2809)
dependabot[bot] Jul 8, 2026
be16a0a
:seedling: Align ClusterObjectSet e2e cleanup with addedResources pat…
perdasilva Jul 8, 2026
dbc9b4a
fix: remove HelmChartSupport feature (#2798)
pedjak Jul 9, 2026
e5bac06
:seedling: Bump click from 8.4.1 to 8.4.2 (#2811)
dependabot[bot] Jul 10, 2026
c63b183
:seedling: Bump github.com/cert-manager/cert-manager (#2812)
dependabot[bot] Jul 10, 2026
032140a
Merge branch 'main' into synchronize
Jul 11, 2026
73440b1
UPSTREAM: <carry>: Add OpenShift specific files
dtfranz Oct 26, 2023
acba772
UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
camilamacedo86 Oct 6, 2025
b8a34b2
UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
camilamacedo86 Oct 13, 2025
17b39bf
UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp …
camilamacedo86 Oct 13, 2025
401f785
UPSTREAM: <carry>: Update OCP catalogs to v4.21
tmshort Oct 13, 2025
42fa2ff
UPSTREAM: <carry>: support singleown cases in disconnected
kuiwang02 Oct 16, 2025
1687a4e
UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
kuiwang02 Oct 17, 2025
7cb4b62
UPSTREAM: <carry>: Define Default timeouts and apply their usage accr…
camilamacedo86 Oct 22, 2025
187b536
UPSTREAM: <carry>: Update to new feature-gate options in helm
tmshort Oct 22, 2025
632208f
UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniq…
camilamacedo86 Oct 22, 2025
557b03b
UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comme…
camilamacedo86 Oct 24, 2025
ff4478f
UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inlin…
kuiwang02 Nov 3, 2025
f8f0174
UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension…
camilamacedo86 Nov 4, 2025
a30faad
UPSTREAM: <carry>: Add [OTP] to migrated cases
kuiwang02 Nov 7, 2025
c17e6b0
UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
camilamacedo86 Nov 5, 2025
c2f960b
UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version…
camilamacedo86 Nov 10, 2025
593ae10
UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and depe…
camilamacedo86 Nov 11, 2025
2d83a18
UPSTREAM: <carry>: add disconnected environment support with custom p…
kuiwang02 Nov 12, 2025
fda5983
UPSTREAM: <carry>: migrate jiazha test cases to OTE
jianzhangbjz Nov 14, 2025
7fa3faf
UPSTREAM: <carry>: migrate clustercatalog case to ote
Xia-Zhao-rh Oct 17, 2025
b157db6
UPSTREAM: <carry>: migrate olmv1 QE stress cases
kuiwang02 Nov 20, 2025
784be5d
UPSTREAM: <carry>: Use busybox/httpd to simulate probes
tmshort Nov 25, 2025
bff653d
UPSTREAM: <carry>: migrate olmv1 QE cases
Xia-Zhao-rh Nov 25, 2025
9a28720
UPSTREAM: <carry>: add agent for olmv1 qe cases
kuiwang02 Oct 21, 2025
24c8d19
UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
tmshort Dec 3, 2025
37be4ce
UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
rashmigottipati Dec 11, 2025
70371ce
UPSTREAM: <carry>: address review comments through addl prompts
rashmigottipati Dec 11, 2025
3f691dd
UPSTREAM: <carry>: addressing some more review comments
rashmigottipati Dec 11, 2025
668f934
UPSTREAM: <carry>: remove DCO line
rashmigottipati Dec 11, 2025
ee539de
UPSTREAM: <carry>: migrate bandrade test cases to OTE
bandrade Nov 18, 2025
b56b7db
UPSTREAM: <carry>: update metadata
bandrade Dec 3, 2025
63577c4
UPSTREAM: <carry>: remove originalName
bandrade Dec 3, 2025
27e4252
UPSTREAM: <carry>: update 80458's timeout to 180s
jianzhangbjz Dec 8, 2025
7d0824b
UPSTREAM: <carry>: update 83026 to specify the clustercatalog
jianzhangbjz Dec 15, 2025
19164c8
UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
oceanc80 Dec 18, 2025
fbe29d0
UPSTREAM: <carry>: Use oc client for running e2e tests
pedjak Jan 13, 2026
43caac1
UPSTREAM: <carry>: Run upstream e2e tests tagged with `@catalogd-update`
pedjak Jan 14, 2026
4f9294a
UPSTREAM: <carry>: enhance case to make it more stable
kuiwang02 Jan 6, 2026
5fdeaad
UPSTREAM: <carry>: add service account to curl job
ehearne-redhat Jan 7, 2026
0772bc7
UPSTREAM: <carry>: move sa creation out of buildCurlJob()
ehearne-redhat Jan 8, 2026
075aab4
UPSTREAM: <carry>: comment out delete service account
ehearne-redhat Jan 9, 2026
bc723cc
UPSTREAM: <carry>: move defercleanup for sa for LIFO
ehearne-redhat Jan 9, 2026
15a9ac1
UPSTREAM: <carry>: add polling so job fully deleted before proceed
ehearne-redhat Jan 12, 2026
63376ae
UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redha…
sosiouxme Jan 20, 2026
4a59a98
UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
camilamacedo86 Jan 8, 2026
417cfb8
UPSTREAM: <carry>: config watchnamespace cases
kuiwang02 Jan 6, 2026
9c1a6db
UPSTREAM: <carry>: enhance ocp-79770
Xia-Zhao-rh Jan 26, 2026
b023e27
UPSTREAM: <carry>: upgrade version support case
kuiwang02 Jan 28, 2026
7799ea3
UPSTREAM: <carry>: Remove installed condition check from auth preflig…
Jan 30, 2026
1de988c
UPSTREAM: <carry>: Add openshift/api dependency
Jan 30, 2026
08168ca
UPSTREAM: <carry>: Add boxcutter specific preflight auth test
Jan 30, 2026
21adb96
UPSTREAM: <carry>: adjust watchnamespace case based on change
kuiwang02 Feb 2, 2026
06b42e4
UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root…
camilamacedo86 Feb 3, 2026
fbfb71c
UPSTREAM: <carry>: add 83979 automation
bandrade Feb 2, 2026
deca15d
UPSTREAM: <carry>: add 85889 automation
bandrade Feb 2, 2026
9cfa482
UPSTREAM: <carry>: Update test-operator startup script to fix pod pro…
Feb 4, 2026
3199b5c
UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
Feb 7, 2026
62934f5
UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles…
camilamacedo86 Feb 24, 2026
c3fab25
UPSTREAM: <carry>: adjust sa and permission test cases per new change…
kuiwang02 Feb 2, 2026
f9cd187
UPSTREAM: <carry>: Update OCP catalogs to v4.22
camilamacedo86 Feb 3, 2026
24f43b1
UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and…
camilamacedo86 Feb 26, 2026
f6d8c53
UPSTREAM: <carry>: fix 83026 for TP cluster
jianzhangbjz Feb 28, 2026
85a61fc
UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
kuiwang02 Mar 6, 2026
dc184c7
UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
stbenjam Mar 6, 2026
aa3dfb8
UPSTREAM: <carry>: Increase install timeout and add diagnostic loggin…
camilamacedo86 Mar 11, 2026
7310ddd
UPSTREAM: <carry>: add service account to curl job
ehearne-redhat Mar 2, 2026
a86c6e7
UPSTREAM: <carry>: update OCP-75441 to support multi-arch
jianzhangbjz Mar 19, 2026
cc08a9e
UPSTREAM: <carry>: deployment config cases
kuiwang02 Feb 6, 2026
7220440
UPSTREAM: <carry>: Add OTE tests for OLMv1 DeploymentConfig support
tmshort Mar 11, 2026
ba675ae
UPSTREAM: <carry>: Update openshift/api and client-go
tmshort Mar 19, 2026
7cee1e6
UPSTREAM: <carry>: Add boxcutter tests
camilamacedo86 Mar 23, 2026
811c871
UPSTREAM: <carry>: enhance QE cases
Xia-Zhao-rh Mar 17, 2026
8014af3
UPSTREAM: <carry>: Update quay-operator version to one containing arm…
dtfranz Mar 24, 2026
e9102a0
UPSTREAM: <carry>: verify volume/volumeMount override
kuiwang02 Mar 25, 2026
7e35552
UPSTREAM: <carry>: Add long-duration test script and documents
jianzhangbjz Mar 11, 2026
4384499
UPSTREAM: <carry>: Update grpc in default-catalog-consistency tests
tmshort Mar 27, 2026
0adb8f0
UPSTREAM: <carry>: Rename ClusterExtensionRevision to ClusterObjectSe…
camilamacedo86 Mar 31, 2026
6f667bf
UPSTREAM: <carry>: Skip incompatible operator test when Boxcutter use…
camilamacedo86 Mar 31, 2026
0edc549
UPSTREAM: <carry>: add ocp-87557
bandrade Feb 8, 2026
462cb12
UPSTREAM: <carry>: Add fgiudici as reviewer
fgiudici Mar 31, 2026
fe29f10
UPSTREAM: <carry>: Remove skip for incompatible operator check after …
camilamacedo86 Apr 1, 2026
10a47b4
UPSTREAM: <carry>: Test empty affinity erasure and cleanup
kuiwang02 Apr 1, 2026
719bea2
UPSTREAM: <carry>: Fix boxcutter finalizer ResourceNames in prefligh…
camilamacedo86 Apr 9, 2026
b5db8eb
UPSTREAM: <carry>: Expand OTE docs with more comprehensive details
camilamacedo86 Apr 15, 2026
82e6052
UPSTREAM: <carry>: Disable upstream TLSProfile tests
tmshort Apr 18, 2026
a279070
UPSTREAM: <carry>: OTE: Simplify by remove option to configure tests …
camilamacedo86 Apr 20, 2026
d8b3c8a
UPSTREAM: <carry>: OTE - Make OTE local output easier to read
camilamacedo86 Apr 21, 2026
ae25003
UPSTREAM: <carry>: remove dead e2e registry push job and related vari…
joelanford Apr 29, 2026
af7548e
UPSTREAM: <carry>: OCPBUGS-62517: Set replicas=1, PDB, and pod anti-a…
tmshort Apr 23, 2026
7de2845
UPSTREAM: <carry>: fix(test): drop blocking namespace-deletion wait b…
tmshort May 4, 2026
1a3751f
UPSTREAM: <carry>: Fix downstream e2e test invocation
tmshort May 18, 2026
0effcb4
UPSTREAM: <carry>: Delete openshift/registry.Dockerfile
joelanford May 19, 2026
9787752
UPSTREAM: <carry>: Remove test-experimenal-e2e
tmshort May 20, 2026
a8ece28
UPSTREAM: <carry>: Update readme Default Catalog Tests
camilamacedo86 May 27, 2026
a598f2c
UPSTREAM: <carry>: add OLMv1 topology-based deployment scaling e2e test
tmshort May 26, 2026
d769659
UPSTREAM: <carry>: Update dockerfiles to use golang-1.26-release-4.23…
tmshort Jun 4, 2026
3ef7466
UPSTREAM: <carry>: Updating ose-olm-operator-controller-container ima…
Jun 6, 2026
54123d5
UPSTREAM: <carry>: Updating ose-olm-catalogd-container image to be co…
Jun 6, 2026
50ada94
UPSTREAM: <carry>: Update catalogs for 4.23/5.0
tmshort May 21, 2026
73a5f7a
UPSTREAM: <drop>: go mod vendor
Jul 11, 2026
131f39d
UPSTREAM: <drop>: remove upstream GitHub configuration
Jul 11, 2026
a596b98
UPSTREAM: <drop>: configure the commit-checker
Jul 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ vendor/
# documentation website asset folder
site

# generated demo asciicast recordings
docs/demos/

.tiltbuild/
.catalogd-tmp/
.vscode
Expand Down
41 changes: 30 additions & 11 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,6 @@ else
endif

.PHONY: e2e-run-%
e2e-run-%: E2E_TIMEOUT ?= 20m
e2e-run-%: GODOG_ARGS ?=
e2e-run-%: prometheus-%
ifeq ($(strip $(GODOG_ARGS)),)
Expand All @@ -414,11 +413,11 @@ ifeq ($(strip $(GODOG_ARGS)),)
set +e; \
KUBECONFIG=$(E2E_KUBECONFIG) \
PROMETHEUS_URL=http://localhost:$$E2E_PROMETHEUS_PORT \
go test -count=1 -v ./test/e2e/features_test.go -timeout $(E2E_TIMEOUT) -args --godog.tags="~@Serial" --godog.concurrency=100; \
go test -count=1 -v ./test/e2e/features_test.go -timeout $(or $(E2E_TIMEOUT),20m) -args --godog.tags="~@Serial && ~@demo" --godog.concurrency=100; \
parallelExit=$$?; \
KUBECONFIG=$(E2E_KUBECONFIG) \
PROMETHEUS_URL=http://localhost:$$E2E_PROMETHEUS_PORT \
go test -count=1 -v ./test/e2e/features_test.go -timeout $(E2E_TIMEOUT) -args --godog.tags="@Serial" --godog.concurrency=1; \
go test -count=1 -v ./test/e2e/features_test.go -timeout $(or $(E2E_TIMEOUT),20m) -args --godog.tags="@Serial && ~@demo" --godog.concurrency=1; \
serialExit=$$?; \
if [[ $$parallelExit -ne 0 ]] || [[ $$serialExit -ne 0 ]]; then \
echo "e2e tests failed: parallel=$$parallelExit serial=$$serialExit"; \
Expand All @@ -429,7 +428,7 @@ else
if [[ -z "$$E2E_PROMETHEUS_PORT" ]]; then echo "error: failed to extract prometheus hostPort from $(KIND_CONFIG)" >&2; exit 1; fi; \
KUBECONFIG=$(E2E_KUBECONFIG) \
PROMETHEUS_URL=http://localhost:$$E2E_PROMETHEUS_PORT \
go test -count=1 -v ./test/e2e/features_test.go -timeout=$(E2E_TIMEOUT) -args $(GODOG_ARGS)
go test -count=1 -v ./test/e2e/features_test.go -timeout=$(or $(E2E_TIMEOUT),20m) -args $(GODOG_ARGS)
endif

.PHONY: e2e-coverage-%
Expand Down Expand Up @@ -697,13 +696,33 @@ deploy-docs: venv
. $(VENV)/activate; \
mkdocs gh-deploy --force --strict

# The demo script requires to install asciinema with: brew install asciinema to run on mac os envs.
# Please ensure that all demos are named with the demo name and the suffix -demo-script.sh
.PHONY: update-demos #EXHELP Validate demo recordings.
update-demos:
@for script in hack/demo/*-demo-script.sh; do \
nm=$$(basename $$script -script.sh); \
./hack/demo/generate-asciidemo.sh -n $$nm $$(basename $$script); \
DEMO_OUTPUT_DIR ?= $(ROOT_DIR)/docs/demos

.PHONY: update-demos
update-demos: SOURCE_MANIFEST := $(EXPERIMENTAL_E2E_MANIFEST)
update-demos: export MANIFEST := $(EXPERIMENTAL_RELEASE_MANIFEST)
update-demos: export DEFAULT_CATALOG := $(CATALOGS_MANIFEST)
update-demos: export INSTALL_DEFAULT_CATALOGS := true
update-demos: export CATALOG_WAIT_TIMEOUT := 5m
update-demos: wait-operator-controller-experimental-e2e demo-e2e demo-svg experimental-e2e-teardown #EXHELP Record demo scenarios as asciicast and SVG files.
Comment on lines +699 to +707

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Inspect the relevant Makefile section and the referenced targets.
git ls-files Makefile
sed -n '660,760p' Makefile

printf '\n--- target definitions ---\n'
rg -n '^(demo-e2e|demo-svg|experimental-e2e-teardown|wait-operator-controller-experimental-e2e):|\.NOTPARALLEL|update-demos:' Makefile

Repository: openshift/operator-framework-operator-controller

Length of output: 4445


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '--- parallelism/order controls ---\n'
rg -n '^\s*\.NOTPARALLEL|^\s*\.WAIT|^\s*\.PARALLEL|^update-demos:|^demo-e2e:|^demo-svg:|^experimental-e2e-teardown:|^wait-operator-controller-experimental-e2e:' Makefile

printf '\n--- update-demos references ---\n'
rg -n '\bupdate-demos\b' -S .

printf '\n--- demo-e2e / demo-svg bodies ---\n'
sed -n '707,735p' Makefile

Repository: openshift/operator-framework-operator-controller

Length of output: 277


Make update-demos run sequentially
update-demos lists independent prerequisites, so make -j can start demo-svg or experimental-e2e-teardown before demo-e2e finishes writing the .cast files. Convert this to a recipe, or mark the target .NOTPARALLEL, so recording, conversion, and teardown happen in order.

🧰 Tools
🪛 checkmake (0.3.2)

[warning] 703-703: Target "update-demos" defined multiple times (lines 702 and 703).

(uniquetargets)


[warning] 704-704: Target "update-demos" defined multiple times (lines 702 and 704).

(uniquetargets)


[warning] 705-705: Target "update-demos" defined multiple times (lines 702 and 705).

(uniquetargets)


[warning] 706-706: Target "update-demos" defined multiple times (lines 702 and 706).

(uniquetargets)


[warning] 707-707: Target "update-demos" defined multiple times (lines 702 and 707).

(uniquetargets)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Makefile` around lines 699 - 707, The update-demos target is vulnerable to
parallel execution because its current prerequisite list lets make -j run
demo-e2e, demo-svg, and experimental-e2e-teardown out of order. Update the
Makefile so update-demos executes sequentially by moving the steps into a recipe
or marking the target (or its related
demo-e2e/demo-svg/experimental-e2e-teardown flow) as .NOTPARALLEL, ensuring
recording, conversion, and teardown happen in the correct order.


.PHONY: demo-e2e
demo-e2e:
@command -v curl >/dev/null 2>&1 || { echo "Error: curl not found in PATH."; exit 1; }
@command -v jq >/dev/null 2>&1 || { echo "Error: jq not found in PATH."; exit 1; }
@mkdir -p $(DEMO_OUTPUT_DIR)
KUBECONFIG=$(KUBECONFIG_DIR)/operator-controller-experimental-e2e.kubeconfig \
DEMO_OUTPUT_DIR=$(DEMO_OUTPUT_DIR) go test -count=1 -v ./test/e2e/features_test.go -timeout 30m \
-args --godog.tags="@demo" --godog.concurrency=1

.PHONY: demo-svg
demo-svg: #EXHELP Convert asciicast recordings to SVG.
@command -v docker >/dev/null 2>&1 || { echo "Error: docker not found in PATH."; exit 1; }
@for cast in $(DEMO_OUTPUT_DIR)/*.cast; do \
svg=$${cast%.cast}.svg; \
echo "Converting $$(basename $$cast) -> $$(basename $$svg)"; \
docker run --rm -v $(DEMO_OUTPUT_DIR):/data node:alpine \
npx --yes svg-term-cli --in /data/$$(basename $$cast) --out /data/$$(basename $$svg) --window; \
done
Comment on lines +718 to 726

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Unquoted glob can fail when no .cast files exist.

If $(DEMO_OUTPUT_DIR) contains no .cast files, the glob won't expand under default shell settings, so cast becomes the literal string $(DEMO_OUTPUT_DIR)/*.cast, and docker run will fail trying to mount/read a nonexistent file with a confusing error instead of a clear message.

🐛 Proposed fix using nullglob guard
 demo-svg: `#EXHELP` Convert asciicast recordings to SVG.
 	`@command` -v docker >/dev/null 2>&1 || { echo "Error: docker not found in PATH."; exit 1; }
-	`@for` cast in $(DEMO_OUTPUT_DIR)/*.cast; do \
+	`@shopt` -s nullglob; \
+	casts=($(DEMO_OUTPUT_DIR)/*.cast); \
+	if [ $${`#casts`[@]} -eq 0 ]; then \
+	  echo "No .cast files found in $(DEMO_OUTPUT_DIR)"; \
+	  exit 0; \
+	fi; \
+	for cast in "$${casts[@]}"; do \
 	  svg=$${cast%.cast}.svg; \
 	  echo "Converting $$(basename $$cast) -> $$(basename $$svg)"; \
 	  docker run --rm -v $(DEMO_OUTPUT_DIR):/data node:alpine \
 	    npx --yes svg-term-cli --in /data/$$(basename $$cast) --out /data/$$(basename $$svg) --window; \
 	done

Requires bash as the recipe shell (for shopt/arrays) — verify SHELL is set to bash elsewhere in this Makefile, consistent with the [[ ]] usage already present at Line 411/422.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
.PHONY: demo-svg
demo-svg: #EXHELP Convert asciicast recordings to SVG.
@command -v docker >/dev/null 2>&1 || { echo "Error: docker not found in PATH."; exit 1; }
@for cast in $(DEMO_OUTPUT_DIR)/*.cast; do \
svg=$${cast%.cast}.svg; \
echo "Converting $$(basename $$cast) -> $$(basename $$svg)"; \
docker run --rm -v $(DEMO_OUTPUT_DIR):/data node:alpine \
npx --yes svg-term-cli --in /data/$$(basename $$cast) --out /data/$$(basename $$svg) --window; \
done
.PHONY: demo-svg
demo-svg: `#EXHELP` Convert asciicast recordings to SVG.
`@command` -v docker >/dev/null 2>&1 || { echo "Error: docker not found in PATH."; exit 1; }
`@shopt` -s nullglob; \
casts=($(DEMO_OUTPUT_DIR)/*.cast); \
if [ $${`#casts`[@]} -eq 0 ]; then \
echo "No .cast files found in $(DEMO_OUTPUT_DIR)"; \
exit 0; \
fi; \
for cast in "$${casts[@]}"; do \
svg=$${cast%.cast}.svg; \
echo "Converting $$(basename $$cast) -> $$(basename $$svg)"; \
docker run --rm -v $(DEMO_OUTPUT_DIR):/data node:alpine \
npx --yes svg-term-cli --in /data/$$(basename $$cast) --out /data/$$(basename $$svg) --window; \
done
🧰 Tools
🪛 checkmake (0.3.2)

[warning] 719-719: Target body for "demo-svg" exceeds allowed length of 5 lines (7).

(maxbodylength)


[warning] 719-719: Required target "all" is missing from the Makefile.

(minphony)


[warning] 719-719: Required target "clean" is missing from the Makefile.

(minphony)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Makefile` around lines 718 - 726, The demo-svg recipe currently iterates over
an unquoted *.cast glob, so when no recordings exist it passes a literal path
into docker and fails confusingly. Update the demo-svg target to use
bash-friendly glob handling in the recipe (consistent with the existing
bash-only [[ ]] usage) by enabling a no-match-safe pattern or explicitly
checking for matching files before the loop, and keep the existing demo-svg
command flow and symbols like demo-svg, DEMO_OUTPUT_DIR, and the for cast loop
intact.


include Makefile.venv
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ To get started with OLM v1, please see our [Getting Started](https://operator-fr

### Quickstart DEMO

[![asciicast](https://asciinema.org/a/682344.svg)](https://asciinema.org/a/682344)
[![ClusterCatalog Demo](https://operator-framework.github.io/operator-controller/demos/clustercatalog-quickstart.svg)](https://operator-framework.github.io/operator-controller/)

### ClusterCatalog Quickstart Steps

Expand Down
Loading