Skip to content

into_future for services #527

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 44 commits into from
Nov 29, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
3b65167
start Clients
ctaggart Nov 18, 2021
7849e4e
generate
ctaggart Nov 18, 2021
00f6a17
operation names
ctaggart Nov 18, 2021
b13d584
Merge remote-tracking branch 'origin/main' into services_into_future2
ctaggart Nov 18, 2021
a661754
add ClientBuilder
ctaggart Nov 18, 2021
9728c18
generate
ctaggart Nov 18, 2021
82f2df7
add OperationCode
ctaggart Nov 18, 2021
a618dfd
generate
ctaggart Nov 18, 2021
f084907
WebOperation::parameters()
ctaggart Nov 25, 2021
a6395d9
WebParameter
ctaggart Nov 26, 2021
d95969d
create_builder_instance_code
ctaggart Nov 26, 2021
8cf08af
generate
ctaggart Nov 26, 2021
43b49d2
impl Into for references
ctaggart Nov 26, 2021
091e9a5
generate
ctaggart Nov 26, 2021
8e6e29f
create_builder_struct_code
ctaggart Nov 26, 2021
e15fbd1
generate
ctaggart Nov 26, 2021
1ae694c
--example private_cloud_list working
ctaggart Nov 26, 2021
758961e
generate
ctaggart Nov 26, 2021
5395b66
generate svc batch
ctaggart Nov 26, 2021
a1a17c7
update svc batch examples
ctaggart Nov 26, 2021
ed94212
generate
ctaggart Nov 26, 2021
0d32252
create_builder_setters_code
ctaggart Nov 27, 2021
c7a218b
generate
ctaggart Nov 27, 2021
ac4557e
impl Into for setter that are references
ctaggart Nov 27, 2021
4952718
generate
ctaggart Nov 27, 2021
cc83885
fix azure_svc_blobstorage
ctaggart Nov 27, 2021
2c4a0b0
Client base_clone for Builders
ctaggart Nov 27, 2021
fb49fe1
pass in owned Vec
ctaggart Nov 27, 2021
5436894
generate
ctaggart Nov 27, 2021
bb0ae65
use token_credential to avoid credential_ operations conflict
ctaggart Nov 27, 2021
799c0f0
pub(crate) internal Client operations
ctaggart Nov 27, 2021
d0a73d3
generate
ctaggart Nov 27, 2021
07782d5
build examples
ctaggart Nov 27, 2021
26f2b51
remove mgmt resources examples
ctaggart Nov 27, 2021
807aa54
generate
ctaggart Nov 27, 2021
e75c21b
remove extra clone, thanks clippy
ctaggart Nov 27, 2021
96dece3
generate
ctaggart Nov 27, 2021
d66b418
clone not needed when Bytes
ctaggart Nov 28, 2021
d1f8ec9
generate
ctaggart Nov 28, 2021
8cbba24
fix --all-features
ctaggart Nov 28, 2021
9289d3c
generate
ctaggart Nov 28, 2021
ed5c2ea
Revert "remove mgmt resources examples"
ctaggart Nov 28, 2021
56c6057
Revert "Revert "remove mgmt resources examples""
ctaggart Nov 28, 2021
4ee2734
allow some warnings in all-features check
ctaggart Nov 28, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/services-all-features.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
workflow_dispatch:

env:
RUSTFLAGS: --deny warnings --allow unused_attributes
RUSTFLAGS: --deny warnings --allow unused_attributes --allow unreachable-code --allow unused-assignments
CARGO_INCREMENTAL: 0

jobs:
Expand Down
1 change: 1 addition & 0 deletions services/autorust/codegen/src/cargo_toml.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ bytes = "1.0"
thiserror = "1.0"
http = "0.2"
url = "2.2"
futures = "0.3"

[dev-dependencies]
azure_identity = {{ path = "../../../sdk/identity", version = "0.1.0" }}
Expand Down
33 changes: 14 additions & 19 deletions services/autorust/codegen/src/codegen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -123,14 +123,6 @@ pub fn is_vec(ts: &TokenStream) -> bool {
ts.to_string().starts_with("Vec <")
}

pub fn is_array(schema: &SchemaCommon) -> bool {
matches!(schema.type_, Some(DataType::Array))
}

pub fn is_string(schema: &SchemaCommon) -> bool {
matches!(schema.type_, Some(DataType::String))
}

pub fn get_schema_array_items(schema: &SchemaCommon) -> Result<&ReferenceOr<Schema>, Error> {
schema.items.as_ref().as_ref().ok_or(Error::ArrayExpectedToHaveItems)
}
Expand All @@ -157,12 +149,12 @@ pub fn is_basic_type(property: &ResolvedSchema) -> bool {
)
}

/// Wraps a type in an Option if is not required.
pub fn require(is_required: bool, tp: TokenStream) -> TokenStream {
if is_required {
tp
} else {
/// Wraps a type in an Option
pub fn add_option(is_option: bool, tp: TokenStream) -> TokenStream {
if is_option {
quote! { Option<#tp> }
} else {
tp
}
}

Expand Down Expand Up @@ -200,29 +192,32 @@ impl TypeName {
idt
};
match as_ref {
true => quote! { &#idt },
true => quote! { impl Into<#idt> },
false => idt,
}
}
TypeName::Array(vec_items_typ) => {
let vec_items_typ = vec_items_typ.to_token_stream(as_ref, qualify_models)?;
let vec_items_typ = vec_items_typ.to_token_stream(false, qualify_models)?;
match as_ref {
true => quote! { &[#vec_items_typ] },
true => quote! { impl Into<Vec<#vec_items_typ>> },
false => quote! { Vec<#vec_items_typ> },
}
}
TypeName::Value => match as_ref {
true => quote! { &serde_json::Value },
true => quote! { impl Into<serde_json::Value> },
false => quote! { serde_json::Value },
},
TypeName::Bytes => quote! { bytes::Bytes },
TypeName::Bytes => match as_ref {
true => quote! { impl Into<bytes::Bytes> },
false => quote! { bytes::Bytes },
},
TypeName::Int32 => quote! { i32 },
TypeName::Int64 => quote! { i64 },
TypeName::Float32 => quote! { f32 },
TypeName::Float64 => quote! { f64 },
TypeName::Boolean => quote! { bool },
TypeName::String => match as_ref {
true => quote! { &str },
true => quote! { impl Into<String> },
false => quote! { String },
},
})
Expand Down
12 changes: 8 additions & 4 deletions services/autorust/codegen/src/codegen_models.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
use crate::{
codegen::{
create_generated_by_header, enum_values_as_strings, get_schema_array_items, get_type_name_for_schema, get_type_name_for_schema_ref,
is_array, is_basic_type, is_local_enum, is_local_struct, is_vec, require, Error,
add_option, create_generated_by_header, enum_values_as_strings, get_schema_array_items, get_type_name_for_schema,
get_type_name_for_schema_ref, is_basic_type, is_local_enum, is_local_struct, is_vec, Error,
},
identifier::{CamelCaseIdent, SnakeCaseIdent},
spec, CodeGen, PropertyName, ResolvedSchema,
};
use autorust_openapi::Reference;
use autorust_openapi::{DataType, Reference, SchemaCommon};
use indexmap::IndexMap;
use proc_macro2::TokenStream;
use quote::quote;
Expand All @@ -16,6 +16,10 @@ use std::{
path::{Path, PathBuf},
};

fn is_array(schema: &SchemaCommon) -> bool {
matches!(schema.type_, Some(DataType::Array))
}

pub fn create_models(cg: &CodeGen) -> Result<TokenStream, Error> {
let mut file = TokenStream::new();
file.extend(create_generated_by_header());
Expand Down Expand Up @@ -203,7 +207,7 @@ fn create_struct(cg: &CodeGen, doc_file: &Path, struct_name: &str, schema: &Reso

let is_vec = is_vec(&field_tp_name);
if !is_vec {
field_tp_name = require(is_required, field_tp_name);
field_tp_name = add_option(!is_required, field_tp_name);
}
local_types.extend(field_tp);
let mut serde_attrs: Vec<TokenStream> = Vec::new();
Expand Down
Loading