Script provisioning provider — extension scaffold
- Dominant language
- Go
- Stars
- 569
- Forks
- 364
- Avg merge
- 2d 19h
- Merged PRs (30d)
- 136
Description
## 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:
```go
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
```go
host.WithProvisioningProvider("scripts", func(azdClient *azdext.AzdClient) (azdext.ProvisioningProvider, error) {
return &provisioning.ScriptProvisioningProvider{}, nil
})
```
### Acceptance Criteria
- [ ] Extension compiles with `go build` from `extensions/microsoft.azd.scripts/`
- [ ] `azd x build` succeeds from the extension directory
- [ ] Extension starts and registers the `"scripts"` provider with azd via gRPC
- [ ] All `ProvisioningProvider` interface methods are implemented (stub/no-op)
- [ ] `extension.yaml` declares `provisioning-provider` capability with namespace `scripts`
- [ ] Directory structure matches the layout in the [architecture doc]((see #7733 for architecture)
- [ ] Build scripts (`build.ps1`, `build.sh`) produce a working binary
Contributor guide
Assessment
This issue has not been assessed yet.