Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 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
507310b
:seedling: Bump docker/login-action from 4.2.0 to 4.3.0 (#2816)
dependabot[bot] Jul 16, 2026
61c439f
:seedling: Bump dorny/paths-filter from 4.0.1 to 4.0.2 (#2817)
dependabot[bot] Jul 16, 2026
7909550
:seedling: Bump golang.org/x/sync from 0.21.0 to 0.22.0 (#2818)
dependabot[bot] Jul 16, 2026
8f70eec
Merge branch 'main' into synchronize
Jul 17, 2026
df9190e
UPSTREAM: <carry>: Add OpenShift specific files
dtfranz Oct 26, 2023
a595b1e
UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
camilamacedo86 Oct 6, 2025
8d0c773
UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
camilamacedo86 Oct 13, 2025
3cc31b7
UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp …
camilamacedo86 Oct 13, 2025
234a2ff
UPSTREAM: <carry>: Update OCP catalogs to v4.21
tmshort Oct 13, 2025
5205ef8
UPSTREAM: <carry>: support singleown cases in disconnected
kuiwang02 Oct 16, 2025
4c2092d
UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
kuiwang02 Oct 17, 2025
1183773
UPSTREAM: <carry>: Define Default timeouts and apply their usage accr…
camilamacedo86 Oct 22, 2025
478d64c
UPSTREAM: <carry>: Update to new feature-gate options in helm
tmshort Oct 22, 2025
063cd32
UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniq…
camilamacedo86 Oct 22, 2025
703a0cc
UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comme…
camilamacedo86 Oct 24, 2025
6101e76
UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inlin…
kuiwang02 Nov 3, 2025
0925810
UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension…
camilamacedo86 Nov 4, 2025
c831784
UPSTREAM: <carry>: Add [OTP] to migrated cases
kuiwang02 Nov 7, 2025
c082c1d
UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
camilamacedo86 Nov 5, 2025
f67b88a
UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version…
camilamacedo86 Nov 10, 2025
87533ea
UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and depe…
camilamacedo86 Nov 11, 2025
94c4937
UPSTREAM: <carry>: add disconnected environment support with custom p…
kuiwang02 Nov 12, 2025
f3d1334
UPSTREAM: <carry>: migrate jiazha test cases to OTE
jianzhangbjz Nov 14, 2025
c52fcb3
UPSTREAM: <carry>: migrate clustercatalog case to ote
Xia-Zhao-rh Oct 17, 2025
05f3f31
UPSTREAM: <carry>: migrate olmv1 QE stress cases
kuiwang02 Nov 20, 2025
9bd1744
UPSTREAM: <carry>: Use busybox/httpd to simulate probes
tmshort Nov 25, 2025
8853304
UPSTREAM: <carry>: migrate olmv1 QE cases
Xia-Zhao-rh Nov 25, 2025
2960bb9
UPSTREAM: <carry>: add agent for olmv1 qe cases
kuiwang02 Oct 21, 2025
af896e1
UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
tmshort Dec 3, 2025
46f9f12
UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
rashmigottipati Dec 11, 2025
9299a8f
UPSTREAM: <carry>: address review comments through addl prompts
rashmigottipati Dec 11, 2025
27535ac
UPSTREAM: <carry>: addressing some more review comments
rashmigottipati Dec 11, 2025
409d9fa
UPSTREAM: <carry>: remove DCO line
rashmigottipati Dec 11, 2025
945ca24
UPSTREAM: <carry>: migrate bandrade test cases to OTE
bandrade Nov 18, 2025
6250f27
UPSTREAM: <carry>: update metadata
bandrade Dec 3, 2025
d15a7d4
UPSTREAM: <carry>: remove originalName
bandrade Dec 3, 2025
bb0c19d
UPSTREAM: <carry>: update 80458's timeout to 180s
jianzhangbjz Dec 8, 2025
db3b4ac
UPSTREAM: <carry>: update 83026 to specify the clustercatalog
jianzhangbjz Dec 15, 2025
df4ff0e
UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
oceanc80 Dec 18, 2025
bdcee4d
UPSTREAM: <carry>: Use oc client for running e2e tests
pedjak Jan 13, 2026
0fe257f
UPSTREAM: <carry>: Run upstream e2e tests tagged with `@catalogd-update`
pedjak Jan 14, 2026
997449a
UPSTREAM: <carry>: enhance case to make it more stable
kuiwang02 Jan 6, 2026
ddfd44b
UPSTREAM: <carry>: add service account to curl job
ehearne-redhat Jan 7, 2026
0a95832
UPSTREAM: <carry>: move sa creation out of buildCurlJob()
ehearne-redhat Jan 8, 2026
8295192
UPSTREAM: <carry>: comment out delete service account
ehearne-redhat Jan 9, 2026
eba159e
UPSTREAM: <carry>: move defercleanup for sa for LIFO
ehearne-redhat Jan 9, 2026
10903d7
UPSTREAM: <carry>: add polling so job fully deleted before proceed
ehearne-redhat Jan 12, 2026
569bad0
UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redha…
sosiouxme Jan 20, 2026
e0c6c89
UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
camilamacedo86 Jan 8, 2026
f6fd4b0
UPSTREAM: <carry>: config watchnamespace cases
kuiwang02 Jan 6, 2026
875d5f4
UPSTREAM: <carry>: enhance ocp-79770
Xia-Zhao-rh Jan 26, 2026
9579cc5
UPSTREAM: <carry>: upgrade version support case
kuiwang02 Jan 28, 2026
d79d58a
UPSTREAM: <carry>: Remove installed condition check from auth preflig…
Jan 30, 2026
3f17a17
UPSTREAM: <carry>: Add openshift/api dependency
Jan 30, 2026
32ba12e
UPSTREAM: <carry>: Add boxcutter specific preflight auth test
Jan 30, 2026
2a43bf6
UPSTREAM: <carry>: adjust watchnamespace case based on change
kuiwang02 Feb 2, 2026
d1853b7
UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root…
camilamacedo86 Feb 3, 2026
b997f62
UPSTREAM: <carry>: add 83979 automation
bandrade Feb 2, 2026
a25c654
UPSTREAM: <carry>: add 85889 automation
bandrade Feb 2, 2026
8e35285
UPSTREAM: <carry>: Update test-operator startup script to fix pod pro…
Feb 4, 2026
ca99dee
UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
Feb 7, 2026
aabd743
UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles…
camilamacedo86 Feb 24, 2026
5dcfa72
UPSTREAM: <carry>: adjust sa and permission test cases per new change…
kuiwang02 Feb 2, 2026
2ecf4e7
UPSTREAM: <carry>: Update OCP catalogs to v4.22
camilamacedo86 Feb 3, 2026
79a882b
UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and…
camilamacedo86 Feb 26, 2026
b712239
UPSTREAM: <carry>: fix 83026 for TP cluster
jianzhangbjz Feb 28, 2026
d41c1b9
UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
kuiwang02 Mar 6, 2026
e3b548a
UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
stbenjam Mar 6, 2026
367e95c
UPSTREAM: <carry>: Increase install timeout and add diagnostic loggin…
camilamacedo86 Mar 11, 2026
2501a7b
UPSTREAM: <carry>: add service account to curl job
ehearne-redhat Mar 2, 2026
e2e9121
UPSTREAM: <carry>: update OCP-75441 to support multi-arch
jianzhangbjz Mar 19, 2026
1406484
UPSTREAM: <carry>: deployment config cases
kuiwang02 Feb 6, 2026
c7f622f
UPSTREAM: <carry>: Add OTE tests for OLMv1 DeploymentConfig support
tmshort Mar 11, 2026
c768546
UPSTREAM: <carry>: Update openshift/api and client-go
tmshort Mar 19, 2026
4bcce79
UPSTREAM: <carry>: Add boxcutter tests
camilamacedo86 Mar 23, 2026
7e393b8
UPSTREAM: <carry>: enhance QE cases
Xia-Zhao-rh Mar 17, 2026
5a70686
UPSTREAM: <carry>: Update quay-operator version to one containing arm…
dtfranz Mar 24, 2026
431d7d4
UPSTREAM: <carry>: verify volume/volumeMount override
kuiwang02 Mar 25, 2026
e21b0eb
UPSTREAM: <carry>: Add long-duration test script and documents
jianzhangbjz Mar 11, 2026
1c39d9e
UPSTREAM: <carry>: Update grpc in default-catalog-consistency tests
tmshort Mar 27, 2026
b35c073
UPSTREAM: <carry>: Rename ClusterExtensionRevision to ClusterObjectSe…
camilamacedo86 Mar 31, 2026
67dd561
UPSTREAM: <carry>: Skip incompatible operator test when Boxcutter use…
camilamacedo86 Mar 31, 2026
12cd7e1
UPSTREAM: <carry>: add ocp-87557
bandrade Feb 8, 2026
a765669
UPSTREAM: <carry>: Add fgiudici as reviewer
fgiudici Mar 31, 2026
5db3a42
UPSTREAM: <carry>: Remove skip for incompatible operator check after …
camilamacedo86 Apr 1, 2026
10dc690
UPSTREAM: <carry>: Test empty affinity erasure and cleanup
kuiwang02 Apr 1, 2026
d7df3e0
UPSTREAM: <carry>: Fix boxcutter finalizer ResourceNames in prefligh…
camilamacedo86 Apr 9, 2026
7ae6d8b
UPSTREAM: <carry>: Expand OTE docs with more comprehensive details
camilamacedo86 Apr 15, 2026
e812c9c
UPSTREAM: <carry>: Disable upstream TLSProfile tests
tmshort Apr 18, 2026
d8939ef
UPSTREAM: <carry>: OTE: Simplify by remove option to configure tests …
camilamacedo86 Apr 20, 2026
ffac438
UPSTREAM: <carry>: OTE - Make OTE local output easier to read
camilamacedo86 Apr 21, 2026
70617fb
UPSTREAM: <carry>: remove dead e2e registry push job and related vari…
joelanford Apr 29, 2026
0b457c8
UPSTREAM: <carry>: OCPBUGS-62517: Set replicas=1, PDB, and pod anti-a…
tmshort Apr 23, 2026
8c61e1f
UPSTREAM: <carry>: fix(test): drop blocking namespace-deletion wait b…
tmshort May 4, 2026
2ab646d
UPSTREAM: <carry>: Fix downstream e2e test invocation
tmshort May 18, 2026
81b39c6
UPSTREAM: <carry>: Delete openshift/registry.Dockerfile
joelanford May 19, 2026
f51b29c
UPSTREAM: <carry>: Remove test-experimenal-e2e
tmshort May 20, 2026
9ba257e
UPSTREAM: <carry>: Update readme Default Catalog Tests
camilamacedo86 May 27, 2026
42dc93d
UPSTREAM: <carry>: add OLMv1 topology-based deployment scaling e2e test
tmshort May 26, 2026
3f71813
UPSTREAM: <carry>: Update dockerfiles to use golang-1.26-release-4.23…
tmshort Jun 4, 2026
b5429b9
UPSTREAM: <carry>: Updating ose-olm-operator-controller-container ima…
Jun 6, 2026
c5f1b99
UPSTREAM: <carry>: Updating ose-olm-catalogd-container image to be co…
Jun 6, 2026
a16839d
UPSTREAM: <carry>: Update catalogs for 4.23/5.0
tmshort May 21, 2026
df3b407
UPSTREAM: <carry>: Remove HelmChartSupport feature gate from experime…
Jul 15, 2026
088272c
UPSTREAM: <drop>: go mod vendor
Jul 17, 2026
978dd47
UPSTREAM: <drop>: remove upstream GitHub configuration
Jul 17, 2026
4469d4d
UPSTREAM: <drop>: configure the commit-checker
Jul 17, 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