Skip to content

Script provisioning provider — extension scaffold #7734

@wbreza

Description

@wbreza

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

  • 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 Epic: Script Provisioning Provider Extension #7733 for architecture)
  • Build scripts (build.ps1, build.sh) produce a working binary

Metadata

Metadata

Assignees

Labels

enhancementNew feature or improvement

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions