From 0724d8f9440f9e71ab2d62ca81a1cefaf78b3251 Mon Sep 17 00:00:00 2001 From: Ramesh Padmanabhaiah <22363102+codeforester@users.noreply.github.com> Date: Wed, 9 Sep 2026 05:50:03 +0530 Subject: [PATCH] fix: declare Base source dependencies in workspace manifest --- CHANGELOG.md | 5 +++++ README.md | 7 +++++++ tests/validate.sh | 33 +++++++++++++++++++++++++++++++++ workspace.yaml | 9 +++++++-- 4 files changed, 52 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28812ae..698813b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,3 +10,8 @@ and versions are tracked in the repo-root `VERSION` file. ### Added - Initialized the repository with the Base-managed repo baseline. + +### Changed + +- Declared `base-bash-libs` as a required source dependency, kept `base-cli` + required, and made the first-party CLI and Bash-library demos optional. diff --git a/README.md b/README.md index d7db757..f27d249 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,13 @@ basectl workspace doctor --manifest workspace.yaml basectl workspace clone --manifest workspace.yaml --dry-run ``` +The manifest keeps Base's source dependencies required: `base`, +`base-bash-libs`, and `base-cli`. The first-party `base-cli-demo` and +`base-bash-libs-demo` repositories remain listed for discovery and workspace +updates, but are optional for a normal Base checkout. Use +`basectl workspace clone --manifest workspace.yaml --include-optional` when a +local checkout also needs those demos. + ## Base This repository is managed by [Base](https://github.com/basefoundry/base). diff --git a/tests/validate.sh b/tests/validate.sh index 319fbbd..fa0b919 100755 --- a/tests/validate.sh +++ b/tests/validate.sh @@ -25,4 +25,37 @@ if grep -Eq 'default_branch:[[:space:]]*master\b' workspace.yaml; then exit 1 fi +assert_manifest_repo() { + local name="$1" + local url="$2" + local required="$3" + + if ! awk -v expected_name="$name" \ + -v expected_url="$url" \ + -v expected_required="$required" ' + /^ - name:/ { + if (in_entry) { + exit + } + in_entry = ($3 == expected_name) + next + } + in_entry && $1 == "url:" { actual_url = $2 } + in_entry && $1 == "default_branch:" { actual_branch = $2 } + in_entry && $1 == "required:" { actual_required = $2 } + END { + exit !(in_entry && actual_url == expected_url && actual_branch == "main" && actual_required == expected_required) + } + ' workspace.yaml; then + printf 'workspace.yaml has an unexpected %s repository contract.\n' "$name" >&2 + exit 1 + fi +} + +assert_manifest_repo base git@github.com:basefoundry/base.git true +assert_manifest_repo base-bash-libs git@github.com:basefoundry/base-bash-libs.git true +assert_manifest_repo base-cli git@github.com:basefoundry/base-cli.git true +assert_manifest_repo base-cli-demo https://github.com/basefoundry/base-cli-demo.git false +assert_manifest_repo base-bash-libs-demo https://github.com/basefoundry/base-bash-libs-demo.git false + printf 'Repository baseline is present.\n' diff --git a/workspace.yaml b/workspace.yaml index c7e84ba..3297b63 100644 --- a/workspace.yaml +++ b/workspace.yaml @@ -9,6 +9,11 @@ repos: default_branch: main required: true + - name: base-bash-libs + url: git@github.com:basefoundry/base-bash-libs.git + default_branch: main + required: true + - name: base-cli url: git@github.com:basefoundry/base-cli.git default_branch: main @@ -17,7 +22,7 @@ repos: - name: base-cli-demo url: https://github.com/basefoundry/base-cli-demo.git default_branch: main - required: true + required: false - name: base-workspace url: git@github.com:basefoundry/base-workspace.git @@ -47,7 +52,7 @@ repos: - name: base-bash-libs-demo url: https://github.com/basefoundry/base-bash-libs-demo.git default_branch: main - required: true + required: false - name: base-platform-tools url: https://github.com/basefoundry/base-platform-tools.git