René's URL Explorer Experiment


Title: fix(features): resolve Features in declaration order; stop treating http:// ids as tarballs by aledbf · Pull Request #76 · spin-stack/devcontainer-cli · GitHub

Open Graph Title: fix(features): resolve Features in declaration order; stop treating http:// ids as tarballs by aledbf · Pull Request #76 · spin-stack/devcontainer-cli

X Title: fix(features): resolve Features in declaration order; stop treating http:// ids as tarballs by aledbf · Pull Request #76 · spin-stack/devcontainer-cli

Description: Two drifts from the reference (TypeScript Dev Container CLI v0.90.0) in how Features are resolved. 1. Feature resolution order What TS does. generateFeaturesConfig → userFeaturesToArray (containerFeaturesConfiguration.ts) iterates Object.keys(config.features), then appends the --additional-features ids the configuration does not name, in their own Object.keys order. JS property order puts integer-like keys first, ascending, then the others in declaration order. features resolve-dependencies uses the same list. That order decides which Feature is processed first: the first failing Feature reported, the log lines, and the dependency graph's worklist (the mermaid output). Before. sortedUserFeatures sorted the ids (up, build, read-configuration, upgrade, compose). features resolve-dependencies took Go map order, which is random. build also ran checkLegacyFeatures before resolving anything: it reported a legacy id even when a Feature declared ahead of it fails first, and even before the image pull (TS reports docker pull failing there). After. The loader records the order of the features keys across the configuration and its override (DevContainer.FeatureOrder, features.KeyOrder of the concatenated member names, matching how deepMergeConfig merges). mergeAdditionalFeatures appends the additional-only ids after them, in the additional JSON's JS order. features.UserFeaturesToArray takes that order and is used everywhere sortedUserFeatures was, plus features resolve-dependencies. It falls back to sorted order only for ids no order names (maps built by callers). checkLegacyFeatures is removed. The legacy error still comes from resolveFeatureID, in resolution order. Call sites checked against TS: outdated and the upgrade --feature rewrite already used the file's declaration order (orderedFeatureKeys). Integer-like ids are never OCI references, so they are unaffected. The disallowed-Features check (featureIDsInOrder) is unchanged. 2. http:// Feature ids What TS does. getFeatureIdType takes only https:// as direct-tarball. An http://… id falls through to fetchOCIFeatureManifestIfExistsFromUserIdentifier. There getRef rejects it without a request (Path '/host/…' … failed validation), because the path always starts with /. TS then logs Could not resolve Feature manifest for ''… and returns github-repo. processFeatureIdentifier's GitHub branch refuses any id that is not owner/repo/feature and logs Could not resolve Feature ''. Ensure the Feature is published…. It returns undefined, and buildDependencyGraph throws ERR: Feature '' could not be processed. You may not have permission to access this Feature, or may not be logged in. If the issue persists, report this to the Feature author. Before. Go downloaded the tarball over plain HTTP: ClassifyID accepted http://. After. ClassifyID accepts only https://. When oci.ParseRef rejects a reference that TS's GitHub Releases fallback would also refuse (more than one @, or not owner/repo/<[A-Za-z0-9_-]*>), the Feature is left unprocessed after logging the reference's warning and error lines, so the user sees the reference's error. A reference the fallback would fetch from GitHub Releases still fails with the parse error, because this CLI does not implement that fallback (already documented). This is a breaking change: a configuration with a working http:// Feature now fails. docs/migration.md has the migration: serve the tarball over HTTPS, using NODE_EXTRA_CA_CERTS/SSL_CERT_FILE for a private CA, or publish to an OCI registry. The commit uses fix(features)!: with a BREAKING CHANGE: footer. Tests Each new test was checked against origin/main and fails there: internal/config: TestLoadOrdersFeatureIDsAsJavaScriptEnumeratesThem covers integer-like ids first and an override adding Features after the base's. TestLoadKeepsContainerEnvAndFeatureOptionOrder is extended for FeatureOrder. internal/features: TestUserFeaturesToArrayFollowsTheOrderThenSortsTheRest. TestClassifyID now expects http:// to be OCI. internal/cli: TestReadConfigurationReportsTheFirstFeatureInDeclarationOrder covers declaration order, integer-like ids, an override adding a Feature, and additional Features after the config's, including integer-like ones. TestReadConfigurationReportsAnAdditionalIntegerLikeIDAfterTheConfigs. TestFeaturesResolveDependenciesListsFeaturesInDeclarationOrder. TestMergeAdditionalFeaturesAppendsTheirOrderAfterTheConfigs. TestPlainHTTPFeatureIDIsNotATarball: no request is made, and both processors log the reference's lines. TestUnparseableFeatureReferences: the fallback's refusals, and the owner/repo/feature parse error that is kept. TestResolveFeatureIDRefusesLegacyIDs keeps the assertions of the removed TestCheckLegacyFeatures. gradle is dropped there because it never reaches resolveFeatureID; TestFetchFeatureSetsMovesDeprecatedFeaturesIntoOptions covers it. The tests that served tarball Features over plain HTTP now use a trusted TLS test server (serveTrustedTLS). ts-oracle: getFeatureIdType("http://example.com/devcontainer-feature-node.tgz") returns github-repo (generated with task testdata:ts-oracle). The Go adapter maps a reference oci.ParseRef rejects to github-repo. Parity cases (docs/parity/parity-matrix.yaml). All match TS and all fail with the origin/main binary: features.resolve-dependencies-declaration-order-success (contract): mermaid order of 5 local Features. build.features-first-failure-in-declaration-order-error (runtime): ../zeta refused before legacy zz. build.features-integer-like-ids-first-error (runtime): 9 before 10. build.additional-features-after-config-error (runtime). build.features-http-id-not-a-tarball-error (runtime). Checks All checks ran locally in the worktree. The shared host has a stray /tmp/.git and its Docker is shared with other runs. go build ./..., go vet ./...: pass Affected package tests (internal/config, internal/features, internal/cli, with TMPDIR=/var/tmp/…): pass. The only failures are the parity cases that the /tmp/.git workspace breaks. go tool task lint: pass (0 issues; ctxlife, testquality, refs, mutate -stale-exempts, deadgate and taskgate all OK) TMPDIR=/var/tmp/… BASE=origin/main go tool task mutate: 195 refused, 0 survived, 5 did not build TMPDIR=/var/tmp/… go tool task test:race: pass go tool task testdata:ts-oracle and testdata:ts-oracle:check: pass (13 goldens) go tool task parity:contract: 115 matched. The 2 that failed are read-configuration.features-configuration-local-feature-{key-order,metadata}-success, the known /tmp/.git cases. go tool task spec:compliance: pass go tool task test:e2e -- -timeout 40m: pass. The default 5m timeout ran out inside TestE2E_CABundle on the loaded shared Docker; that test passes alone. Runtime parity: the 74 Feature/lockfile/upgrade cases across build, up, read-configuration, features and upgrade, including the 4 new build cases. 61 matched. 4 failed the same way with the origin/main binary, all from /tmp/.git: read-configuration.merged-image-registry-features-success, read-configuration.features-configuration-oci-feature-key-order-success, read-configuration.feature-host-variables-merged-success and features.test-single-scenario-success. The compose up failures were Docker contention. Rerun alone, 6 of 9 matched. The other 3 failed only on their cleanup command timing out (exit=-1), with no output difference. The full PARITY_COMMAND=build,features,read-configuration,upgrade run hit its 1h timeout on the shared Docker. CI on this PR: all green, including parity-runtime (0), parity-runtime (1), e2e and mutate. 🤖 Generated with Claude Code

Open Graph Description: Two drifts from the reference (TypeScript Dev Container CLI v0.90.0) in how Features are resolved. 1. Feature resolution order What TS does. generateFeaturesConfig → userFeaturesToArray (containerF...

X Description: Two drifts from the reference (TypeScript Dev Container CLI v0.90.0) in how Features are resolved. 1. Feature resolution order What TS does. generateFeaturesConfig → userFeaturesToArray (containerF...

Opengraph URL: https://github.com/spin-stack/devcontainer-cli/pull/76

X: @github

direct link

Domain: github.com

react-profiling0
react-import-mapreact,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf
route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:cbbd7134-5ec1-6e35-eb6d-e97367069a61
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idC54C:275C5E:11CF78:194720:6AF6EA67
html-safe-nonce219c340f051a2654eed03d85c5196d53d3bbc798e1d2d9eed7e5f69d4617b950
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDNTRDOjI3NUM1RToxMUNGNzg6MTk0NzIwOjZBRjZFQTY3IiwidmlzaXRvcl9pZCI6IjM2MzMwNTQ2ODc5MTg3NDYyMTYiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac989e05d9574628908023b95cfb353ac74c373b90b692de4f5422ffb426688b20
hovercard-subject-tagpull_request:5290891482
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/spin-stack/devcontainer-cli/pull/76/files
twitter:imagehttps://avatars.githubusercontent.com/u/161571?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/161571?s=400&v=4
og:image:altTwo drifts from the reference (TypeScript Dev Container CLI v0.90.0) in how Features are resolved. 1. Feature resolution order What TS does. generateFeaturesConfig → userFeaturesToArray (containerF...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None19e5351f91f68268b5c88c922504b59eeb230085b5d92546247a28dff0c02812
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/spin-stack/devcontainer-cli git https://github.com/spin-stack/devcontainer-cli.git
octolytics-dimension-user_id253817182
octolytics-dimension-user_loginspin-stack
octolytics-dimension-repository_id1297553254
octolytics-dimension-repository_nwospin-stack/devcontainer-cli
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id1297553254
octolytics-dimension-repository_network_root_nwospin-stack/devcontainer-cli
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release25a4eb53c5e867cec09489ddfc8dc9916f51d01e
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/spin-stack/devcontainer-cli/pull/76/files#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fspin-stack%2Fdevcontainer-cli%2Fpull%2F76%2Ffiles
GitHubRepository hosting, code review, and collaborationhttps://github.com/platform
CopilotAI coding agent for tasks, projects, and automated workhttps://github.com/features/copilot
ActionsCI/CD and automationhttps://github.com/features/actions
Code QualityQuality analysis, fixes, and enforcementhttps://github.com/features/code-quality
CodespacesCloud development environmentshttps://github.com/features/codespaces
Code SecurityVulnerability detection and remediationhttps://github.com/security/advanced-security/code-security
Secret ProtectionSecret scanning and leak preventionhttps://github.com/security/advanced-security/secret-protection
All Featureshttps://github.com/features
Documentationhttps://docs.github.com/en
Traininghttps://learn.github.com/skills
Certificationshttps://learn.github.com/credentials
Build with Copilothttps://github.com/features/ai
Customize Copilothttps://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview
Integrationshttps://github.com/marketplace
Trending reposhttps://github.com/trending
GitHub Sponsorshttps://github.com/open-source/sponsors
Developer articleshttps://github.com/resources/articles
ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place.https://github.blog/changelog/
Enterpriseshttps://github.com/enterprise
Teamhttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
See all industrieshttps://github.com/solutions/industry
Why GitHubhttps://github.com/why-github
Customer Storieshttps://github.com/customer-stories
Business insightshttps://github.com/solutions/executive-insights
Trust Centerhttps://github.com/trust-center
GitHub Advanced SecurityEnterprise-grade code securityhttps://github.com/security/advanced-security
Copilot for businessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Documentationhttps://docs.github.com/en
Resource centerhttps://github.com/resources
Bloghttps://github.blog/
Events & webinarshttps://github.com/resources/events
Community Forumhttps://github.com/orgs/community/discussions
Customer Storieshttps://github.com/customer-stories
Integrationshttps://github.com/marketplace
Customer supporthttps://help.github.com/
Traininghttps://learn.github.com/skills
GitHub Statushttps://www.githubstatus.com/
Abouthttps://github.com/about
Partnershttps://github.com/partners
Changeloghttps://github.blog/changelog/
GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub.https://githubuniverse.com/
Pricinghttps://github.com/pricing
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fspin-stack%2Fdevcontainer-cli%2Fpull%2F76%2Ffiles
Sign uphttps://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=spin-stack%2Fdevcontainer-cli
Reloadhttps://github.com/spin-stack/devcontainer-cli/pull/76/files
Reloadhttps://github.com/spin-stack/devcontainer-cli/pull/76/files
Reloadhttps://github.com/spin-stack/devcontainer-cli/pull/76/files
spin-stackhttps://github.com/spin-stack
devcontainer-clihttps://github.com/spin-stack/devcontainer-cli
Codehttps://github.com/spin-stack/devcontainer-cli
Issueshttps://github.com/spin-stack/devcontainer-cli/issues
Pull requests3 (3)https://github.com/spin-stack/devcontainer-cli/pulls
Actionshttps://github.com/spin-stack/devcontainer-cli/actions
Security and qualityhttps://github.com/spin-stack/devcontainer-cli/security
Insightshttps://github.com/spin-stack/devcontainer-cli/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fspin-stack%2Fdevcontainer-cli%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fspin-stack%2Fdevcontainer-cli%2Fissues%2Fnew%2Fchoose
aledbfhttps://github.com/aledbf
mainhttps://github.com/spin-stack/devcontainer-cli/tree/main
feature-resolution-orderhttps://github.com/spin-stack/devcontainer-cli/tree/feature-resolution-order
Conversation 0 https://github.com/spin-stack/devcontainer-cli/pull/76
Commits 2 https://github.com/spin-stack/devcontainer-cli/pull/76/commits
Checks 13 https://github.com/spin-stack/devcontainer-cli/pull/76/checks
Files changed https://github.com/spin-stack/devcontainer-cli/pull/76/files
Please reload this pagehttps://github.com/spin-stack/devcontainer-cli/pull/76/files
fix(features): resolve Features in declaration order; stop treating http:// ids as tarballs https://github.com/spin-stack/devcontainer-cli/pull/76/files#top
Show all changes 2 commits https://github.com/spin-stack/devcontainer-cli/pull/76/files
990e334 fix(features): resolve Features in the configuration's declaration order aledbf Nov 13, 2026 https://github.com/spin-stack/devcontainer-cli/pull/76/commits/990e334272882f96595d6f8236d167b62d52378f
f1370a2 fix(features)!: stop treating http:// Feature ids as tarball URLs aledbf Nov 13, 2026 https://github.com/spin-stack/devcontainer-cli/pull/76/commits/f1370a2ab1f12d8c46657400c101f38696a76650
Clear filters https://github.com/spin-stack/devcontainer-cli/pull/76/files
Please reload this pagehttps://github.com/spin-stack/devcontainer-cli/pull/76/files
Please reload this pagehttps://github.com/spin-stack/devcontainer-cli/pull/76/files
migration.md https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
parity-matrix.yaml https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-dd6a00d02f71b8af40e9134f99072205175e8014a85550c5a476d653587e7d3e
build.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-e5c5aee1b6ec3a6aeb2eb897d526ceadcb3d11b32b0beb145e3f33e5c7a11dd0
build_held_test.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-dca227fc2633ee15827081bc24719b5a9b8579beb96caacbf451826630080200
compose_up.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-dbc523062af4a676a3d4f79a697a95b9f3f61129a4def517a66f83fb31acc1fb
compose_up_held_test.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-c6cf5847fea521a8f6b54ab36e22e891040f8948aafd1d7edee55a595d14d459
feature_deps.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-8ae36c9742b728b2d54d2a5f6be66336a10f02d511a3284b9accd4bcd9deb6e2
feature_install.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-81ba00af4680e2756fc9816a79151abc1541143778a4f6478a27c22de87a2c6b
feature_install_held_test.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-c69b329c875fd196dcb21f638012cfd428393edd9ebb1041c345464f899969bf
feature_install_test.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-f2a5ddc5ad7f8dbdd28d9e3b02b8eb755c489375e62e4b4bf4183739d46b112f
feature_order_test.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-26489792c12b675f0effbc5d3373d747312b6e902c0e79306dfd8672063d72a5
feature_tarball_test.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-986f7df0b2c975922f895f5cc039906b1e83b2294497bd0709a3cd3f9f75e87f
features_resolve_deps.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-b2977a5fe5e783bf1c39669f0d00865c3dbb474ee5903589d090011e8c92e220
helpers.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-6424733c1b3591f07fb95b78918927331a746eef0fe1f47b81a293f6d3247d8c
helpers_held_test.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-74b0736112397c667470973df8c172c7a531941712e4a38eabe053655eb5d54b
outdated.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-d6d0031c8961daadcc48c5e4189478eca70b731b844f3c692763b03bba0b31e1
pure_helpers_test.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-45be68d09df4c54e8ab615a6c7c201d5dbaf8bf9a2c83dad457ec8892ff882c0
read_configuration.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-f2f569e7daee617737f15f7ab2227fa86789237ab01cf3a38b53cfdfde5f5555
up.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-e4159340a020b2901eae16cf8957d0bea9af63523ad9754862feb45a400e2190
key_order_test.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-6e8fa66fd573c3552044c108be91fc1c74233e916f9dfd5299704ac878cad0d8
loader.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-a55b4592fb97258dbbc104d56e8c209b1ee95dd15fbe36716b2159b7d74a9516
types.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-cf43073bea68596220286d00dbc2c934e72c893038ffe8aac2614d94b74a4158
resolve.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-aa0422f8a7d15617b02baaf65f8a76a7979db0f6c2d8d93d528a5af717e406fe
resolve_test.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-44ca9cf2916950c5021e73e65539b63869eb3b7173cb4d295ba14e5c7bdb50b3
legacy.json https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-68fc7831508f299c184fe8973796dbc0b94e677857618ea86ed778393a08eb44
ts_oracle_test.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-a5cb442847727d4336ce55e49cc0d840ed5662b6f49cde4dac531593ce87da3d
types.go https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-b8690438462902d3ade7458c8e6ccc5e279259062dc5295dd3f30bda988859c3
oracle.ts https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-2d5bc305815198e4593286fbe7f0840fae6d464138c581b356f2e62bfe791310
docs/migration.mdhttps://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
View file https://github.com/spin-stack/devcontainer-cli/blob/f1370a2ab1f12d8c46657400c101f38696a76650/docs/migration.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spin-stack/devcontainer-cli/pull/76/{{ revealButtonHref }}
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
docs/parity/parity-matrix.yamlhttps://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-dd6a00d02f71b8af40e9134f99072205175e8014a85550c5a476d653587e7d3e
View file https://github.com/spin-stack/devcontainer-cli/blob/f1370a2ab1f12d8c46657400c101f38696a76650/docs/parity/parity-matrix.yaml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spin-stack/devcontainer-cli/pull/76/{{ revealButtonHref }}
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-dd6a00d02f71b8af40e9134f99072205175e8014a85550c5a476d653587e7d3e
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-dd6a00d02f71b8af40e9134f99072205175e8014a85550c5a476d653587e7d3e
internal/cli/build.gohttps://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-e5c5aee1b6ec3a6aeb2eb897d526ceadcb3d11b32b0beb145e3f33e5c7a11dd0
View file https://github.com/spin-stack/devcontainer-cli/blob/f1370a2ab1f12d8c46657400c101f38696a76650/internal/cli/build.go
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spin-stack/devcontainer-cli/pull/76/{{ revealButtonHref }}
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-e5c5aee1b6ec3a6aeb2eb897d526ceadcb3d11b32b0beb145e3f33e5c7a11dd0
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-e5c5aee1b6ec3a6aeb2eb897d526ceadcb3d11b32b0beb145e3f33e5c7a11dd0
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-e5c5aee1b6ec3a6aeb2eb897d526ceadcb3d11b32b0beb145e3f33e5c7a11dd0
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-e5c5aee1b6ec3a6aeb2eb897d526ceadcb3d11b32b0beb145e3f33e5c7a11dd0
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-e5c5aee1b6ec3a6aeb2eb897d526ceadcb3d11b32b0beb145e3f33e5c7a11dd0
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-e5c5aee1b6ec3a6aeb2eb897d526ceadcb3d11b32b0beb145e3f33e5c7a11dd0
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-e5c5aee1b6ec3a6aeb2eb897d526ceadcb3d11b32b0beb145e3f33e5c7a11dd0
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-e5c5aee1b6ec3a6aeb2eb897d526ceadcb3d11b32b0beb145e3f33e5c7a11dd0
internal/cli/build_held_test.gohttps://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-dca227fc2633ee15827081bc24719b5a9b8579beb96caacbf451826630080200
View file https://github.com/spin-stack/devcontainer-cli/blob/f1370a2ab1f12d8c46657400c101f38696a76650/internal/cli/build_held_test.go
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spin-stack/devcontainer-cli/pull/76/{{ revealButtonHref }}
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-dca227fc2633ee15827081bc24719b5a9b8579beb96caacbf451826630080200
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-dca227fc2633ee15827081bc24719b5a9b8579beb96caacbf451826630080200
internal/cli/compose_up.gohttps://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-dbc523062af4a676a3d4f79a697a95b9f3f61129a4def517a66f83fb31acc1fb
View file https://github.com/spin-stack/devcontainer-cli/blob/f1370a2ab1f12d8c46657400c101f38696a76650/internal/cli/compose_up.go
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spin-stack/devcontainer-cli/pull/76/{{ revealButtonHref }}
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-dbc523062af4a676a3d4f79a697a95b9f3f61129a4def517a66f83fb31acc1fb
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-dbc523062af4a676a3d4f79a697a95b9f3f61129a4def517a66f83fb31acc1fb
internal/cli/compose_up_held_test.gohttps://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-c6cf5847fea521a8f6b54ab36e22e891040f8948aafd1d7edee55a595d14d459
View file https://github.com/spin-stack/devcontainer-cli/blob/f1370a2ab1f12d8c46657400c101f38696a76650/internal/cli/compose_up_held_test.go
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spin-stack/devcontainer-cli/pull/76/{{ revealButtonHref }}
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-c6cf5847fea521a8f6b54ab36e22e891040f8948aafd1d7edee55a595d14d459
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-c6cf5847fea521a8f6b54ab36e22e891040f8948aafd1d7edee55a595d14d459
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-c6cf5847fea521a8f6b54ab36e22e891040f8948aafd1d7edee55a595d14d459
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-c6cf5847fea521a8f6b54ab36e22e891040f8948aafd1d7edee55a595d14d459
internal/cli/feature_deps.gohttps://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-8ae36c9742b728b2d54d2a5f6be66336a10f02d511a3284b9accd4bcd9deb6e2
View file https://github.com/spin-stack/devcontainer-cli/blob/f1370a2ab1f12d8c46657400c101f38696a76650/internal/cli/feature_deps.go
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spin-stack/devcontainer-cli/pull/76/{{ revealButtonHref }}
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-8ae36c9742b728b2d54d2a5f6be66336a10f02d511a3284b9accd4bcd9deb6e2
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-8ae36c9742b728b2d54d2a5f6be66336a10f02d511a3284b9accd4bcd9deb6e2
internal/cli/feature_install.gohttps://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-81ba00af4680e2756fc9816a79151abc1541143778a4f6478a27c22de87a2c6b
View file https://github.com/spin-stack/devcontainer-cli/blob/f1370a2ab1f12d8c46657400c101f38696a76650/internal/cli/feature_install.go
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spin-stack/devcontainer-cli/pull/76/{{ revealButtonHref }}
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-81ba00af4680e2756fc9816a79151abc1541143778a4f6478a27c22de87a2c6b
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-81ba00af4680e2756fc9816a79151abc1541143778a4f6478a27c22de87a2c6b
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-81ba00af4680e2756fc9816a79151abc1541143778a4f6478a27c22de87a2c6b
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-81ba00af4680e2756fc9816a79151abc1541143778a4f6478a27c22de87a2c6b
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-81ba00af4680e2756fc9816a79151abc1541143778a4f6478a27c22de87a2c6b
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-81ba00af4680e2756fc9816a79151abc1541143778a4f6478a27c22de87a2c6b
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-81ba00af4680e2756fc9816a79151abc1541143778a4f6478a27c22de87a2c6b
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-81ba00af4680e2756fc9816a79151abc1541143778a4f6478a27c22de87a2c6b
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-81ba00af4680e2756fc9816a79151abc1541143778a4f6478a27c22de87a2c6b
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-81ba00af4680e2756fc9816a79151abc1541143778a4f6478a27c22de87a2c6b
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-81ba00af4680e2756fc9816a79151abc1541143778a4f6478a27c22de87a2c6b
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-81ba00af4680e2756fc9816a79151abc1541143778a4f6478a27c22de87a2c6b
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-81ba00af4680e2756fc9816a79151abc1541143778a4f6478a27c22de87a2c6b
internal/cli/feature_install_held_test.gohttps://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-c69b329c875fd196dcb21f638012cfd428393edd9ebb1041c345464f899969bf
View file https://github.com/spin-stack/devcontainer-cli/blob/f1370a2ab1f12d8c46657400c101f38696a76650/internal/cli/feature_install_held_test.go
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spin-stack/devcontainer-cli/pull/76/{{ revealButtonHref }}
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-c69b329c875fd196dcb21f638012cfd428393edd9ebb1041c345464f899969bf
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-c69b329c875fd196dcb21f638012cfd428393edd9ebb1041c345464f899969bf
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-c69b329c875fd196dcb21f638012cfd428393edd9ebb1041c345464f899969bf
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-c69b329c875fd196dcb21f638012cfd428393edd9ebb1041c345464f899969bf
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-c69b329c875fd196dcb21f638012cfd428393edd9ebb1041c345464f899969bf
https://github.com/spin-stack/devcontainer-cli/pull/76/files#diff-c69b329c875fd196dcb21f638012cfd428393edd9ebb1041c345464f899969bf
Please reload this pagehttps://github.com/spin-stack/devcontainer-cli/pull/76/files
Please reload this pagehttps://github.com/spin-stack/devcontainer-cli/pull/76/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.