Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
407f6eb
Update .gitignore for tree-sitter files
andyleejordan Dec 10, 2025
031abbc
Add bicep.proto file
andyleejordan Dec 10, 2025
89fc95e
Basic CLI plumbing for Bicep gRPC server
andyleejordan Dec 10, 2025
ab57a1a
Add Rust tonic and prost packages for gRPC
andyleejordan Dec 10, 2025
1a01f8e
Implement stub Bicep gRPC server
andyleejordan Dec 10, 2025
ede49a2
Refactor to stand-alone dscbicep binary
andyleejordan Dec 11, 2025
9e820f9
Always attach debugger
andyleejordan Dec 16, 2025
dafef2f
Start to implement create_or_update gRPC method
andyleejordan Dec 16, 2025
e34c2f0
Place the dscbicep binary
andyleejordan Dec 16, 2025
c266239
Reuse Tokio runtime in invoke_command
andyleejordan Dec 17, 2025
9a96069
Add tracing
andyleejordan Dec 17, 2025
bf5139b
Don't build gRPC client
andyleejordan Dec 17, 2025
734ab10
Basic implementation of all methods
andyleejordan Dec 17, 2025
237d71f
Check environment for tracing and debug settings
andyleejordan Dec 17, 2025
1e6c039
Add a default HTTP server for debugging with grpcurl
andyleejordan Dec 17, 2025
fe5e6de
Add tonic-reflection package
andyleejordan Dec 17, 2025
b616959
Add tonic reflection service
andyleejordan Dec 17, 2025
0ac170e
Refactor use std::
andyleejordan Dec 17, 2025
c64be2e
Implement fuller return responses
andyleejordan Dec 17, 2025
725e8bb
Fix bugs
andyleejordan Dec 18, 2025
370e8e7
Unwrap DSC result structs to property bags
andyleejordan Dec 18, 2025
284e49a
Simplify and remove direct serde dependency
andyleejordan Dec 18, 2025
62cb5b3
Clean up error handling
andyleejordan Dec 18, 2025
de667ca
Slight socket code clean up
andyleejordan Dec 18, 2025
3d4b276
Hacky support for named pipes
andyleejordan Dec 20, 2025
bc82718
Use tokio correctly by informing it we're about to block
andyleejordan Dec 31, 2025
67ec049
Update to use DiscoveryFilter
andyleejordan Jan 13, 2026
b8d915d
Ensure Protobuf is available in build
andyleejordan Jan 13, 2026
c03ff47
Use Test-CommandAvailable for protoc and node
andyleejordan Jan 13, 2026
612615f
Add WinGet links to PATH on Windows
andyleejordan Jan 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ jobs:
runs-on: ${{matrix.platform}}
steps:
- uses: actions/checkout@v5
- name: Add WinGet links to PATH
if: matrix.platform == 'windows-latest'
run: |
"$env:LOCALAPPDATA\\Microsoft\\WinGet\\Links" | Out-File -Append -Encoding utf8 -FilePath $env:GITHUB_PATH
Comment on lines +29 to +32
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was necessary for Protobuf because protoc.exe is made available by WinGet in this local app data path, which on GitHub images is not already in the PATH, and that is unlike the rest of our dependencies (Node.js is already installed system-wide and so in the PATH, tree-sitter isn't installed by installs via Cargo, this was our first installation on GitHub Actions using WinGet that doesn't run a system installer).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you should have this environment change in the build.helpers.psm1 for protobuf tool install instead of a one-off here

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is specific to GitHub Actions. When you install Protobuf via WinGet on Windows normally, protoc is found in the PATH. It appears that GitHub Actions Windows images don't correctly include the WinGet path.

- name: Install prerequisites
run: ./build.ps1 -SkipBuild -Clippy -Verbose
- name: Generate documentation
Expand Down Expand Up @@ -129,6 +133,9 @@ jobs:
windows-build:
runs-on: windows-latest
steps:
- name: Add WinGet links to PATH
run: |
"$env:LOCALAPPDATA\\Microsoft\\WinGet\\Links" | Out-File -Append -Encoding utf8 -FilePath $env:GITHUB_PATH
- uses: actions/checkout@v5
- name: Install prerequisites
run: ./build.ps1 -SkipBuild -Clippy -Verbose
Expand Down
9 changes: 5 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
target
build/
target/
bin/
.DS_Store
*.msix

# Node.js generated files for tree-sitter
build/
node_modules/
# Generated files for tree-sitter
grammars/**/bindings/
grammars/**/src/
grammars/**/parser.*
tree-sitter-ssh-server-config/
tree-sitter-dscexpression/
3 changes: 2 additions & 1 deletion .pipelines/DSC-Official.yml
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ extends:
ob_restore_phase: true
- pwsh: |
apt update
apt -y install musl-tools rpm dpkg build-essential
apt -y install musl-tools rpm dpkg build-essential protobuf-compiler
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I only have a loose understanding of the state of the OneBranch pipeline for this project. The build module will run the same apt install (and that is the correct package name) but I'm inferring this is the "restore" phase where it needs to be run? Or is this just for bootstrapping Rust? This package does eventually have to be installed.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This installs all the tools not already available in the OneBranch container so doing it here seems appropriate

$header = "Bearer $(AzToken)"
$env:CARGO_REGISTRIES_POWERSHELL_TOKEN = $header
$env:CARGO_REGISTRIES_POWERSHELL_CREDENTIAL_PROVIDER = 'cargo:token'
Expand Down Expand Up @@ -381,6 +381,7 @@ extends:
apt -y install rpm
apt -y install dpkg
apt -y install build-essential
apt install -y protobuf-compiler
msrustup default stable-aarch64-unknown-linux-musl
if ((openssl version -d) -match 'OPENSSLDIR: "(?<dir>.*?)"') {
$env:OPENSSL_LIB_DIR = $matches['dir']
Expand Down
Loading