Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
121 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
e5877d7
:seedling: Bump golang.org/x/tools from 0.46.0 to 0.47.0 (#2813)
dependabot[bot] Jul 13, 2026
8877ba0
:seedling: Bump regex from 2026.5.9 to 2026.6.28 (#2814)
dependabot[bot] Jul 14, 2026
ca2945a
:seedling: Bump github.com/klauspost/compress from 1.18.6 to 1.19.0 (…
dependabot[bot] Jul 14, 2026
6dd44ed
Merge branch 'main' into synchronize
Jul 15, 2026
a63f38b
UPSTREAM: <carry>: Add OpenShift specific files
dtfranz Oct 26, 2023
f8ba847
UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
camilamacedo86 Oct 6, 2025
3a4b6b2
UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
camilamacedo86 Oct 13, 2025
121ae55
UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp …
camilamacedo86 Oct 13, 2025
f8cbd22
UPSTREAM: <carry>: Update OCP catalogs to v4.21
tmshort Oct 13, 2025
112e717
UPSTREAM: <carry>: support singleown cases in disconnected
kuiwang02 Oct 16, 2025
f814ce8
UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
kuiwang02 Oct 17, 2025
0f24e46
UPSTREAM: <carry>: Define Default timeouts and apply their usage accr…
camilamacedo86 Oct 22, 2025
ae35733
UPSTREAM: <carry>: Update to new feature-gate options in helm
tmshort Oct 22, 2025
1f50eba
UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniq…
camilamacedo86 Oct 22, 2025
cb3a9b4
UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comme…
camilamacedo86 Oct 24, 2025
71268fc
UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inlin…
kuiwang02 Nov 3, 2025
241ed9e
UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension…
camilamacedo86 Nov 4, 2025
570806e
UPSTREAM: <carry>: Add [OTP] to migrated cases
kuiwang02 Nov 7, 2025
22d2630
UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
camilamacedo86 Nov 5, 2025
5dbfaba
UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version…
camilamacedo86 Nov 10, 2025
2995822
UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and depe…
camilamacedo86 Nov 11, 2025
d3e076a
UPSTREAM: <carry>: add disconnected environment support with custom p…
kuiwang02 Nov 12, 2025
7b1b62c
UPSTREAM: <carry>: migrate jiazha test cases to OTE
jianzhangbjz Nov 14, 2025
8ed968b
UPSTREAM: <carry>: migrate clustercatalog case to ote
Xia-Zhao-rh Oct 17, 2025
996dcfc
UPSTREAM: <carry>: migrate olmv1 QE stress cases
kuiwang02 Nov 20, 2025
a1aba80
UPSTREAM: <carry>: Use busybox/httpd to simulate probes
tmshort Nov 25, 2025
5ea814b
UPSTREAM: <carry>: migrate olmv1 QE cases
Xia-Zhao-rh Nov 25, 2025
897488e
UPSTREAM: <carry>: add agent for olmv1 qe cases
kuiwang02 Oct 21, 2025
1b40f22
UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
tmshort Dec 3, 2025
c26f454
UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
rashmigottipati Dec 11, 2025
487a8ec
UPSTREAM: <carry>: address review comments through addl prompts
rashmigottipati Dec 11, 2025
2b2367f
UPSTREAM: <carry>: addressing some more review comments
rashmigottipati Dec 11, 2025
d7ee9eb
UPSTREAM: <carry>: remove DCO line
rashmigottipati Dec 11, 2025
dd4742e
UPSTREAM: <carry>: migrate bandrade test cases to OTE
bandrade Nov 18, 2025
0a6a00d
UPSTREAM: <carry>: update metadata
bandrade Dec 3, 2025
7cbe49b
UPSTREAM: <carry>: remove originalName
bandrade Dec 3, 2025
828cfe6
UPSTREAM: <carry>: update 80458's timeout to 180s
jianzhangbjz Dec 8, 2025
969154b
UPSTREAM: <carry>: update 83026 to specify the clustercatalog
jianzhangbjz Dec 15, 2025
6aa6995
UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
oceanc80 Dec 18, 2025
332532f
UPSTREAM: <carry>: Use oc client for running e2e tests
pedjak Jan 13, 2026
45b6a8f
UPSTREAM: <carry>: Run upstream e2e tests tagged with `@catalogd-update`
pedjak Jan 14, 2026
2378a1a
UPSTREAM: <carry>: enhance case to make it more stable
kuiwang02 Jan 6, 2026
d4d1ab6
UPSTREAM: <carry>: add service account to curl job
ehearne-redhat Jan 7, 2026
925e8d5
UPSTREAM: <carry>: move sa creation out of buildCurlJob()
ehearne-redhat Jan 8, 2026
8fbf795
UPSTREAM: <carry>: comment out delete service account
ehearne-redhat Jan 9, 2026
714795d
UPSTREAM: <carry>: move defercleanup for sa for LIFO
ehearne-redhat Jan 9, 2026
2134a1f
UPSTREAM: <carry>: add polling so job fully deleted before proceed
ehearne-redhat Jan 12, 2026
9792abf
UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redha…
sosiouxme Jan 20, 2026
9212b73
UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
camilamacedo86 Jan 8, 2026
d42ebe9
UPSTREAM: <carry>: config watchnamespace cases
kuiwang02 Jan 6, 2026
881ed61
UPSTREAM: <carry>: enhance ocp-79770
Xia-Zhao-rh Jan 26, 2026
c933205
UPSTREAM: <carry>: upgrade version support case
kuiwang02 Jan 28, 2026
ad77381
UPSTREAM: <carry>: Remove installed condition check from auth preflig…
Jan 30, 2026
8191992
UPSTREAM: <carry>: Add openshift/api dependency
Jan 30, 2026
9625554
UPSTREAM: <carry>: Add boxcutter specific preflight auth test
Jan 30, 2026
fbfe642
UPSTREAM: <carry>: adjust watchnamespace case based on change
kuiwang02 Feb 2, 2026
6c0c381
UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root…
camilamacedo86 Feb 3, 2026
48c6554
UPSTREAM: <carry>: add 83979 automation
bandrade Feb 2, 2026
0ba0301
UPSTREAM: <carry>: add 85889 automation
bandrade Feb 2, 2026
a79cbbc
UPSTREAM: <carry>: Update test-operator startup script to fix pod pro…
Feb 4, 2026
eb51761
UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
Feb 7, 2026
05bcfe1
UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles…
camilamacedo86 Feb 24, 2026
67ccc0d
UPSTREAM: <carry>: adjust sa and permission test cases per new change…
kuiwang02 Feb 2, 2026
b118448
UPSTREAM: <carry>: Update OCP catalogs to v4.22
camilamacedo86 Feb 3, 2026
dc9d210
UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and…
camilamacedo86 Feb 26, 2026
cb6dbf6
UPSTREAM: <carry>: fix 83026 for TP cluster
jianzhangbjz Feb 28, 2026
2d0d8d3
UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
kuiwang02 Mar 6, 2026
41588be
UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
stbenjam Mar 6, 2026
bd08859
UPSTREAM: <carry>: Increase install timeout and add diagnostic loggin…
camilamacedo86 Mar 11, 2026
a014611
UPSTREAM: <carry>: add service account to curl job
ehearne-redhat Mar 2, 2026
385b473
UPSTREAM: <carry>: update OCP-75441 to support multi-arch
jianzhangbjz Mar 19, 2026
0823196
UPSTREAM: <carry>: deployment config cases
kuiwang02 Feb 6, 2026
0fcea4a
UPSTREAM: <carry>: Add OTE tests for OLMv1 DeploymentConfig support
tmshort Mar 11, 2026
1808dec
UPSTREAM: <carry>: Update openshift/api and client-go
tmshort Mar 19, 2026
5545b9b
UPSTREAM: <carry>: Add boxcutter tests
camilamacedo86 Mar 23, 2026
83e2b1d
UPSTREAM: <carry>: enhance QE cases
Xia-Zhao-rh Mar 17, 2026
53bd558
UPSTREAM: <carry>: Update quay-operator version to one containing arm…
dtfranz Mar 24, 2026
e0916e1
UPSTREAM: <carry>: verify volume/volumeMount override
kuiwang02 Mar 25, 2026
7e6a02d
UPSTREAM: <carry>: Add long-duration test script and documents
jianzhangbjz Mar 11, 2026
aaa386b
UPSTREAM: <carry>: Update grpc in default-catalog-consistency tests
tmshort Mar 27, 2026
4234e41
UPSTREAM: <carry>: Rename ClusterExtensionRevision to ClusterObjectSe…
camilamacedo86 Mar 31, 2026
f087476
UPSTREAM: <carry>: Skip incompatible operator test when Boxcutter use…
camilamacedo86 Mar 31, 2026
1e82105
UPSTREAM: <carry>: add ocp-87557
bandrade Feb 8, 2026
b3e7c55
UPSTREAM: <carry>: Add fgiudici as reviewer
fgiudici Mar 31, 2026
09ec7a0
UPSTREAM: <carry>: Remove skip for incompatible operator check after …
camilamacedo86 Apr 1, 2026
8d0109a
UPSTREAM: <carry>: Test empty affinity erasure and cleanup
kuiwang02 Apr 1, 2026
724c3f2
UPSTREAM: <carry>: Fix boxcutter finalizer ResourceNames in prefligh…
camilamacedo86 Apr 9, 2026
a89aa4c
UPSTREAM: <carry>: Expand OTE docs with more comprehensive details
camilamacedo86 Apr 15, 2026
5e4cb6b
UPSTREAM: <carry>: Disable upstream TLSProfile tests
tmshort Apr 18, 2026
8097f20
UPSTREAM: <carry>: OTE: Simplify by remove option to configure tests …
camilamacedo86 Apr 20, 2026
8a7178b
UPSTREAM: <carry>: OTE - Make OTE local output easier to read
camilamacedo86 Apr 21, 2026
61f5e7a
UPSTREAM: <carry>: remove dead e2e registry push job and related vari…
joelanford Apr 29, 2026
c1bee6b
UPSTREAM: <carry>: OCPBUGS-62517: Set replicas=1, PDB, and pod anti-a…
tmshort Apr 23, 2026
7142a4f
UPSTREAM: <carry>: fix(test): drop blocking namespace-deletion wait b…
tmshort May 4, 2026
43fada8
UPSTREAM: <carry>: Fix downstream e2e test invocation
tmshort May 18, 2026
957f4f3
UPSTREAM: <carry>: Delete openshift/registry.Dockerfile
joelanford May 19, 2026
17e997e
UPSTREAM: <carry>: Remove test-experimenal-e2e
tmshort May 20, 2026
a52ba7e
UPSTREAM: <carry>: Update readme Default Catalog Tests
camilamacedo86 May 27, 2026
ed4ba07
UPSTREAM: <carry>: add OLMv1 topology-based deployment scaling e2e test
tmshort May 26, 2026
18408ee
UPSTREAM: <carry>: Update dockerfiles to use golang-1.26-release-4.23…
tmshort Jun 4, 2026
bb92486
UPSTREAM: <carry>: Updating ose-olm-operator-controller-container ima…
Jun 6, 2026
5f06d73
UPSTREAM: <carry>: Updating ose-olm-catalogd-container image to be co…
Jun 6, 2026
ab3cd96
UPSTREAM: <carry>: Update catalogs for 4.23/5.0
tmshort May 21, 2026
fa3e76a
UPSTREAM: <drop>: go mod vendor
Jul 15, 2026
af97c75
UPSTREAM: <drop>: remove upstream GitHub configuration
Jul 15, 2026
d51978e
UPSTREAM: <drop>: configure the commit-checker
Jul 15, 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