/azapi-vscode

Primary LanguageTypeScriptMozilla Public License 2.0MPL-2.0

Terraform AzApi Provider Visual Studio Code Extension

The Terraform AzApi Provider Visual Studio Code (VS Code) extension adds editing features like completion/hover/diagnositics for terraform-provider-azapi Terraform files using the Terraform AzApi Provider Language Server.

Features

  • Manages the Terraform AzApi Provider Language Server, exposing its features:
  • Completion of azapi resources and data sources
  • Completion of allowed azure resource types when input type in azapi resources
  • Completion of allowed azure resource properties when input body in azapi resources, limitation: it only works when use jsonencode function to build the JSON
  • Show hint when hover on azapi resources
  • Diagnostics to indicate schema errors as you type
  • Convert resource JSON to azapi configuration.
  • Convert ARM template to azapi configuration.

Demo

Completion of allowed azure resource types when input type in azapi resources

intellisense being displayed for all available types for a resource

Completion of allowed azure resource properties when input body in azapi resources

intellisense being displayed for available property names and property values where applicable of an azapi resource

Completion of required properties for any discriminated objects.

intellisense being displayed for available required property names and property values where applicable of a discriminated object

Show hint when hover on azapi resources and diagnostics to indicate schema errors as you type.

hint message being displayed when hover on an azapi property

Paste resource JSON to the terraform configuration, it will convert to azapi configuration.

convert resource JSON to azapi configuration

Paste ARM template to the terraform configuration, it will convert to azapi configuration.

convert ARM template to azapi configuration

Configuration

This extension offers several configuration options. To modify these, navigate to the extension view within VS Code, select the settings cog and choose Extension settings, or alternatively, modify the .vscode/settings.json file in the root of your working directory.

Telemetry

We use telemetry to send error reports to our team, so we can respond more effectively. If you want to disable this setting, add "telemetry.enableTelemetry": false to your settings.json and that will turn off all telemetry in VSCode. You can also monitor what's being sent in your logs.

Release History

See the CHANGELOG for more information.

Local development

  1. Prerequisites: golang >1.16, node 16.X, npm 8.X
  2. Clone Terraform AzApi Provider Language Server to local
  3. Run go install under project folder
  4. Add the following configuration to vscode setting file.
   "azapi.languageServer": {
        "external": true,
        "pathToBinary": "C:\\Users\\henglu\\go\\bin\\azapi-lsp.exe",  //file path to language server
        "args": [
            "serve"
        ],
        "trace.server": "messages"
    },
  1. Clone this project to local
  2. Run npm install to download dependencies
  3. Run code . to open this project in VSCode
  4. Press F5, it will open a new VSCode Window, you can test its features in it.

Credits

We wish to thank HashiCorp for the use of some MPLv2-licensed code from their open source project vscode-terraform.