I have no idea what I'm doing.
Off the cuff
- Implement a gRPC Server in Rust to see if that is simple enough
- Implement a bare minimum gRPC Client
- Make it resolve a single output
use pulumi::pulumi; fn main() { pulumi.export("foo", "bar"); }
- Make it apply a resource
- Maybe use S3 bucket as an example
- Build up the sdk (like the imports in other languages)
pulumi::pulumi
pulumi::aws
- ...
- Make macros
- macro rules for resource dsls (inspired by clap)
let cluster = aws::eks::cluster!(my_cluster => (roleArn: "arn:aws::") (vpcConfig => (vpc_id: "vpc-xyz") (subnet_ids: vec!["s-abc", "s-def", "s-ghi"]) ) (tags => (Environment: "production") (Purpose: "monitoring") ) )
- proc macros for things like outputs/exports
#[pulumi::main] async fn stack() { let bucket = ...; #[output] let bucket_name = bucket.name; }
- macro rules for resource dsls (inspired by clap)
See wiki as a guide