Script provisioning provider -- extension scaffold
Parent epic: #7733
Framework: #7465 | Framework PR: #7482
Overview
Create the microsoft.azd.scripts extension following the established microsoft.azd.demo extension pattern. This is the foundation issue -- it produces a compilable, registrable extension with stub implementations of all provider methods.
Deliverables
Extension files
| File |
Purpose |
extensions/microsoft.azd.scripts/extension.yaml |
Extension metadata: id (microsoft.azd.scripts), capabilities (provisioning-provider), namespace (scripts), version |
extensions/microsoft.azd.scripts/main.go |
Entry point -- delegates to cobra root command |
extensions/microsoft.azd.scripts/internal/cmd/listen.go |
ExtensionHost setup with WithProvisioningProvider("scripts", factory) |
extensions/microsoft.azd.scripts/internal/cmd/root.go |
Cobra command tree (root + listen + version) |
extensions/microsoft.azd.scripts/internal/cmd/version.go |
Version command reading from version.txt |
extensions/microsoft.azd.scripts/go.mod |
Go module definition (references ../../pkg/azdext) |
extensions/microsoft.azd.scripts/build.ps1 |
Windows build script (follows demo pattern) |
extensions/microsoft.azd.scripts/build.sh |
POSIX build script |
extensions/microsoft.azd.scripts/ci-build.ps1 |
CI build script |
extensions/microsoft.azd.scripts/ci-test.ps1 |
CI test script |
extensions/microsoft.azd.scripts/version.txt |
Semver version (e.g., 0.1.0-alpha.1) |
extensions/microsoft.azd.scripts/cspell.yaml |
Extension-specific spell check config |
extensions/microsoft.azd.scripts/README.md |
Extension readme |
extensions/microsoft.azd.scripts/CHANGELOG.md |
Changelog |
Stub provider
Create internal/provisioning/provider.go with a ScriptProvisioningProvider struct that implements azdext.ProvisioningProvider. All methods should be no-ops returning empty/zero-value responses:
type ScriptProvisioningProvider struct {
azdClient *azdext.AzdClient
}
// All methods: Initialize, EnsureEnv, Deploy, Destroy, Preview, State, Parameters, PlannedOutputs
// Return stub responses (nil error, empty results)
Registration in listen.go
host.WithProvisioningProvider("scripts", func(azdClient *azdext.AzdClient) (azdext.ProvisioningProvider, error) {
return &provisioning.ScriptProvisioningProvider{}, nil
})
Acceptance Criteria
Script provisioning provider -- extension scaffold
Parent epic: #7733
Framework: #7465 | Framework PR: #7482
Overview
Create the
microsoft.azd.scriptsextension following the establishedmicrosoft.azd.demoextension pattern. This is the foundation issue -- it produces a compilable, registrable extension with stub implementations of all provider methods.Deliverables
Extension files
extensions/microsoft.azd.scripts/extension.yamlmicrosoft.azd.scripts), capabilities (provisioning-provider), namespace (scripts), versionextensions/microsoft.azd.scripts/main.goextensions/microsoft.azd.scripts/internal/cmd/listen.goExtensionHostsetup withWithProvisioningProvider("scripts", factory)extensions/microsoft.azd.scripts/internal/cmd/root.goextensions/microsoft.azd.scripts/internal/cmd/version.goversion.txtextensions/microsoft.azd.scripts/go.mod../../pkg/azdext)extensions/microsoft.azd.scripts/build.ps1extensions/microsoft.azd.scripts/build.shextensions/microsoft.azd.scripts/ci-build.ps1extensions/microsoft.azd.scripts/ci-test.ps1extensions/microsoft.azd.scripts/version.txt0.1.0-alpha.1)extensions/microsoft.azd.scripts/cspell.yamlextensions/microsoft.azd.scripts/README.mdextensions/microsoft.azd.scripts/CHANGELOG.mdStub provider
Create
internal/provisioning/provider.gowith aScriptProvisioningProviderstruct that implementsazdext.ProvisioningProvider. All methods should be no-ops returning empty/zero-value responses:Registration in listen.go
Acceptance Criteria
go buildfromextensions/microsoft.azd.scripts/azd x buildsucceeds from the extension directory"scripts"provider with azd via gRPCProvisioningProviderinterface methods are implemented (stub/no-op)extension.yamldeclaresprovisioning-providercapability with namespacescriptsbuild.ps1,build.sh) produce a working binary