mirror of
https://github.com/Noratrieb/terustform.git
synced 2026-01-14 16:35:11 +01:00
workspace
This commit is contained in:
parent
43747f9cda
commit
eea39e1f16
22 changed files with 166 additions and 107 deletions
103
Cargo.lock
generated
103
Cargo.lock
generated
|
|
@ -28,9 +28,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.81"
|
||||
version = "1.0.82"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
|
||||
checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519"
|
||||
|
||||
[[package]]
|
||||
name = "async-stream"
|
||||
|
|
@ -56,9 +56,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "async-trait"
|
||||
version = "0.1.79"
|
||||
version = "0.1.80"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
|
||||
checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
@ -169,9 +169,9 @@ checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
|
|||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.0.91"
|
||||
version = "1.0.94"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1fd97381a8cc6493395a5afc4c691c1084b3768db713b73aa215217aa245d153"
|
||||
checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
|
|
@ -190,9 +190,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "either"
|
||||
version = "1.10.0"
|
||||
version = "1.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
|
||||
checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2"
|
||||
|
||||
[[package]]
|
||||
name = "equivalent"
|
||||
|
|
@ -279,9 +279,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.2.13"
|
||||
version = "0.2.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a06fddc2749e0528d2813f95e050e87e52c8cbbae56223b9babf73b3e53b0cc6"
|
||||
checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
|
|
@ -755,9 +755,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.35"
|
||||
version = "1.0.36"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
|
||||
checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
|
@ -1078,7 +1078,16 @@ dependencies = [
|
|||
]
|
||||
|
||||
[[package]]
|
||||
name = "terraform-provider-terustform"
|
||||
name = "terraform-provider-example"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"eyre",
|
||||
"terustform",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "terustform"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"base64 0.22.0",
|
||||
|
|
@ -1100,6 +1109,15 @@ dependencies = [
|
|||
"tracing-subscriber",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "terustform-macros"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thread_local"
|
||||
version = "1.1.8"
|
||||
|
|
@ -1112,9 +1130,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "time"
|
||||
version = "0.3.35"
|
||||
version = "0.3.36"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ef89ece63debf11bc32d1ed8d078ac870cbeb44da02afb02a9ff135ae7ca0582"
|
||||
checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
|
||||
dependencies = [
|
||||
"deranged",
|
||||
"num-conv",
|
||||
|
|
@ -1413,7 +1431,7 @@ version = "0.52.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
|
||||
dependencies = [
|
||||
"windows-targets 0.52.4",
|
||||
"windows-targets 0.52.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1433,17 +1451,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "windows-targets"
|
||||
version = "0.52.4"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
|
||||
checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm 0.52.4",
|
||||
"windows_aarch64_msvc 0.52.4",
|
||||
"windows_i686_gnu 0.52.4",
|
||||
"windows_i686_msvc 0.52.4",
|
||||
"windows_x86_64_gnu 0.52.4",
|
||||
"windows_x86_64_gnullvm 0.52.4",
|
||||
"windows_x86_64_msvc 0.52.4",
|
||||
"windows_aarch64_gnullvm 0.52.5",
|
||||
"windows_aarch64_msvc 0.52.5",
|
||||
"windows_i686_gnu 0.52.5",
|
||||
"windows_i686_gnullvm",
|
||||
"windows_i686_msvc 0.52.5",
|
||||
"windows_x86_64_gnu 0.52.5",
|
||||
"windows_x86_64_gnullvm 0.52.5",
|
||||
"windows_x86_64_msvc 0.52.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1454,9 +1473,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
|
|||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.52.4"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
|
||||
checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
|
|
@ -1466,9 +1485,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
|
|||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.52.4"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
|
||||
checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
|
|
@ -1478,9 +1497,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
|
|||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.52.4"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
|
||||
checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnullvm"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
|
|
@ -1490,9 +1515,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
|
|||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.52.4"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
|
||||
checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
|
|
@ -1502,9 +1527,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
|
|||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.52.4"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
|
||||
checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
|
|
@ -1514,9 +1539,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
|
|||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.52.4"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
|
||||
checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
|
|
@ -1526,9 +1551,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
|
|||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.52.4"
|
||||
version = "0.52.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
|
||||
checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
|
||||
|
||||
[[package]]
|
||||
name = "yasna"
|
||||
|
|
|
|||
32
Cargo.toml
32
Cargo.toml
|
|
@ -1,31 +1,13 @@
|
|||
[package]
|
||||
name = "terraform-provider-terustform"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
[workspace]
|
||||
resolver = "2"
|
||||
members = [
|
||||
"terustform",
|
||||
"terustform-macros",
|
||||
"terraform-provider-example",
|
||||
]
|
||||
|
||||
[profile.release]
|
||||
panic = "abort"
|
||||
|
||||
[profile.dev]
|
||||
panic = "abort"
|
||||
|
||||
[dependencies]
|
||||
base64 = "0.22.0"
|
||||
eyre = "0.6.12"
|
||||
prost = "0.12.4"
|
||||
rcgen = "0.13.1"
|
||||
rmp = "0.8.12"
|
||||
rustls = { version = "0.23.4", default-features = false, features = ["ring", "logging", "std", "tls12"] }
|
||||
serde = "1.0.197"
|
||||
serde_json = "1.0.115"
|
||||
tempfile = "3.10.1"
|
||||
time = "0.3.35"
|
||||
tokio = { version = "1.37.0", features = ["full"] }
|
||||
tokio-stream = { version = "0.1.15", features = ["net"] }
|
||||
tokio-util = "0.7.10"
|
||||
tonic = { version = "0.11.0", features = ["tls"] }
|
||||
tracing = "0.1.40"
|
||||
tracing-subscriber = "0.3.18"
|
||||
|
||||
[build-dependencies]
|
||||
tonic-build = "0.11.0"
|
||||
|
|
|
|||
10
terraform-provider-example/Cargo.toml
Normal file
10
terraform-provider-example/Cargo.toml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
[package]
|
||||
name = "terraform-provider-example"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
eyre = "0.6.12"
|
||||
terustform = { path = "../terustform" }
|
||||
|
||||
tokio = { version = "1.37.0", features = ["full"] }
|
||||
|
|
@ -1,19 +1,25 @@
|
|||
use std::collections::{BTreeMap, HashMap};
|
||||
|
||||
use crate::{
|
||||
use terustform::{
|
||||
framework::{
|
||||
datasource::{self, DataSource},
|
||||
provider::Provider,
|
||||
value::StringValue,
|
||||
DResult,
|
||||
},
|
||||
values::{Value, ValueKind},
|
||||
};
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> eyre::Result<()> {
|
||||
terustform::serve(&ExampleProvider {}).await
|
||||
}
|
||||
|
||||
pub struct ExampleProvider {}
|
||||
|
||||
impl Provider for ExampleProvider {
|
||||
fn name(&self) -> String {
|
||||
"terustform".to_owned()
|
||||
"example".to_owned()
|
||||
}
|
||||
|
||||
fn data_sources(&self) -> Vec<Box<dyn DataSource>> {
|
||||
|
|
@ -23,6 +29,10 @@ impl Provider for ExampleProvider {
|
|||
|
||||
struct ExampleDataSource {}
|
||||
|
||||
struct _ExampleDataSourceModel {
|
||||
name: StringValue,
|
||||
}
|
||||
|
||||
impl DataSource for ExampleDataSource {
|
||||
fn name(&self, provider_name: &str) -> String {
|
||||
format!("{provider_name}_kitty")
|
||||
24
terraform-provider-example/test/main.tf
Normal file
24
terraform-provider-example/test/main.tf
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
terraform {
|
||||
required_providers {
|
||||
example = {
|
||||
source = "github.com/Nilstrieb/example"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "example" {}
|
||||
|
||||
//resource "terustform_hello" "test1" {}
|
||||
|
||||
data "example_kitty" "kitty" {
|
||||
name = "aa mykitten"
|
||||
}
|
||||
data "example_kitty" "hellyes" {
|
||||
name = "aa a cute kitty"
|
||||
}
|
||||
output "cat1" {
|
||||
value = data.example_kitty.kitty.meow
|
||||
}
|
||||
output "cat2" {
|
||||
value = data.example_kitty.hellyes.meow
|
||||
}
|
||||
12
terustform-macros/Cargo.toml
Normal file
12
terustform-macros/Cargo.toml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
[package]
|
||||
name = "terustform-macros"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[lib]
|
||||
proc-macro = true
|
||||
|
||||
[dependencies]
|
||||
proc-macro2 = "1.0.79"
|
||||
quote = "1.0.36"
|
||||
syn = "2.0.58"
|
||||
6
terustform-macros/src/lib.rs
Normal file
6
terustform-macros/src/lib.rs
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#[proc_macro_derive(DataSourceModel)]
|
||||
pub fn data_source_model(
|
||||
_input: proc_macro::TokenStream,
|
||||
) -> proc_macro::TokenStream {
|
||||
Default::default()
|
||||
}
|
||||
25
terustform/Cargo.toml
Normal file
25
terustform/Cargo.toml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
[package]
|
||||
name = "terustform"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
base64 = "0.22.0"
|
||||
eyre = "0.6.12"
|
||||
prost = "0.12.4"
|
||||
rcgen = "0.13.1"
|
||||
rmp = "0.8.12"
|
||||
rustls = { version = "0.23.4", default-features = false, features = ["ring", "logging", "std", "tls12"] }
|
||||
serde = "1.0.197"
|
||||
serde_json = "1.0.115"
|
||||
tempfile = "3.10.1"
|
||||
time = "0.3.35"
|
||||
tokio = { version = "1.37.0", features = ["full"] }
|
||||
tokio-stream = { version = "0.1.15", features = ["net"] }
|
||||
tokio-util = "0.7.10"
|
||||
tonic = { version = "0.11.0", features = ["tls"] }
|
||||
tracing = "0.1.40"
|
||||
tracing-subscriber = "0.3.18"
|
||||
|
||||
[build-dependencies]
|
||||
tonic-build = "0.11.0"
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
pub mod datasource;
|
||||
pub mod provider;
|
||||
pub mod value;
|
||||
|
||||
use self::datasource::DataSource;
|
||||
|
||||
1
terustform/src/framework/value.rs
Normal file
1
terustform/src/framework/value.rs
Normal file
|
|
@ -0,0 +1 @@
|
|||
pub struct StringValue;
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
mod cert;
|
||||
mod framework;
|
||||
pub mod framework;
|
||||
mod server;
|
||||
mod values;
|
||||
mod example;
|
||||
pub mod values;
|
||||
|
||||
use std::{env, path::PathBuf};
|
||||
|
||||
|
|
@ -13,12 +12,7 @@ use tokio::net::UnixListener;
|
|||
use tonic::transport::{Certificate, ServerTlsConfig};
|
||||
use tracing::{info, Level};
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> eyre::Result<()> {
|
||||
serve(&example::ExampleProvider {}).await
|
||||
}
|
||||
|
||||
async fn serve(provider: &dyn Provider) -> eyre::Result<()> {
|
||||
pub async fn serve(provider: &dyn Provider) -> eyre::Result<()> {
|
||||
tracing_subscriber::fmt()
|
||||
.with_max_level(Level::DEBUG)
|
||||
.with_writer(std::io::stderr)
|
||||
|
|
@ -2,12 +2,10 @@
|
|||
// tftypes for types and values
|
||||
|
||||
use std::{
|
||||
collections::{BTreeMap, HashMap, HashSet},
|
||||
collections::{BTreeMap, HashMap},
|
||||
io::{self, Read},
|
||||
};
|
||||
|
||||
use rmp::encode::write_bool;
|
||||
|
||||
use crate::framework::{DResult, Diagnostics};
|
||||
|
||||
#[derive(Debug)]
|
||||
29
test/main.tf
29
test/main.tf
|
|
@ -1,29 +0,0 @@
|
|||
terraform {
|
||||
required_providers {
|
||||
terustform = {
|
||||
source = "github.com/Nilstrieb/terustform"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "terustform" {}
|
||||
|
||||
//resource "terustform_hello" "test1" {}
|
||||
|
||||
data "terustform_kitty" "kitty" {
|
||||
name = "aa mykitten"
|
||||
}
|
||||
|
||||
data "terustform_kitty" "hellyes" {
|
||||
name = "aa a cute kitty"
|
||||
}
|
||||
|
||||
output "meow" {
|
||||
value = data.terustform_kitty.kitty.id
|
||||
}
|
||||
output "cat1" {
|
||||
value = data.terustform_kitty.kitty.meow
|
||||
}
|
||||
output "cat2" {
|
||||
value = data.terustform_kitty.hellyes.meow
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue