The Chef Infra Extension for Visual Studio Code offers rich language support for Chef Infra and Chef InSpec when using Visual Studio Code.
- Chef Infra Language (traditional and YAML-based) including built-in resources
- Chef Infra Custom Resources
- Chef InSpec
- Enabled by default (disable by adding
{ "rubocop.enable": false }
in user/workspace settings) and activated when the first Ruby file is loaded. - The entire repo will be linted when files are saved, unless there are more than 400
*.rb
files in the workspace, in which case only open files will be linted. Adjust this threshold using the{ "rubocop.fileCountThreshold": 400 }
setting in user/workspace settings. - You may lint the entire workspace, even if it is larger than the above threshold, using the
Chef: Validate Entire Workspace
command from the Command Pallette. - If you have Chef Workstation installed, linting should "just work" on Windows, macOS, and Linux. Cookstyle will be used by default.
- If you do not have Chef Workstation but do have Rubocop installed, you can set the executable path by setting
{ "rubocop.path": "c:\\path\\to\\rubocop.bat"}
in user/workspace settings). - To override the config file used by Rubocop/Cookstyle, use the
{ "rubocop.configFile": "path/to/config.yml" }
in user/workspace settings.
- Please review the Resource snippets for a complete list.
- Please review the Metadata snippets for a complete list.
- Please review the DSL snippets for a complete list.
- Please review the Chef YAML Recipe snippets for a complete list.
- Please review the Chef InSpec snippets for a complete list of included resources.
- Please review the Chef InSpec Common snippets for a listing of common snippets included for Chef InSpec.
- You will need to install Visual Studio Code
1.0
or higher. - From the command palette
Ctrl-Shift-P
(Windows, Linux) orCmd-Shift-P
(OSX) selectInstall Extension
, chooseChef
and reload Visual Studio Code.
Contributions are welcomed, please file issues and pull requests via the project homepage.
This project contains development launch settings. A recent Node.js LTS build is required.
Dependencies for development work of this extension are maintained in the package.json
file under the devDependencies
key and can be installed via NPM:
npm install
The following Snippet configurations are included with this extension:
Snippet File | Description | Update Method |
---|---|---|
automated_dsl_snippets.json | Chef Infra Language/DSL Snippets | Autogenerated using Rakefile |
chef_inspec_resources.json | Chef InSpec Resource Snippets | Autogenerated using Rakefile |
chef_dsl_and_helpers.json | Chef Infra Language/DSL Snippets | Manually generated and maintained |
chef_inspec_common.json | Chef InSpec Common Control Snippets | Manually generated and maintained |
chef_metadata.json | Chef Infra Metadata Snippets | Manually generated and maintained |
chef_resources.json | Chef Infra Recipe Resources (Ruby Format) | Manually generated and maintained |
chef_yaml_resources.json | Chef Infra Recipe Resources (YAML Format) | Manually generated and maintained |
chefspec.json | Chef Infra ChefSpec | Manually generated and maintained |
shell_out.json | Chef Infra Language Helpers for shell_out type Examples | Manually generated and maintained |
The directory autogeneration
located within this project contains tooling which is used to perform updates on autogenerated Snippet data.
-
From a terminal,
cd
to theautogeneration
directory:cd ./autogeneration
-
Verify that local Ruby gems which are required for Snippet updates have been installed (defined within
./autogeneration/Gemfile
):bundle install
$ bundle install Using rake 13.0.3 Using bundler 2.1.4 Using concurrent-ruby 1.1.8 Using chef-utils 17.2.11 from https://github.com/chef/chef (at master@0af4909) Using coderay 1.1.3 Using method_source 1.0.0 Using pry 0.14.1 Using yard 0.9.26 Bundle complete! 4 Gemfile dependencies, 8 gems now installed. Bundled gems are installed into `./vendor`
-
Run Rake task
generate_snippets
to perform any required Snippet updates, which are handled via autogeneration process:rake generate_snippets
To produce a local .vsix for testing use npx vsce package
:
npx vsce package
Executing prepublish script 'npm run vscode:prepublish'...
> chef@1.4.0 vscode:prepublish /Users/tsmith/dev/work/vscode-chef
> tsc -p ./
DONE Packaged: /Users/tsmith/dev/work/vscode-chef/chef-1.4.0.vsix (15 files, 39.32KB)
To test the extension locally:
code --install-extension C:\projects\chef\vscode-chef\chef-1.4.0.vsix
To release requires a PAT token for the relevant publisher on the Visual Studio Marketplace.
vsce publish
Executing prepublish script 'npm run vscode:prepublish'...
> chef@1.4.0 vscode:prepublish /Users/tsmith/dev/work/vscode-chef
> tsc -p ./
Publishing chef-software.chef@1.4.0...
DONE Published chef-software.chef@1.4.0
Your extension will live at https://marketplace.visualstudio.com/items?itemName=chef-software.chef (might take a few minutes for it to show up).
This extension was written by Stuart Preston (stuart@chef.io)
This extension is licensed under an Apache 2 license.
(c) 2015-2021 Chef Software, Inc
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.