diff --git a/Cargo.lock b/Cargo.lock index 56bf0f8753d44..e37f3f590c15a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -79,7 +79,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.14", "once_cell", "version_check", ] @@ -92,7 +92,7 @@ checksum = "bf6ccdb167abbf410dcb915cabd428929d7f6a04980b54a11f26a39f1c7f7107" dependencies = [ "cfg-if", "const-random", - "getrandom 0.2.9", + "getrandom 0.2.14", "once_cell", "version_check", ] @@ -177,7 +177,7 @@ dependencies = [ "quinn-proto", "rand 0.8.5", "rcgen", - "ring 0.17.3", + "ring 0.17.8", "rustls 0.23.12", "rustls-webpki 0.102.6", "serde", @@ -1690,7 +1690,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" dependencies = [ "futures-core", - "getrandom 0.2.9", + "getrandom 0.2.14", "instant", "pin-project-lite", "rand 0.8.5", @@ -2812,7 +2812,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.14", "once_cell", "tiny-keccak", ] @@ -4264,7 +4264,7 @@ dependencies = [ "ethers-core", "ethers-etherscan", "eyre", - "getrandom 0.2.9", + "getrandom 0.2.14", "hex", "prettyplease 0.1.25", "proc-macro2 1.0.78", @@ -4308,7 +4308,7 @@ dependencies = [ "elliptic-curve 0.13.4", "ethabi", "generic-array", - "getrandom 0.2.9", + "getrandom 0.2.14", "hex", "k256 0.13.1", "num_enum 0.5.11", @@ -4334,7 +4334,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8920b59cf81e357df2c8102d6a9dc81c2d68f7409543ff3b6868851ecf007807" dependencies = [ "ethers-core", - "getrandom 0.2.9", + "getrandom 0.2.14", "reqwest 0.11.20", "semver 1.0.16", "serde", @@ -4385,7 +4385,7 @@ dependencies = [ "futures-core", "futures-timer", "futures-util", - "getrandom 0.2.9", + "getrandom 0.2.14", "hashers", "hex", "http 0.2.9", @@ -5018,9 +5018,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", "js-sys", @@ -5609,6 +5609,25 @@ dependencies = [ "tokio-rustls 0.24.0", ] +[[package]] +name = "hyper-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.4.1", + "hyper-util", + "log", + "rustls 0.22.4", + "rustls-native-certs 0.7.1", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.25.0", + "tower-service", +] + [[package]] name = "hyper-rustls" version = "0.27.2" @@ -6272,6 +6291,21 @@ dependencies = [ "simple_asn1", ] +[[package]] +name = "jsonwebtoken" +version = "9.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ae10193d25051e74945f1ea2d0b42e03cc3b890f7e4cc5faa44997d808193f" +dependencies = [ + "base64 0.21.7", + "js-sys", + "pem 3.0.4", + "ring 0.17.8", + "serde", + "serde_json", + "simple_asn1", +] + [[package]] name = "k256" version = "0.11.6" @@ -8620,17 +8654,56 @@ dependencies = [ "quick-xml", "rand 0.8.5", "reqwest 0.12.5", - "ring 0.17.3", + "ring 0.17.8", "rustls-pemfile 2.1.2", "serde", "serde_json", - "snafu", + "snafu 0.7.4", "tokio", "tracing", "url", "walkdir", ] +[[package]] +name = "octocrab" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a8a3df00728324ad654ecd1ed449a60157c55b7ff8c109af3a35989687c367" +dependencies = [ + "arc-swap", + "async-trait", + "base64 0.22.1", + "bytes", + "cfg-if", + "chrono", + "either", + "futures", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-rustls 0.26.0", + "hyper-timeout 0.5.1", + "hyper-util", + "jsonwebtoken 9.3.0", + "once_cell", + "percent-encoding", + "pin-project", + "secrecy", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "snafu 0.8.4", + "tokio", + "tower", + "tower-http", + "tracing", + "url", +] + [[package]] name = "oid-registry" version = "0.6.1" @@ -9994,7 +10067,7 @@ source = "git+https://github.com/quinn-rs/quinn.git?rev=f0fa66f871b80b9d2d7075d7 dependencies = [ "bytes", "rand 0.8.5", - "ring 0.17.3", + "ring 0.17.8", "rustc-hash 2.0.0", "rustls 0.23.12", "slab", @@ -10125,7 +10198,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.14", ] [[package]] @@ -10193,7 +10266,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54077e1872c46788540de1ea3d7f4ccb1983d12f9aa909b234468676c1a36779" dependencies = [ "pem 3.0.4", - "ring 0.17.3", + "ring 0.17.8", "rustls-pki-types", "time", "yasna", @@ -10261,7 +10334,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.14", "redox_syscall 0.2.16", "thiserror", ] @@ -10436,7 +10509,7 @@ dependencies = [ "async-trait", "chrono", "futures", - "getrandom 0.2.9", + "getrandom 0.2.14", "http 1.1.0", "hyper 1.4.1", "parking_lot 0.11.2", @@ -10497,16 +10570,17 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.3" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babe80d5c16becf6594aa32ad2be8fe08498e7ae60b77de8df700e67f191d7e" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", - "getrandom 0.2.9", + "cfg-if", + "getrandom 0.2.14", "libc", "spin 0.9.8", "untrusted 0.9.0", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -10915,11 +10989,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.17.3", + "ring 0.17.8", "rustls-webpki 0.101.7", "sct", ] +[[package]] +name = "rustls" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +dependencies = [ + "log", + "ring 0.17.8", + "rustls-pki-types", + "rustls-webpki 0.102.6", + "subtle", + "zeroize", +] + [[package]] name = "rustls" version = "0.23.12" @@ -10927,7 +11015,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ "once_cell", - "ring 0.17.3", + "ring 0.17.8", "rustls-pki-types", "rustls-webpki 0.102.6", "subtle", @@ -10990,7 +11078,7 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.3", + "ring 0.17.8", "untrusted 0.9.0", ] @@ -11000,7 +11088,7 @@ version = "0.102.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" dependencies = [ - "ring 0.17.3", + "ring 0.17.8", "rustls-pki-types", "untrusted 0.9.0", ] @@ -11854,7 +11942,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0656e7e3ffb70f6c39b3c2a86332bb74aa3c679da781642590f3c1118c5045" dependencies = [ "doc-comment", - "snafu-derive", + "snafu-derive 0.7.4", +] + +[[package]] +name = "snafu" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b835cb902660db3415a672d862905e791e54d306c6e8189168c7f3d9ae1c79d" +dependencies = [ + "snafu-derive 0.8.4", ] [[package]] @@ -11869,6 +11966,18 @@ dependencies = [ "syn 1.0.107", ] +[[package]] +name = "snafu-derive" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d1e02fca405f6280643174a50c942219f0bbf4dbf7d480f1dd864d6f211ae5" +dependencies = [ + "heck 0.5.0", + "proc-macro2 1.0.78", + "quote 1.0.35", + "syn 2.0.48", +] + [[package]] name = "snap" version = "1.1.0" @@ -11909,7 +12018,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13a6dfdd7c433e0f4bb96d777c88d900c5abe3dc4d2f26d2340fd6c7caadcc6c" dependencies = [ "base64 0.21.7", - "jsonwebtoken", + "jsonwebtoken 8.3.0", "rsa 0.9.1", "serde", "sha2 0.10.6", @@ -14879,6 +14988,7 @@ dependencies = [ "field_names", "include_dir", "inquire", + "octocrab", "open", "prettytable-rs", "rand 0.8.5", @@ -15499,6 +15609,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-rustls" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" +dependencies = [ + "rustls 0.22.4", + "rustls-pki-types", + "tokio", +] + [[package]] name = "tokio-rustls" version = "0.26.0" @@ -16326,7 +16447,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.14", "serde", ] @@ -16336,7 +16457,7 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.14", "rand 0.8.5", ] diff --git a/crates/suiop-cli/Cargo.toml b/crates/suiop-cli/Cargo.toml index 456a0330054c6..becc9e734ca9d 100644 --- a/crates/suiop-cli/Cargo.toml +++ b/crates/suiop-cli/Cargo.toml @@ -49,6 +49,7 @@ tokio = {workspace = true, features = ["full"]} toml_edit.workspace = true tracing-subscriber.workspace = true tracing.workspace = true +octocrab = "0.38.0" [dev-dependencies] tempfile.workspace = true diff --git a/crates/suiop-cli/src/cli/docker/crawl.rs b/crates/suiop-cli/src/cli/docker/crawl.rs new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/crates/suiop-cli/src/cli/docker/mod.rs b/crates/suiop-cli/src/cli/docker/mod.rs index e821801862f8b..b1c3fc4edac5d 100644 --- a/crates/suiop-cli/src/cli/docker/mod.rs +++ b/crates/suiop-cli/src/cli/docker/mod.rs @@ -43,6 +43,8 @@ pub enum DockerAction { #[arg(short, long, default_value = DEFAULT_PATH)] path: PathBuf, }, + #[command(name = "crawl", aliases=["c"])] + Crawl, } pub async fn docker_cmd(args: &DockerArgs) -> Result<()> { @@ -56,6 +58,7 @@ pub async fn docker_cmd(args: &DockerArgs) -> Result<()> { generate_ts_dockerfile(path) } }, + DockerAction::Crawl => crawl_github_org_for_dockerfiles().await, } } @@ -70,3 +73,23 @@ fn generate_ts_dockerfile(path: &Path) -> Result<()> { .context("writing dockerfile")?; Ok(()) } + +async fn crawl_github_org_for_dockerfiles() -> Result<()> { + // make sure the GITHUB_TOKEN env var is set + let token = std::env::var("GITHUB_TOKEN").context("GITHUB_TOKEN env var not set")?; + let page = octocrab::OctocrabBuilder::default() + .personal_token(token) + .base_uri("https://api.github.com")? + .build()? + .search() + .code("path:docker org:MystenLabs") + // .sort("indexed") + .order("asc") + .send() + .await?; + println!( + "{:#?}", + page.items.into_iter().map(|x| x.path).collect::>() + ); + Ok(()) +}