Skip to content

chore: migrate cloud-foundry-tools - #624

Draft
jacob-kreyenbuehl wants to merge 10 commits into
mainfrom
migration/cloud-foundry-tools
Draft

jacob-kreyenbuehl wants to merge 10 commits into
mainfrom
migration/cloud-foundry-tools

Conversation

@jacob-kreyenbuehl

Copy link
Copy Markdown
Contributor

What

Migrates SAP/cloud-foundry-tools (v8.1.2) into the monorepo under projects/cloud-foundry-tools/. Three packages, all private (never published to npm):

  • packages/backendvscode-cf-tools: the Cloud Foundry Tools VS Code extension (VSIX).
  • packages/frontendcloud-foundry-tools-frontend: Vue 3 webview, bundled into the extension.
  • packages/wrappervscode-wing-cf-tools: deprecated wrapper extension, kept for backward compatibility.

Why

Consolidate the standalone OSS repo into app-studio-toolkit, on the shared pnpm + Changesets toolchain.

Behaviour

No functional change. Pure relocation + toolchain wiring. Same source, same version (8.1.2). Extensions build the same VSIX artifacts.

Reviewer's guide

Commits are ordered and each does one thing:

  1. move — raw copy of the 3 packages. Per-package CHANGELOG.mdCHANGELOG.old.md (+ header); fresh empty CHANGELOG.md. Per-package LICENSE dropped (root REUSE covers legal via legal-copy.js).
  2. wire toolchainprojects/cloud-foundry-tools/tsconfig.base.json (extends root, skipLibCheck); declare @types/rimraf (backend) and lodash (frontend) that were yarn-hoisted in the source and pnpm needs explicit; repository fields.
  3. align build — inline per-package nyc.config.js (source referenced repo-root ../../nyc.config); copy webpack.config.vscode.base.js to project root with pnpm workspace-root module resolution; replace deprecated vsce@1.100.1 with @vscode/vsce@2.24.0 + --no-dependencies (monorepo standard); drop config.commitizen (broke pnpm env-var passing).
  4. eslint — project-scoped relaxations matching the rules the standalone repo carried; ignore dist/out/coverage.
  5. format — Prettier reflow to the monorepo profile (source used --print-width 120).
  6. changeset + coverage — 3 private packages added to changeset ignore (no fixed group: no internal workspace edges); backend + wrapper redirect nyc to ./reports so these VS Code extensions stay out of the root merged 100% gate (which targets library packages) and keep their own thresholds — matching the guided-development / yeoman-ui extension-backend precedent. coverage:copy exports lcov for coveralls.
  7. ci — collect backend + wrapper VSIX artifacts.

Verification (local, scoped gate)

  • All 3 packages' ci pass: backend 299 tests, frontend 43, wrapper 2; VSIX packaged for backend + wrapper.
  • eslint clean, prettier --check clean, changeset status shows no graph break.
  • Root merge-coverage passes (cf-tools extensions correctly excluded; library gate stays 100%).
  • Fidelity: all 17 moved source files byte-faithful to the source after Prettier normalization.

Notes

  • @sap/cf-tools@^3.2.2 (backend dep) resolves from npm; the in-flight cf-tools-api migration (Migrate cloud-foundry-tools-api (@sap/cf-tools) into the monorepo #615) doesn't change that (semver range still satisfied). Cross-project consumer stays exact-pinned per policy.
  • No changeset in this PR (pure relocation; a maintenance-release changeset would follow post-merge — though these are private, so no npm release).

Independent-review gate pending; opening as draft until the reviews are complete.

Relocate the cloud-foundry-tools extension (backend, frontend, wrapper) from
the standalone SAP/cloud-foundry-tools repo (v8.1.2) into projects/cloud-foundry-tools/.
Raw move; monorepo wiring and toolchain fixes follow in subsequent commits.

Per-package CHANGELOG.md preserved as CHANGELOG.old.md; fresh empty CHANGELOG.md
started for the monorepo. Per-package LICENSE dropped (root REUSE covers legal).

Signed-off-by: Jacob Kreyenbuehl <jacob.kreyenbuehl@sap.com>
- add projects/cloud-foundry-tools/tsconfig.base.json (extends root base, skipLibCheck)
- backend: declare @types/rimraf (yarn-hoisted in source, pnpm needs it explicit)
- frontend: declare lodash (used but undeclared, relied on yarn hoist)
- repository fields point at the monorepo
- regenerate lockfile

Signed-off-by: Jacob Kreyenbuehl <jacob.kreyenbuehl@sap.com>
- inline per-package nyc.config.js (source referenced repo-root ../../nyc.config)
- copy webpack.config.vscode.base.js to project root; adapt module resolution
  to pnpm workspace-root node_modules (task-explorer precedent)
- backend + wrapper: replace deprecated vsce@1.100.1 with @vscode/vsce@2.24.0
  and 'vsce package --no-dependencies' (monorepo standard, no yarn dependency)
- remove config.commitizen (broke pnpm env-var passing; commitlint runs at root)

Signed-off-by: Jacob Kreyenbuehl <jacob.kreyenbuehl@sap.com>
Relax the same rule set the standalone repo carried (require-description,
no-explicit-any, no-unused-expressions, unbound-method, etc.) scoped to
projects/cloud-foundry-tools/**, plus prefer-spread/prefer-rest-params.
Ignore dist/out/coverage build output. TODO: tighten incrementally.

Signed-off-by: Jacob Kreyenbuehl <jacob.kreyenbuehl@sap.com>
Reflow to the monorepo Prettier profile (default width) from the source's
--print-width 120. Also disable the type-aware unsafe-* eslint rules for the
project (source relaxed them; matches task-explorer precedent).

Signed-off-by: Jacob Kreyenbuehl <jacob.kreyenbuehl@sap.com>
- add the 3 private packages (vscode-cf-tools, cloud-foundry-tools-frontend,
  vscode-wing-cf-tools) to changeset ignore; none are published to npm, so
  changeset must not bump them (prevents upload-vsix cascade). No fixed group
  needed: no internal workspace edges among them.
- backend + wrapper: redirect nyc temp-dir/report-dir to ./reports so these
  VS Code extensions stay out of the root merged 100% gate (which targets
  library packages), keeping their own thresholds. Matches guided-development
  and yeoman-ui extension-backend precedent. coverage:copy exports lcov for
  coveralls; gitignore reports/.

Signed-off-by: Jacob Kreyenbuehl <jacob.kreyenbuehl@sap.com>
Signed-off-by: Jacob Kreyenbuehl <jacob.kreyenbuehl@sap.com>
@jacob-kreyenbuehl jacob-kreyenbuehl self-assigned this Sep 21, 2026
Signed-off-by: Jacob Kreyenbuehl <jacob.kreyenbuehl@sap.com>
…e out/

The exact 'vue: 3.3.8' pin forced a second Vue tree into the workspace, which
polluted the shared @vue/test-utils resolution and broke inquirer-gui's tests
(app.onUnmount is a Vue 3.5 API). Widen to '^3.3.4' so the frontend joins the
existing vue@3.5.34 tree (no second tree); its 43 tests still pass. Other
Vue toolchain pins left at source versions. Also gitignore the backend/wrapper
out/ compile output at the project level.

Signed-off-by: Jacob Kreyenbuehl <jacob.kreyenbuehl@sap.com>
…-instance

Adding cloud-foundry-tools triggers a full pnpm re-resolution. With task-explorer's
vue_frontend_rpc pinning vue@3.4.3, pnpm 11.1.1 then binds the published
@sap-devx/inquirer-gui@3.x transitive vuetify to vue@3.4.3 instead of vue@3.5.34.
vuetify@3.12.6 calls app.onUnmount (a Vue 3.5 API) in its install(), so the
inquirer-gui plugin tests fail at runtime with 'app.onUnmount is not a function'.

Pin vue to 3.5.34 workspace-wide (overrides). 3.5.34 was already the version every
Vue consumer resolved to on main except task-explorer's rpc; 3.5.34 is backward
compatible with its 3.4.3 pin (verified: vue_frontend_rpc ci + inquirer-gui plugin
tests + task-explorer all pass). Eliminates vue@3.4.3 from the tree, so no dual Vue
instance. Restores the auto-complete-plugin test to green.

Signed-off-by: Jacob Kreyenbuehl <jacob.kreyenbuehl@sap.com>
@github-actions

Copy link
Copy Markdown
Contributor

Build Report

badge

Please note:

  1. Files only stay for around 14 days!
  2. This comment will be updated with the data of the last successful build of this PR.
Name Link
Commit 8697106
Logs https://github.com/SAP/app-studio-toolkit/actions/runs/35588409699
VSIX Files https://github.com/SAP/app-studio-toolkit/actions/runs/35588409699/artifacts/10633004549

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant