Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
  •  
  •  
  •  
8 changes: 8 additions & 0 deletions .github/workflows/dev-containers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: actions/setup-node@v5
with:
node-version: '20.x'
Expand Down Expand Up @@ -69,6 +71,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive
- name: Setup Node.js
uses: actions/setup-node@v5
with:
Expand Down Expand Up @@ -117,6 +121,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive
- name: Setup Node.js
uses: actions/setup-node@v5
with:
Expand Down Expand Up @@ -151,6 +157,8 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- name: Run install.sh tests
run: sh scripts/install.test.sh

Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/standalone-prototype.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v5
with:
submodules: recursive

- name: Setup Node.js
uses: actions/setup-node@v5
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/standalone-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ jobs:
NODE_VERSION: '20.19.1'
steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Setup Node
uses: actions/setup-node@v4
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/test-docker-v20.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ jobs:

steps:
- uses: actions/checkout@v6
with:
submodules: recursive

- uses: actions/setup-node@v5
with:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/test-docker-v29.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ jobs:

steps:
- uses: actions/checkout@v6
with:
submodules: recursive

- uses: actions/setup-node@v5
with:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/test-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive
- name: Setup Node.js
uses: actions/setup-node@v5
with:
Expand Down
1 change: 1 addition & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[submodule "upstream"]
path = upstream
url = https://github.com/devcontainers/cli
branch = main
5 changes: 5 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,8 @@ When asked to update upstream:
## Pathing expectations
- Tests, scripts, and docs that need upstream assets should reference paths under `upstream/...` explicitly.
- Avoid hardcoded assumptions that upstream files exist at repository root.

## Submodule bump checklist
- Use `git submodule update --init --recursive` before running migration/parity checks.
- Record the new pinned revision with `git rev-parse HEAD:upstream` in PR notes/tests when changing compatibility behavior.
- Keep submodule updates reviewable by separating the submodule pointer bump from project-owned compatibility fixes when practical.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,12 @@ If you clone this repository without submodules, initialize them before building
git submodule update --init --recursive
```

To inspect the exact compatibility target currently pinned by this repo:

```bash
git rev-parse HEAD:upstream
```

## Context

A development container allows you to use a container as a full-featured development environment. It can be used to run an application, to separate tools, libraries, or runtimes needed for working with a codebase, and to aid in continuous integration and testing. Dev containers can be run locally or remotely, in a private or public cloud.
Expand Down
15 changes: 10 additions & 5 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -182,10 +182,14 @@ This balances near-term user value with long-term maintainability.
Move all vendored upstream TypeScript CLI sources out of repo root and treat `upstream/` (git submodule) as the canonical upstream baseline we target for compatibility.

### 1) Repository layout and ownership
- [ ] Confirm `upstream/` is the only place where upstream devcontainers/cli code lives.
- [ ] Remove duplicated upstream-owned files currently checked in at repository root once replacements are wired.
- [ ] Keep only project-owned integration/porting assets at repository root (Rust code, migration docs, compatibility harness, and project-specific tests).
- [ ] Add/refresh `.gitmodules` and contributor guidance so updating upstream is intentional and reviewable.
- [x] Confirm `upstream/` is the only place where upstream devcontainers/cli code lives.
- Added `collectDuplicateUpstreamPaths(...)` + `evaluateUpstreamSubmoduleCutoverReadiness(...)` with tests so duplicate upstream-owned paths outside `upstream/` are detected from filesystem layout.
- [x] Remove duplicated upstream-owned files currently checked in at repository root once replacements are wired.
- Removed root-level duplicated TypeScript sources/tests that are now sourced exclusively from `upstream/` for upstream-owned logic.
- [x] Keep only project-owned integration/porting assets at repository root (Rust code, migration docs, compatibility harness, and project-specific tests).
- Root `src/` now contains only migration/readiness contract helpers and project-owned tests.
- [x] Add/refresh `.gitmodules` and contributor guidance so updating upstream is intentional and reviewable.
- `.gitmodules` now pins the `upstream` submodule branch and README/AGENTS document explicit submodule update workflow.

### 2) Build/test path migration
- [ ] Audit all test fixtures, scripts, and build commands that currently reference root-level upstream paths.
Expand All @@ -194,7 +198,8 @@ Move all vendored upstream TypeScript CLI sources out of repo root and treat `up
- [ ] Ensure CI jobs execute against `upstream/` sources and fail fast when submodule is missing/uninitialized.

### 3) Compatibility target versioning
- [ ] Define the compatibility contract as: “this repo targets the exact commit pinned in `upstream/`.”
- [x] Define the compatibility contract as: “this repo targets the exact commit pinned in `upstream/`.”
- Added `resolvePinnedUpstreamCommit(...)` and `formatUpstreamCompatibilityContract(...)` helpers (with tests) to make the pinned-commit contract explicit and machine-resolvable.
- [ ] Expose the pinned upstream commit in test output/logging for traceability.
- [ ] Add a dedicated CI check that reports diffs/regressions when submodule commit changes.
- [ ] Create an “update upstream” workflow (bump submodule -> run parity suite -> fix breakages -> merge).
Expand Down
4 changes: 2 additions & 2 deletions esbuild.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,10 @@ const watch = process.argv.indexOf('--watch') !== -1;
`.trimStart()
},
entryPoints: [
'./src/spec-node/devContainersSpecCLI.ts',
'./upstream/src/spec-node/devContainersSpecCLI.ts',
],
tsconfig: 'tsconfig.json',
outbase: 'src',
outbase: 'upstream/src',
};

if (watch) {
Expand Down
8 changes: 0 additions & 8 deletions src/spec-common/async.ts

This file was deleted.

Loading