Skip to content

Commit 872e58a

Browse files
authored
add azure-autorust bin (#896)
1 parent 62d0b85 commit 872e58a

File tree

6 files changed

+123
-101
lines changed

6 files changed

+123
-101
lines changed

services/autorust/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
members = [
33
"codegen",
44
"openapi",
5+
"azure-autorust",
56
]
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[package]
2+
name = "azure-autorust"
3+
version = "0.1.0"
4+
authors = ["Cameron Taggart <[email protected]>"]
5+
edition = "2021"
6+
publish = false
7+
8+
[dependencies]
9+
autorust_codegen = { path = "../codegen" }
10+
clap = { version = "3.2.7", features = ["derive"] }
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
// cargo run --release -p azure-autorust
2+
3+
use autorust_codegen::{
4+
crates::{list_crate_names, list_dirs},
5+
gen::gen_crate,
6+
get_mgmt_readmes, get_svc_readmes,
7+
jinja::{CargoToml, CheckAllServicesYml, PublishSdksYml, PublishServicesYml},
8+
Result, RunConfig,
9+
};
10+
use clap::Parser;
11+
12+
#[derive(Debug, clap::Parser)]
13+
struct Args {
14+
/// Generate the publish GitHub workflows
15+
#[clap(long)]
16+
publish: bool,
17+
}
18+
19+
fn main() -> Result<()> {
20+
let args = Args::parse();
21+
gen_mgmt()?;
22+
gen_svc()?;
23+
gen_services_workspace()?;
24+
gen_workflow_check_all_services()?;
25+
if args.publish {
26+
gen_workflow_publish_sdks()?;
27+
gen_workflow_publish_services()?;
28+
}
29+
Ok(())
30+
}
31+
32+
fn gen_mgmt() -> Result<()> {
33+
const OUTPUT_FOLDER: &str = "../mgmt";
34+
const ONLY_SERVICES: &[&str] = &[];
35+
let run_config = &mut RunConfig::new("azure_mgmt_");
36+
for (i, spec) in get_mgmt_readmes()?.iter().enumerate() {
37+
if !ONLY_SERVICES.is_empty() {
38+
if ONLY_SERVICES.contains(&spec.spec()) {
39+
println!("{} {}", i + 1, spec.spec());
40+
gen_crate(spec, run_config, OUTPUT_FOLDER)?;
41+
}
42+
} else {
43+
println!("{} {}", i + 1, spec.spec());
44+
gen_crate(spec, run_config, OUTPUT_FOLDER)?;
45+
}
46+
}
47+
Ok(())
48+
}
49+
50+
fn gen_svc() -> Result<()> {
51+
const OUTPUT_FOLDER: &str = "../svc";
52+
const ONLY_SERVICES: &[&str] = &[];
53+
let run_config = &mut RunConfig::new("azure_svc_");
54+
for (i, spec) in get_svc_readmes()?.iter().enumerate() {
55+
if !ONLY_SERVICES.is_empty() {
56+
if ONLY_SERVICES.contains(&spec.spec()) {
57+
println!("{} {}", i + 1, spec.spec());
58+
gen_crate(spec, run_config, OUTPUT_FOLDER)?;
59+
}
60+
} else {
61+
println!("{} {}", i + 1, spec.spec());
62+
gen_crate(spec, run_config, OUTPUT_FOLDER)?;
63+
}
64+
}
65+
Ok(())
66+
}
67+
68+
fn gen_services_workspace() -> Result<()> {
69+
let dirs = list_dirs()?;
70+
let dirs: Vec<String> = dirs.iter().map(|dir| dir.as_str().replace('\\', "/").replace("../", "")).collect();
71+
72+
let yml = CargoToml { dirs };
73+
yml.create("../Cargo.toml")?;
74+
Ok(())
75+
}
76+
77+
fn gen_workflow_check_all_services() -> Result<()> {
78+
let packages = list_crate_names()?;
79+
let packages = &packages.iter().map(String::as_str).collect();
80+
81+
let yml = CheckAllServicesYml { packages };
82+
yml.create("../../.github/workflows/check-all-services.yml")?;
83+
Ok(())
84+
}
85+
86+
fn gen_workflow_publish_sdks() -> Result<()> {
87+
let packages = &vec![
88+
"azure_core",
89+
"azure_data_cosmos",
90+
"azure_data_tables",
91+
"azure_identity",
92+
"azure_iot_hub",
93+
"azure_messaging_eventgrid",
94+
"azure_messaging_servicebus",
95+
"azure_security_keyvault",
96+
"azure_storage",
97+
"azure_storage_blobs",
98+
"azure_storage_datalake",
99+
"azure_storage_queues",
100+
];
101+
let yml = PublishSdksYml { packages };
102+
yml.create("../../.github/workflows/publish-sdks.yml")?;
103+
Ok(())
104+
}
105+
106+
fn gen_workflow_publish_services() -> Result<()> {
107+
let packages = list_crate_names()?;
108+
let packages = &packages.iter().map(String::as_str).collect();
109+
let yml = PublishServicesYml { packages };
110+
yml.create("../../.github/workflows/publish-services.yml")?;
111+
Ok(())
112+
}

services/autorust/codegen/examples/gen_mgmt.rs

Lines changed: 0 additions & 23 deletions
This file was deleted.

services/autorust/codegen/examples/gen_svc.rs

Lines changed: 0 additions & 23 deletions
This file was deleted.

services/autorust/codegen/examples/gen_workspace.rs

Lines changed: 0 additions & 55 deletions
This file was deleted.

0 commit comments

Comments
 (0)