diff --git a/.gitignore b/.gitignore index ea8c4bf7f..b60de5b5f 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -/target +**/target diff --git a/Cargo.toml b/Cargo.toml index 338173be9..79dd90a2e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ readme = "README.md" [dependencies] wapc = { version = "0.10.1" } -vino-guest = { path="../vino-guest" } +vino-guest = { path = "../vino-guest" } chrono = "0.4.19" colored = "2.0.0" log = "0.4.11" @@ -24,7 +24,7 @@ actix-rt = "2.1.0" nats = "0.8.6" structopt = "0.3.21" nkeys = "0.1.0" -futures="0.3.13" +futures = "0.3.13" serde_json = "1.0.64" serde_yaml = "0.8.17" serdeconv = "0.4.0" @@ -33,10 +33,11 @@ thiserror = "1.0.24" oci-distribution = "0.6" itertools = "0.10.0" unsafe-io = "= 0.6.2" -vino-runtime = {path="./crates/vino-runtime"} +vino-runtime = { path = "./crates/vino-runtime" } +logger = { path = "./crates/logger" } [dev-dependencies] - +test_bin = "0.3.0" [[bin]] name = "vino" @@ -45,6 +46,8 @@ path = "src/main.rs" [workspace] members = [ - "crates/vino-runtime", + "crates/vinoctl", + "crates/logger", + "crates/vino-configfile", + "crates/vino-runtime", ] - diff --git a/crates/logger/Cargo.toml b/crates/logger/Cargo.toml new file mode 100644 index 000000000..b82110d27 --- /dev/null +++ b/crates/logger/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "logger" +version = "0.1.0" +authors = ["Jarrod Overson "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +chrono = "0.4.19" +colored = "2.0.0" +log = "0.4.11" +env_logger = "0.8.3" +anyhow = "1.0.40" +serde_json = "1.0.64" +structopt = "0.3.21" diff --git a/src/logger.rs b/crates/logger/src/lib.rs similarity index 57% rename from src/logger.rs rename to crates/logger/src/lib.rs index daa070add..e0742f106 100644 --- a/src/logger.rs +++ b/crates/logger/src/lib.rs @@ -1,13 +1,14 @@ +pub mod options; + use chrono::{DateTime, Utc}; use colored::Colorize; use env_logger::filter::{Builder, Filter}; use log::{Level, LevelFilter, Log, Metadata, Record, SetLoggerError}; use serde_json::json; -use structopt::lazy_static::lazy_static; -use crate::commands::LoggingOpts; use anyhow::Result; +pub use options::LoggingOptions; const FILTER_ENV: &str = "VINO_LOG"; use std::time::SystemTime; @@ -17,43 +18,37 @@ pub struct Logger { json: bool, } -lazy_static! { - static ref RELEVANT_MODULES: Vec<&'static str> = - vec!["vino", "wasmcloud", "wasmcloud_host", "wapc"]; - static ref CHATTY_MODULES: Vec<&'static str> = vec![ - // "wasmcloud_host::capability::native_host", - // "wasmcloud_nats_kvcache" - ]; -} - -fn set_level(builder: &mut Builder, level: LevelFilter) { - for module in RELEVANT_MODULES.iter() { - builder.filter_module(module, level); - } - - for module in CHATTY_MODULES.iter() { - builder.filter_module(module, log::LevelFilter::Off); +fn set_level>(builder: &mut Builder, priority_modules: &[T], level: LevelFilter) { + for module in priority_modules.iter() { + builder.filter_module(module.as_ref(), level); } } impl Logger { - fn new(opts: &LoggingOpts) -> Logger { + fn new>( + opts: &LoggingOptions, + priority_modules: &[T], + chatty_modules: &[T], + ) -> Logger { let mut builder = Builder::new(); - builder.filter_level(log::LevelFilter::Off); - - if opts.quiet { - set_level(&mut builder, log::LevelFilter::Error); - } else if opts.trace { - set_level(&mut builder, log::LevelFilter::Trace); - } else if opts.debug { - set_level(&mut builder, log::LevelFilter::Debug); - } else { - set_level(&mut builder, log::LevelFilter::Info); - } - if let Ok(ref filter) = std::env::var(FILTER_ENV) { builder.parse(filter); + } else { + builder.filter_level(log::LevelFilter::Off); + if opts.quiet { + set_level(&mut builder, priority_modules, log::LevelFilter::Error); + } else if opts.trace { + set_level(&mut builder, priority_modules, log::LevelFilter::Trace); + } else if opts.debug { + set_level(&mut builder, priority_modules, log::LevelFilter::Debug); + } else { + set_level(&mut builder, priority_modules, log::LevelFilter::Info); + } + + for module in chatty_modules.iter() { + builder.filter_module(module.as_ref(), log::LevelFilter::Off); + } } Logger { @@ -63,18 +58,24 @@ impl Logger { } } - pub fn init(opts: &LoggingOpts) -> Result<(), SetLoggerError> { - let logger = Self::new(opts); + pub fn init>( + opts: &LoggingOptions, + priority_modules: &[T], + chatty_modules: &[T], + ) -> Result<(), SetLoggerError> { + let logger = Self::new(opts, priority_modules, chatty_modules); log::set_max_level(logger.inner.filter()); - log::set_boxed_logger(Box::new(logger)) + log::set_boxed_logger(Box::new(logger))?; + log::trace!("logger initialized"); + Ok(()) } fn format(&self, record: &Record) -> String { let datetime: DateTime = SystemTime::now().into(); let datestring = datetime.format("%Y-%m-%d %T"); if self.json { - json!({ "timestamp": datetime.to_rfc3339(), "level": record.level(), "msg": format!("{}", record.args()) }).to_string() + json!({ "timestamp": datetime.to_rfc3339(), "level": record.level().to_string(), "msg": format!("{}", record.args()) }).to_string() } else { let msg = if self.verbose { format!( @@ -109,7 +110,7 @@ impl Log for Logger { fn log(&self, record: &Record) { // Check if the record is matched by the logger before logging if self.inner.matches(record) { - println!("{}", self.format(record)); + eprintln!("{}", self.format(record)); } } diff --git a/crates/logger/src/options.rs b/crates/logger/src/options.rs new file mode 100644 index 000000000..0c6d88e2f --- /dev/null +++ b/crates/logger/src/options.rs @@ -0,0 +1,48 @@ +use anyhow::anyhow; +use env_logger::WriteStyle; +use structopt::StructOpt; + +fn parse_write_style(spec: &str) -> anyhow::Result { + match spec { + "auto" => Ok(WriteStyle::Auto), + "always" => Ok(WriteStyle::Always), + "never" => Ok(WriteStyle::Never), + _ => Err(anyhow!("Configuration error")), + } +} + +#[derive(StructOpt, Debug, Clone)] +pub struct LoggingOptions { + /// Disables logging + #[structopt(long = "quiet", short = "q")] + pub quiet: bool, + + /// Outputs the version + #[structopt(long = "version", short = "v")] + pub version: bool, + + /// Turns on verbose logging + #[structopt(long = "verbose", short = "V")] + pub verbose: bool, + + /// Turns on debug logging + #[structopt(long = "debug")] + pub debug: bool, + + /// Turns on trace logging + #[structopt(long = "trace")] + pub trace: bool, + + /// Log as JSON + #[structopt(long = "json")] + pub json: bool, + + /// Log style + #[structopt( + long = "log-style", + env = "VINO_LOG_STYLE", + parse(try_from_str = parse_write_style), + default_value="auto" + )] + pub log_style: WriteStyle, +} diff --git a/crates/vino-configfile/Cargo.toml b/crates/vino-configfile/Cargo.toml new file mode 100644 index 000000000..39ec390c7 --- /dev/null +++ b/crates/vino-configfile/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "vino-configfile" +version = "0.1.0" +authors = ["Jarrod Overson "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +serde = { version = "1.0.126", features = ["derive"] } +config = "0.11.0" +directories-next = "2.0.0" +log = "0.4.14" +toml = "0.5.8" + +[dev-dependencies] +env_logger = "" diff --git a/crates/vino-configfile/src/lib.rs b/crates/vino-configfile/src/lib.rs new file mode 100644 index 000000000..8465376ca --- /dev/null +++ b/crates/vino-configfile/src/lib.rs @@ -0,0 +1,40 @@ +use std::{io, path::PathBuf}; + +use directories_next::BaseDirs; +use serde::Deserialize; +#[derive(Debug, Deserialize, Default)] +pub struct VinoConfig { + pub cache_dir: Option, +} + +fn load_configfile>(file: T) -> VinoConfig { + let mut dir = match BaseDirs::new() { + Some(base_dirs) => base_dirs.home_dir().to_path_buf(), + None => PathBuf::new(), + }; + + dir.push(file.as_ref()); + if let Ok(result) = std::fs::read_to_string(dir) { + let config: VinoConfig = toml::from_str(&result).unwrap_or_default(); + + println!("{:?}", config); + config + } else { + VinoConfig::default() + } +} + +#[cfg(test)] +mod tests { + + use crate::load_configfile; + fn init() { + env_logger::init(); + } + #[test] + fn runs_crud_api_config() { + init(); + let config = load_configfile(".vinocfg"); + println!("{:?}", config); + } +} diff --git a/crates/vino-runtime2/Cargo.toml b/crates/vino-runtime/Cargo.toml similarity index 97% rename from crates/vino-runtime2/Cargo.toml rename to crates/vino-runtime/Cargo.toml index c143ce576..de643d599 100644 --- a/crates/vino-runtime2/Cargo.toml +++ b/crates/vino-runtime/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "vino-runtime2" +name = "vino-runtime" version = "0.1.0" authors = ["Jarrod Overson "] edition = "2018" diff --git a/crates/vino-runtime2/src/connection_downstream.rs b/crates/vino-runtime/src/connection_downstream.rs similarity index 100% rename from crates/vino-runtime2/src/connection_downstream.rs rename to crates/vino-runtime/src/connection_downstream.rs diff --git a/crates/vino-runtime2/src/dispatch.rs b/crates/vino-runtime/src/dispatch.rs similarity index 100% rename from crates/vino-runtime2/src/dispatch.rs rename to crates/vino-runtime/src/dispatch.rs diff --git a/crates/vino-runtime2/src/error.rs b/crates/vino-runtime/src/error.rs similarity index 100% rename from crates/vino-runtime2/src/error.rs rename to crates/vino-runtime/src/error.rs diff --git a/crates/vino-runtime2/src/hlreg.rs b/crates/vino-runtime/src/hlreg.rs similarity index 100% rename from crates/vino-runtime2/src/hlreg.rs rename to crates/vino-runtime/src/hlreg.rs diff --git a/crates/vino-runtime2/src/lib.rs b/crates/vino-runtime/src/lib.rs similarity index 97% rename from crates/vino-runtime2/src/lib.rs rename to crates/vino-runtime/src/lib.rs index aaa5923ba..cf371e605 100644 --- a/crates/vino-runtime2/src/lib.rs +++ b/crates/vino-runtime/src/lib.rs @@ -22,6 +22,7 @@ pub use self::manifest::schematic_definition::SchematicDefinition; use crate::dispatch::MessagePayload; pub(crate) use native_component_actor::NativeComponentActor; +pub use crate::manifest::run_config::RunConfig; pub use dispatch::{Invocation, InvocationResponse}; pub use serdes::{deserialize, serialize}; diff --git a/crates/vino-runtime2/src/manifest/mod.rs b/crates/vino-runtime/src/manifest/mod.rs similarity index 100% rename from crates/vino-runtime2/src/manifest/mod.rs rename to crates/vino-runtime/src/manifest/mod.rs diff --git a/crates/vino-runtime2/src/manifest/run_config.rs b/crates/vino-runtime/src/manifest/run_config.rs similarity index 100% rename from crates/vino-runtime2/src/manifest/run_config.rs rename to crates/vino-runtime/src/manifest/run_config.rs diff --git a/crates/vino-runtime2/src/manifest/runtime_definition.rs b/crates/vino-runtime/src/manifest/runtime_definition.rs similarity index 100% rename from crates/vino-runtime2/src/manifest/runtime_definition.rs rename to crates/vino-runtime/src/manifest/runtime_definition.rs diff --git a/crates/vino-runtime2/src/manifest/schematic_definition.rs b/crates/vino-runtime/src/manifest/schematic_definition.rs similarity index 100% rename from crates/vino-runtime2/src/manifest/schematic_definition.rs rename to crates/vino-runtime/src/manifest/schematic_definition.rs diff --git a/crates/vino-runtime2/src/native_actors/add.rs b/crates/vino-runtime/src/native_actors/add.rs similarity index 100% rename from crates/vino-runtime2/src/native_actors/add.rs rename to crates/vino-runtime/src/native_actors/add.rs diff --git a/crates/vino-runtime2/src/native_actors/bcrypt.rs b/crates/vino-runtime/src/native_actors/bcrypt.rs similarity index 100% rename from crates/vino-runtime2/src/native_actors/bcrypt.rs rename to crates/vino-runtime/src/native_actors/bcrypt.rs diff --git a/crates/vino-runtime2/src/native_actors/generated/add.rs b/crates/vino-runtime/src/native_actors/generated/add.rs similarity index 100% rename from crates/vino-runtime2/src/native_actors/generated/add.rs rename to crates/vino-runtime/src/native_actors/generated/add.rs diff --git a/crates/vino-runtime2/src/native_actors/generated/bcrypt.rs b/crates/vino-runtime/src/native_actors/generated/bcrypt.rs similarity index 100% rename from crates/vino-runtime2/src/native_actors/generated/bcrypt.rs rename to crates/vino-runtime/src/native_actors/generated/bcrypt.rs diff --git a/crates/vino-runtime2/src/native_actors/generated/log.rs b/crates/vino-runtime/src/native_actors/generated/log.rs similarity index 100% rename from crates/vino-runtime2/src/native_actors/generated/log.rs rename to crates/vino-runtime/src/native_actors/generated/log.rs diff --git a/crates/vino-runtime2/src/native_actors/generated/mod.rs b/crates/vino-runtime/src/native_actors/generated/mod.rs similarity index 100% rename from crates/vino-runtime2/src/native_actors/generated/mod.rs rename to crates/vino-runtime/src/native_actors/generated/mod.rs diff --git a/crates/vino-runtime2/src/native_actors/generated/string_to_bytes.rs b/crates/vino-runtime/src/native_actors/generated/string_to_bytes.rs similarity index 100% rename from crates/vino-runtime2/src/native_actors/generated/string_to_bytes.rs rename to crates/vino-runtime/src/native_actors/generated/string_to_bytes.rs diff --git a/crates/vino-runtime2/src/native_actors/log.rs b/crates/vino-runtime/src/native_actors/log.rs similarity index 100% rename from crates/vino-runtime2/src/native_actors/log.rs rename to crates/vino-runtime/src/native_actors/log.rs diff --git a/crates/vino-runtime2/src/native_actors/mod.rs b/crates/vino-runtime/src/native_actors/mod.rs similarity index 100% rename from crates/vino-runtime2/src/native_actors/mod.rs rename to crates/vino-runtime/src/native_actors/mod.rs diff --git a/crates/vino-runtime2/src/native_actors/schemas/add.widl b/crates/vino-runtime/src/native_actors/schemas/add.widl similarity index 100% rename from crates/vino-runtime2/src/native_actors/schemas/add.widl rename to crates/vino-runtime/src/native_actors/schemas/add.widl diff --git a/crates/vino-runtime2/src/native_actors/schemas/bcrypt.widl b/crates/vino-runtime/src/native_actors/schemas/bcrypt.widl similarity index 100% rename from crates/vino-runtime2/src/native_actors/schemas/bcrypt.widl rename to crates/vino-runtime/src/native_actors/schemas/bcrypt.widl diff --git a/crates/vino-runtime2/src/native_actors/schemas/generate.sh b/crates/vino-runtime/src/native_actors/schemas/generate.sh similarity index 100% rename from crates/vino-runtime2/src/native_actors/schemas/generate.sh rename to crates/vino-runtime/src/native_actors/schemas/generate.sh diff --git a/crates/vino-runtime2/src/native_actors/schemas/log.widl b/crates/vino-runtime/src/native_actors/schemas/log.widl similarity index 100% rename from crates/vino-runtime2/src/native_actors/schemas/log.widl rename to crates/vino-runtime/src/native_actors/schemas/log.widl diff --git a/crates/vino-runtime2/src/native_actors/schemas/string-to-bytes.widl b/crates/vino-runtime/src/native_actors/schemas/string-to-bytes.widl similarity index 100% rename from crates/vino-runtime2/src/native_actors/schemas/string-to-bytes.widl rename to crates/vino-runtime/src/native_actors/schemas/string-to-bytes.widl diff --git a/crates/vino-runtime2/src/native_actors/schemas/template.ejs b/crates/vino-runtime/src/native_actors/schemas/template.ejs similarity index 100% rename from crates/vino-runtime2/src/native_actors/schemas/template.ejs rename to crates/vino-runtime/src/native_actors/schemas/template.ejs diff --git a/crates/vino-runtime2/src/native_actors/string_to_bytes.rs b/crates/vino-runtime/src/native_actors/string_to_bytes.rs similarity index 100% rename from crates/vino-runtime2/src/native_actors/string_to_bytes.rs rename to crates/vino-runtime/src/native_actors/string_to_bytes.rs diff --git a/crates/vino-runtime2/src/native_component_actor.rs b/crates/vino-runtime/src/native_component_actor.rs similarity index 100% rename from crates/vino-runtime2/src/native_component_actor.rs rename to crates/vino-runtime/src/native_component_actor.rs diff --git a/crates/vino-runtime2/src/native_macro.rs b/crates/vino-runtime/src/native_macro.rs similarity index 100% rename from crates/vino-runtime2/src/native_macro.rs rename to crates/vino-runtime/src/native_macro.rs diff --git a/crates/vino-runtime2/src/network.rs b/crates/vino-runtime/src/network.rs similarity index 100% rename from crates/vino-runtime2/src/network.rs rename to crates/vino-runtime/src/network.rs diff --git a/crates/vino-runtime2/src/oci.rs b/crates/vino-runtime/src/oci.rs similarity index 100% rename from crates/vino-runtime2/src/oci.rs rename to crates/vino-runtime/src/oci.rs diff --git a/crates/vino-runtime2/src/port_entity.rs b/crates/vino-runtime/src/port_entity.rs similarity index 100% rename from crates/vino-runtime2/src/port_entity.rs rename to crates/vino-runtime/src/port_entity.rs diff --git a/crates/vino-runtime2/src/schematic.rs b/crates/vino-runtime/src/schematic.rs similarity index 100% rename from crates/vino-runtime2/src/schematic.rs rename to crates/vino-runtime/src/schematic.rs diff --git a/crates/vino-runtime2/src/schematic_response.rs b/crates/vino-runtime/src/schematic_response.rs similarity index 100% rename from crates/vino-runtime2/src/schematic_response.rs rename to crates/vino-runtime/src/schematic_response.rs diff --git a/crates/vino-runtime2/src/serdes.rs b/crates/vino-runtime/src/serdes.rs similarity index 100% rename from crates/vino-runtime2/src/serdes.rs rename to crates/vino-runtime/src/serdes.rs diff --git a/crates/vino-runtime2/src/test/multiple-schematics.yaml b/crates/vino-runtime/src/test/multiple-schematics.yaml similarity index 100% rename from crates/vino-runtime2/src/test/multiple-schematics.yaml rename to crates/vino-runtime/src/test/multiple-schematics.yaml diff --git a/crates/vino-runtime2/src/test/native-component.yaml b/crates/vino-runtime/src/test/native-component.yaml similarity index 100% rename from crates/vino-runtime2/src/test/native-component.yaml rename to crates/vino-runtime/src/test/native-component.yaml diff --git a/crates/vino-runtime2/src/test/short-circuit.yaml b/crates/vino-runtime/src/test/short-circuit.yaml similarity index 100% rename from crates/vino-runtime2/src/test/short-circuit.yaml rename to crates/vino-runtime/src/test/short-circuit.yaml diff --git a/crates/vino-runtime2/src/test/wapc-component.yaml b/crates/vino-runtime/src/test/wapc-component.yaml similarity index 100% rename from crates/vino-runtime2/src/test/wapc-component.yaml rename to crates/vino-runtime/src/test/wapc-component.yaml diff --git a/crates/vino-runtime2/src/vino_component.rs b/crates/vino-runtime/src/vino_component.rs similarity index 100% rename from crates/vino-runtime2/src/vino_component.rs rename to crates/vino-runtime/src/vino_component.rs diff --git a/crates/vino-runtime2/src/wapc_component_actor.rs b/crates/vino-runtime/src/wapc_component_actor.rs similarity index 100% rename from crates/vino-runtime2/src/wapc_component_actor.rs rename to crates/vino-runtime/src/wapc_component_actor.rs diff --git a/crates/vino-runtime2/tests/fixtures/validate.wasm b/crates/vino-runtime/tests/fixtures/validate.wasm similarity index 100% rename from crates/vino-runtime2/tests/fixtures/validate.wasm rename to crates/vino-runtime/tests/fixtures/validate.wasm diff --git a/crates/vinoctl/Cargo.lock b/crates/vinoctl/Cargo.lock new file mode 100644 index 000000000..2a54f0a6c --- /dev/null +++ b/crates/vinoctl/Cargo.lock @@ -0,0 +1,3968 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "actix" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "543c47e7827f8fcc9d1445bd98ba402137bfce80ee2187429de49c52b5131bd3" +dependencies = [ + "actix-rt", + "actix_derive", + "bitflags", + "bytes 1.0.1", + "crossbeam-channel", + "futures-core", + "futures-sink", + "futures-task", + "futures-util", + "log", + "once_cell", + "parking_lot", + "pin-project-lite", + "smallvec", + "tokio", + "tokio-util", +] + +[[package]] +name = "actix-macros" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbcb2b608f0accc2f5bcf3dd872194ce13d94ee45b571487035864cf966b04ef" +dependencies = [ + "quote 1.0.9", + "syn 1.0.72", +] + +[[package]] +name = "actix-rt" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d7cd957c9ed92288a7c3c96af81fa5291f65247a76a34dac7b6af74e52ba0" +dependencies = [ + "actix-macros", + "futures-core", + "tokio", +] + +[[package]] +name = "actix_derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d44b8fee1ced9671ba043476deddef739dd0959bf77030b26b738cc591737a7" +dependencies = [ + "proc-macro2 1.0.27", + "quote 1.0.9", + "syn 1.0.72", +] + +[[package]] +name = "addr2line" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" +dependencies = [ + "gimli 0.23.0", +] + +[[package]] +name = "addr2line" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03345e98af8f3d786b6d9f656ccfa6ac316d954e92bc4841f0bba20789d5fb5a" +dependencies = [ + "gimli 0.24.0", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +dependencies = [ + "memchr", +] + +[[package]] +name = "ansi_term" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +dependencies = [ + "winapi", +] + +[[package]] +name = "anyhow" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28b2cd92db5cbd74e8e5028f7e27dd7aa3090e89e4f2a197cc7c8dfb69c7063b" + +[[package]] +name = "async-channel" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-executor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "once_cell", + "slab", +] + +[[package]] +name = "async-io" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bbfd5cf2794b1e908ea8457e6c45f8f8f1f6ec5f74617bf4662623f47503c3b" +dependencies = [ + "concurrent-queue", + "fastrand", + "futures-lite", + "libc", + "log", + "once_cell", + "parking", + "polling", + "slab", + "socket2", + "waker-fn", + "winapi", +] + +[[package]] +name = "async-lock" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6a8ea61bf9947a1007c5cada31e647dbc77b103c679858150003ba697ea798b" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-net" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69b0a74e7f70af3c8cf1aa539edbd044795706659ac52b78a71dc1a205ecefdf" +dependencies = [ + "async-io", + "blocking", + "fastrand", + "futures-lite", +] + +[[package]] +name = "async-rustls" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f38092e8f467f47aadaff680903c7cbfeee7926b058d7f40af2dd4c878fbdee" +dependencies = [ + "futures-lite", + "rustls 0.18.1", + "webpki", +] + +[[package]] +name = "async-task" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" + +[[package]] +name = "atomic-waker" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + +[[package]] +name = "backtrace" +version = "0.3.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4717cfcbfaa661a0fd48f8453951837ae7e8f81e481fbb136e3202d72805a744" +dependencies = [ + "addr2line 0.15.1", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object 0.24.0", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" +dependencies = [ + "byteorder", +] + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "base64-url" +version = "1.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44265cf903f576fcaa1c2f23b32ec2dadaa8ec9d6b7c6212704d72a417bfbeef" +dependencies = [ + "base64 0.13.0", +] + +[[package]] +name = "bcrypt" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4d0faafe9e089674fc3efdb311ff5253d445c79d85d1d28bd3ace76d45e7164" +dependencies = [ + "base64 0.13.0", + "blowfish", + "getrandom 0.2.3", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9" +dependencies = [ + "async-channel", + "async-task", + "atomic-waker", + "fastrand", + "futures-lite", + "once_cell", +] + +[[package]] +name = "blowfish" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32fa6a061124e37baba002e496d203e23ba3d7b73750be82dbfbc92913048a5b" +dependencies = [ + "byteorder", + "cipher", + "opaque-debug", +] + +[[package]] +name = "bumpalo" +version = "3.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63396b8a4b9de3f4fdfb320ab6080762242f66a8ef174c49d8e19b674db4cdbe" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +dependencies = [ + "byteorder", + "iovec", +] + +[[package]] +name = "bytes" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" + +[[package]] +name = "cache-padded" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" + +[[package]] +name = "cap-fs-ext" +version = "0.13.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff3a1e32332db9ad29d6da34693ce9a7ac26a9edf96abb5c1788d193410031ab" +dependencies = [ + "cap-primitives", + "cap-std", + "rustc_version", + "unsafe-io", + "winapi", +] + +[[package]] +name = "cap-primitives" +version = "0.13.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d253b74de50b097594462618e7dd17b93b3e3bef19f32d2e512996f9095661f" +dependencies = [ + "errno", + "fs-set-times", + "ipnet", + "libc", + "maybe-owned", + "once_cell", + "posish", + "rustc_version", + "unsafe-io", + "winapi", + "winapi-util", + "winx 0.25.0", +] + +[[package]] +name = "cap-rand" +version = "0.13.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "458e98ed00e4276d0ac60da888d80957a177dfa7efa8dbb3be59f1e2b0e02ae5" +dependencies = [ + "rand 0.8.3", +] + +[[package]] +name = "cap-std" +version = "0.13.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7019d48ea53c5f378e0fdab0fe5f627fc00e76d65e75dffd6fb1cbc0c9b382ee" +dependencies = [ + "cap-primitives", + "posish", + "rustc_version", + "unsafe-io", +] + +[[package]] +name = "cap-time-ext" +version = "0.13.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90585adeada7f804e6dcf71b8ff74217ad8742188fc870b9da5deab4722baa04" +dependencies = [ + "cap-primitives", + "once_cell", + "posish", + "winx 0.25.0", +] + +[[package]] +name = "cc" +version = "1.0.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +dependencies = [ + "libc", + "num-integer", + "num-traits", + "serde", + "time", + "winapi", +] + +[[package]] +name = "chrono-humanize" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8164ae3089baf04ff71f32aeb70213283dcd236dce8bc976d00b17a458f5f71c" +dependencies = [ + "chrono", +] + +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array", +] + +[[package]] +name = "clap" +version = "2.33.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" +dependencies = [ + "ansi_term", + "atty", + "bitflags", + "strsim", + "textwrap", + "unicode-width", + "vec_map", +] + +[[package]] +name = "colored" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" +dependencies = [ + "atty", + "lazy_static", + "winapi", +] + +[[package]] +name = "concurrent-queue" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3" +dependencies = [ + "cache-padded", +] + +[[package]] +name = "core-foundation" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +dependencies = [ + "core-foundation-sys 0.7.0", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" +dependencies = [ + "core-foundation-sys 0.8.2", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" + +[[package]] +name = "core-foundation-sys" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" + +[[package]] +name = "cpp_demangle" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44919ecaf6f99e8e737bc239408931c9a01e9a6c74814fee8242dd2506b65390" +dependencies = [ + "cfg-if", + "glob", +] + +[[package]] +name = "cpufeatures" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed00c67cb5d0a7d64a44f6ad2668db7e7530311dd53ea79bcd4fb022c64911c8" +dependencies = [ + "libc", +] + +[[package]] +name = "cranelift-bforest" +version = "0.71.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcee7a5107071484772b89fdf37f0f460b7db75f476e43ea7a684fd942470bcf" +dependencies = [ + "cranelift-entity", +] + +[[package]] +name = "cranelift-codegen" +version = "0.71.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "654ab96f0f1cab71c0d323618a58360a492da2c341eb2c1f977fc195c664001b" +dependencies = [ + "byteorder", + "cranelift-bforest", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-entity", + "gimli 0.23.0", + "log", + "regalloc", + "serde", + "smallvec", + "target-lexicon", + "thiserror", +] + +[[package]] +name = "cranelift-codegen-meta" +version = "0.71.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65994cfc5be9d5fd10c5fc30bcdddfa50c04bb79c91329287bff846434ff8f14" +dependencies = [ + "cranelift-codegen-shared", + "cranelift-entity", +] + +[[package]] +name = "cranelift-codegen-shared" +version = "0.71.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "889d720b688b8b7df5e4903f9b788c3c59396050f5548e516e58ccb7312463ab" +dependencies = [ + "serde", +] + +[[package]] +name = "cranelift-entity" +version = "0.71.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a2e6884a363e42a9ba980193ea8603a4272f8a92bd8bbaf9f57a94dbea0ff96" +dependencies = [ + "serde", +] + +[[package]] +name = "cranelift-frontend" +version = "0.71.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6f41e2f9b57d2c030e249d0958f1cdc2c3cd46accf8c0438b3d1944e9153444" +dependencies = [ + "cranelift-codegen", + "log", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-native" +version = "0.71.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aab70ba7575665375d31cbdea2462916ce58be887834e1b83c860b43b51af637" +dependencies = [ + "cranelift-codegen", + "target-lexicon", +] + +[[package]] +name = "cranelift-wasm" +version = "0.71.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2fc3d2e70da6439adf97648dcdf81834363154f2907405345b6fbe7ca38918c" +dependencies = [ + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "itertools", + "log", + "serde", + "smallvec", + "thiserror", + "wasmparser", +] + +[[package]] +name = "crc32fast" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52fb27eab85b17fbb9f6fd667089e07d6a2eb8743d02639ee7f6a7a7729c9c94" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "lazy_static", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4feb231f0d4d6af81aed15928e58ecf5816aa62a2393e2c82f46973e92a9a278" +dependencies = [ + "autocfg", + "cfg-if", + "lazy_static", +] + +[[package]] +name = "curve25519-dalek" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "639891fde0dbea823fc3d798a0fdf9d2f9440a42d64a78ab3488b0ca025117b3" +dependencies = [ + "byteorder", + "digest", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "data-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "directories-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dtoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" + +[[package]] +name = "ed25519" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d0860415b12243916284c67a9be413e044ee6668247b99ba26d94b2bc06c8f6" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand 0.7.3", + "serde", + "sha2", + "zeroize", +] + +[[package]] +name = "either" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" + +[[package]] +name = "encoding_rs" +version = "0.8.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80df024fbc5ac80f87dfef0d9f5209a252f2a497f7f42944cff24d8253cac065" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "env_logger" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" +dependencies = [ + "atty", + "humantime 1.3.0", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "env_logger" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17392a012ea30ef05a610aa97dfb49496e71c9f676b27879922ea5bdf60d9d3f" +dependencies = [ + "atty", + "humantime 2.1.0", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "envmnt" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbfac51e9996e41d78a943227b7f313efcebf545b21584a0e213b956a062e11e" +dependencies = [ + "fsio", + "indexmap", +] + +[[package]] +name = "errno" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa68f2fb9cae9d37c9b2b3584aba698a2e97f72d7aef7b9f7aa71d8b54ce46fe" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" +dependencies = [ + "gcc", + "libc", +] + +[[package]] +name = "event-listener" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" + +[[package]] +name = "eventsourcing" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9ff21d2735c276e98e79a264959f8eb3af499c0634636b7a87e560e2ba559e" +dependencies = [ + "chrono", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "eventsourcing-derive" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7921fc43f697f94a9af24725c0ce2bab4464deb7945a290d9188408bcc2ed6d2" +dependencies = [ + "quote 0.4.2", + "syn 0.12.15", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fastrand" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77b705829d1e87f762c2df6da140b26af5839e1033aa84aa5f56bb688e4e1bdb" +dependencies = [ + "instant", +] + +[[package]] +name = "file-per-thread-logger" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fdbe0d94371f9ce939b555dd342d0686cc4c0cadbcd4b61d70af5ff97eb4126" +dependencies = [ + "env_logger 0.7.1", + "log", +] + +[[package]] +name = "filetime" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d34cfa13a63ae058bfa601fe9e313bbdb3746427c1459185464ce0fcf62e1e8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "winapi", +] + +[[package]] +name = "flate2" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0" +dependencies = [ + "cfg-if", + "crc32fast", + "libc", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +dependencies = [ + "matches", + "percent-encoding 2.1.0", +] + +[[package]] +name = "fs-set-times" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28f1ca01f517bba5770c067dc6c466d290b962e08214c8f2598db98d66087e55" +dependencies = [ + "posish", + "unsafe-io", + "winapi", +] + +[[package]] +name = "fsio" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a50045aa8931ae01afbc5d72439e8f57f326becb8c70d07dfc816778eff3d167" + +[[package]] +name = "futures" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7e43a803dae2fa37c1f6a8fe121e1f7bf9548b4dfc0522a42f34145dadfc27" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e682a68b29a882df0545c143dc3646daefe80ba479bcdede94d5a703de2871e2" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1" + +[[package]] +name = "futures-executor" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "badaa6a909fac9e7236d0620a2f57f7664640c56575b71a7552fbd68deafab79" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acc499defb3b348f8d8f3f66415835a9131856ff7714bf10dadfc4ec4bdb29a1" + +[[package]] +name = "futures-lite" +version = "1.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4481d0cd0de1d204a4fa55e7d45f07b1d958abcb06714b3446438e2eff695fb" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-macro" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c40298486cdf52cc00cd6d6987892ba502c7656a16a4192a9992b1ccedd121" +dependencies = [ + "autocfg", + "proc-macro-hack", + "proc-macro2 1.0.27", + "quote 1.0.9", + "syn 1.0.72", +] + +[[package]] +name = "futures-sink" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a57bead0ceff0d6dde8f465ecd96c9338121bb7717d3e7b108059531870c4282" + +[[package]] +name = "futures-task" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a16bef9fc1a4dddb5bee51c989e3fbba26569cbb0e31f5b303c184e3dd33dae" + +[[package]] +name = "futures-util" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feb5c238d27e2bf94ffdfd27b2c29e3df4a68c4193bb6427384259e2bf191967" +dependencies = [ + "autocfg", + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "proc-macro-hack", + "proc-macro-nested", + "slab", +] + +[[package]] +name = "gcc" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" + +[[package]] +name = "generic-array" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +dependencies = [ + "typenum", + "version_check 0.9.3", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gimli" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" +dependencies = [ + "fallible-iterator", + "indexmap", + "stable_deref_trait", +] + +[[package]] +name = "gimli" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "h2" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "825343c4eef0b63f541f8903f395dc5beb362a979b5799a84062527ef1e37726" +dependencies = [ + "bytes 1.0.1", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.4", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" + +[[package]] +name = "heck" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "hermit-abi" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" +dependencies = [ + "libc", +] + +[[package]] +name = "http" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" +dependencies = [ + "bytes 0.4.12", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11" +dependencies = [ + "bytes 1.0.1", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60daa14be0e0786db0f03a9e57cb404c9d756eed2b6c62b9ea98ec5743ec75a9" +dependencies = [ + "bytes 1.0.1", + "http 0.2.4", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68" + +[[package]] +name = "httpdate" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05842d0d43232b23ccb7060ecb0f0626922c21f30012e97b767b30afd4a5d4b9" + +[[package]] +name = "humantime" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" +dependencies = [ + "quick-error", +] + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e5f105c494081baa3bf9e200b279e27ec1623895cd504c7dbef8d0b080fcf54" +dependencies = [ + "bytes 1.0.1", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http 0.2.4", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes 1.0.1", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "hyperx" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a94cbc2c6f63028e5736ca4e811ae36d3990059c384cbe68298c66728a9776" +dependencies = [ + "base64 0.10.1", + "bytes 0.4.12", + "http 0.1.21", + "httparse", + "language-tags", + "log", + "mime", + "percent-encoding 1.0.1", + "time", + "unicase 2.6.0", +] + +[[package]] +name = "idna" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824845a0bf897a9042383849b02c1bc219c2383772efcd5c6f9766fa4b81aef3" +dependencies = [ + "autocfg", + "hashbrown", + "serde", +] + +[[package]] +name = "instant" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", +] + +[[package]] +name = "ipnet" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" + +[[package]] +name = "itertools" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d572918e350e82412fe766d24b15e6682fb2ed2bbe018280caa810397cb319" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" + +[[package]] +name = "jobserver" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "972f5ae5d1cb9c6ae417789196c803205313edde988685da5e3aae0827b9e7fd" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83bdfbace3a0e81a4253f73b49e960b053e396a11012cbd49b9b74d6a2b67062" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "078e285eafdfb6c4b434e0d31e8cfcb5115b651496faca5749b88fafd4f23bfd" + +[[package]] +name = "language-tags" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "leb128" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2a" + +[[package]] +name = "libc" +version = "0.2.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" + +[[package]] +name = "libloading" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f84d96438c15fcd6c3f244c8fce01d1e2b9c6b5623e9c711dc9286d8fc92d6a" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" + +[[package]] +name = "lock_api" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +dependencies = [ + "cfg-if", + "serde", +] + +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + +[[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" + +[[package]] +name = "maybe-owned" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4" + +[[package]] +name = "memchr" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" + +[[package]] +name = "memoffset" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83fb6581e8ed1f85fd45c116db8405483899489e38406156c25eb743554361d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "miniz_oxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +dependencies = [ + "adler", + "autocfg", +] + +[[package]] +name = "mio" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf80d3e903b34e0bd7282b218398aec54e082c840d9baf8339e0080a0c542956" +dependencies = [ + "libc", + "log", + "miow", + "ntapi", + "winapi", +] + +[[package]] +name = "miow" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +dependencies = [ + "winapi", +] + +[[package]] +name = "more-asserts" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238" + +[[package]] +name = "native-tls" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework 2.2.0", + "security-framework-sys 2.2.0", + "tempfile", +] + +[[package]] +name = "nats" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14b716f15b711daea70d5da9195f5c10063d2a14d74b8dba256f8eb6d45d8b29" +dependencies = [ + "async-channel", + "async-executor", + "async-io", + "async-lock", + "async-net", + "async-rustls", + "base64 0.13.0", + "base64-url", + "fastrand", + "futures-lite", + "itoa", + "json", + "log", + "nkeys 0.0.11", + "nuid 0.2.2", + "once_cell", + "regex", + "rustls-native-certs 0.4.0", +] + +[[package]] +name = "nats" +version = "0.9.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dddfc75930159fd0a7cc9910b88a6ef3396c910a40bab7a62c21e1329420ba88" +dependencies = [ + "base64 0.13.0", + "base64-url", + "crossbeam-channel", + "fastrand", + "itoa", + "json", + "libc", + "log", + "memchr", + "nkeys 0.0.11", + "nuid 0.2.2", + "once_cell", + "parking_lot", + "regex", + "rustls 0.19.1", + "rustls-native-certs 0.5.0", + "webpki", + "winapi", +] + +[[package]] +name = "nkeys" +version = "0.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0aa1a33567887c95af653f9f88e482e34df8eaabb98df92cf5c81dfd882b0a" +dependencies = [ + "byteorder", + "data-encoding", + "ed25519-dalek", + "log", + "rand 0.7.3", + "signatory", +] + +[[package]] +name = "nkeys" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1a98f0a974ff737974b57ba1c71d2e0fe7ec18e5a828d4b8e02683171349dfa" +dependencies = [ + "byteorder", + "data-encoding", + "ed25519-dalek", + "log", + "rand 0.7.3", + "signatory", +] + +[[package]] +name = "ntapi" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +dependencies = [ + "winapi", +] + +[[package]] +name = "nuid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8061bec52f76dc109f1a392ee03afcf2fae4c7950953de6388bc2f5a57b61979" +dependencies = [ + "lazy_static", + "rand 0.7.3", +] + +[[package]] +name = "nuid" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7000c9392b545c4ba43e8abc086bf7d01cd2948690934c16980170b0549a2bd3" +dependencies = [ + "lazy_static", + "rand 0.8.3", +] + +[[package]] +name = "num-integer" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" +dependencies = [ + "crc32fast", + "indexmap", +] + +[[package]] +name = "object" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5b3dd1c072ee7963717671d1ca129f1048fda25edea6b752bfc71ac8854170" + +[[package]] +name = "oci-distribution" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d28926bb291150df3e09d0962836b03e9c20fb21d8a172023c5e42650ff16647" +dependencies = [ + "anyhow", + "futures-util", + "hyperx", + "lazy_static", + "regex", + "reqwest", + "serde", + "serde_json", + "sha2", + "tokio", + "tracing", + "www-authenticate", +] + +[[package]] +name = "once_cell" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "openssl" +version = "0.10.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d7830286ad6a3973c0f1d9b73738f69c76b739301d0229c4b96501695cbe4c8" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-sys", +] + +[[package]] +name = "openssl-probe" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" + +[[package]] +name = "openssl-sys" +version = "0.9.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b0d6fb7d80f877617dfcb014e605e2b5ab2fb0afdf27935219bb6bd984cb98" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "parity-wasm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be5e13c266502aadf83426d87d81a0f5d1ef45b8027f5a471c360abfe4bfae92" + +[[package]] +name = "parking" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" + +[[package]] +name = "parking_lot" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi", +] + +[[package]] +name = "paste" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58" + +[[package]] +name = "percent-encoding" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "pest" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" +dependencies = [ + "ucd-trie", +] + +[[package]] +name = "pin-project" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7509cc106041c40a4518d2af7a61530e1eed0e6285296a3d8c5472806ccc4a4" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c950132583b500556b1efd71d45b319029f2b71518d979fcc208e16b42426f" +dependencies = [ + "proc-macro2 1.0.27", + "quote 1.0.9", + "syn 1.0.72", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" + +[[package]] +name = "polling" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fc12d774e799ee9ebae13f4076ca003b40d18a11ac0f3641e6f899618580b7b" +dependencies = [ + "cfg-if", + "libc", + "log", + "wepoll-sys", + "winapi", +] + +[[package]] +name = "posish" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1601f90b2342aaf3aadb891b71f584155d176b0e891bea92eeb11995e0ab25" +dependencies = [ + "bitflags", + "cfg-if", + "errno", + "itoa", + "libc", + "unsafe-io", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2 1.0.27", + "quote 1.0.9", + "syn 1.0.72", + "version_check 0.9.3", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2 1.0.27", + "quote 1.0.9", + "version_check 0.9.3", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" + +[[package]] +name = "proc-macro-nested" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" + +[[package]] +name = "proc-macro2" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd07deb3c6d1d9ff827999c7f9b04cdfd66b1b17ae508e14fe47b620f2282ae0" +dependencies = [ + "unicode-xid 0.1.0", +] + +[[package]] +name = "proc-macro2" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038" +dependencies = [ + "unicode-xid 0.2.2", +] + +[[package]] +name = "provider-archive" +version = "0.4.0" +dependencies = [ + "data-encoding", + "flate2", + "ring", + "tar", + "wascap 0.6.0", +] + +[[package]] +name = "psm" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3abf49e5417290756acfd26501536358560c4a5cc4a0934d390939acb3e7083a" +dependencies = [ + "cc", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1eca14c727ad12702eb4b6bfb5a232287dcf8385cb8ca83a3eeaf6519c44c408" +dependencies = [ + "proc-macro2 0.2.3", +] + +[[package]] +name = "quote" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +dependencies = [ + "proc-macro2 1.0.27", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc 0.2.0", +] + +[[package]] +name = "rand" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" +dependencies = [ + "libc", + "rand_chacha 0.3.0", + "rand_core 0.6.2", + "rand_hc 0.3.0", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.2", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" +dependencies = [ + "getrandom 0.2.3", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_hc" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" +dependencies = [ + "rand_core 0.6.2", +] + +[[package]] +name = "rayon" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" +dependencies = [ + "autocfg", + "crossbeam-deque", + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "lazy_static", + "num_cpus", +] + +[[package]] +name = "redox_syscall" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" +dependencies = [ + "getrandom 0.2.3", + "redox_syscall", +] + +[[package]] +name = "regalloc" +version = "0.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "571f7f397d61c4755285cd37853fe8e03271c243424a907415909379659381c5" +dependencies = [ + "log", + "rustc-hash", + "serde", + "smallvec", +] + +[[package]] +name = "regex" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" + +[[package]] +name = "region" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877e54ea2adcd70d80e9179344c97f93ef0dffd6b03e1f4529e6e83ab2fa9ae0" +dependencies = [ + "bitflags", + "libc", + "mach", + "winapi", +] + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + +[[package]] +name = "reqwest" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2296f2fac53979e8ccbc4a1136b25dcefd37be9ed7e4a1f6b05a6029c84ff124" +dependencies = [ + "base64 0.13.0", + "bytes 1.0.1", + "encoding_rs", + "futures-core", + "futures-util", + "http 0.2.4", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "lazy_static", + "log", + "mime", + "native-tls", + "percent-encoding 2.1.0", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-native-tls", + "url 2.2.2", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "rmp" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f55e5fa1446c4d5dd1f5daeed2a4fe193071771a2636274d0d7a3b082aa7ad6" +dependencies = [ + "byteorder", + "num-traits", +] + +[[package]] +name = "rmp-serde" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ce7d70c926fe472aed493b902010bccc17fa9f7284145cb8772fd22fdb052d8" +dependencies = [ + "byteorder", + "rmp", + "serde", +] + +[[package]] +name = "rmp-serde" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "839395ef53057db96b84c9238ab29e1a13f2e5c8ec9f66bef853ab4197303924" +dependencies = [ + "byteorder", + "rmp", + "serde", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "410f7acf3cb3a44527c5d9546bad4bf4e6c460915d5f9f2fc524498bfe8f70ce" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver", +] + +[[package]] +name = "rustls" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d1126dcf58e93cee7d098dbda643b5f92ed724f1f6a63007c1116eed6700c81" +dependencies = [ + "base64 0.12.3", + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rustls" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" +dependencies = [ + "base64 0.13.0", + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rustls-native-certs" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "629d439a7672da82dd955498445e496ee2096fe2117b9f796558a43fdb9e59b8" +dependencies = [ + "openssl-probe", + "rustls 0.18.1", + "schannel", + "security-framework 1.0.0", +] + +[[package]] +name = "rustls-native-certs" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a07b7c1885bd8ed3831c289b7870b13ef46fe0e856d288c30d9cc17d75a2092" +dependencies = [ + "openssl-probe", + "rustls 0.19.1", + "schannel", + "security-framework 2.2.0", +] + +[[package]] +name = "ryu" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" + +[[package]] +name = "schannel" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" +dependencies = [ + "lazy_static", + "winapi", +] + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "scroll" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda28d4b4830b807a8b43f7b0e6b5df875311b3e7621d84577188c175b6ec1ec" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaaae8f38bb311444cfb7f1979af0bc9240d95795f75f9ceddf6a59b79ceffa0" +dependencies = [ + "proc-macro2 1.0.27", + "quote 1.0.9", + "syn 1.0.72", +] + +[[package]] +name = "sct" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "security-framework" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad502866817f0575705bd7be36e2b2535cc33262d493aa733a2ec862baa2bc2b" +dependencies = [ + "bitflags", + "core-foundation 0.7.0", + "core-foundation-sys 0.7.0", + "libc", + "security-framework-sys 1.0.0", +] + +[[package]] +name = "security-framework" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3670b1d2fdf6084d192bc71ead7aabe6c06aa2ea3fbd9cc3ac111fa5c2b1bd84" +dependencies = [ + "bitflags", + "core-foundation 0.9.1", + "core-foundation-sys 0.8.2", + "libc", + "security-framework-sys 2.2.0", +] + +[[package]] +name = "security-framework-sys" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51ceb04988b17b6d1dcd555390fa822ca5637b4a14e1f5099f13d351bed4d6c7" +dependencies = [ + "core-foundation-sys 0.7.0", + "libc", +] + +[[package]] +name = "security-framework-sys" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3676258fd3cfe2c9a0ec99ce3038798d847ce3e4bb17746373eb9f0f1ac16339" +dependencies = [ + "core-foundation-sys 0.8.2", + "libc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" +dependencies = [ + "proc-macro2 1.0.27", + "quote 1.0.9", + "syn 1.0.72", +] + +[[package]] +name = "serde_json" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_yaml" +version = "0.8.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15654ed4ab61726bf918a39cb8d98a2e2995b002387807fa6ba58fdf7f59bb23" +dependencies = [ + "dtoa", + "linked-hash-map", + "serde", + "yaml-rust", +] + +[[package]] +name = "serdeconv" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71edc52dbce390badd96b6eb623b63c3b53023911133afd97922e9fb27365431" +dependencies = [ + "rmp-serde 0.14.4", + "serde", + "serde_json", + "toml", + "trackable", +] + +[[package]] +name = "sha2" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b362ae5752fd2137731f9fa25fd4d9058af34666ca1966fb969119cc35719f12" +dependencies = [ + "block-buffer", + "cfg-if", + "cpufeatures", + "digest", + "opaque-debug", +] + +[[package]] +name = "shellexpand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83bdb7831b2d85ddf4a7b148aa19d0587eddbe8671a436b7bd1182eaad0f2829" +dependencies = [ + "dirs-next", +] + +[[package]] +name = "signal-hook-registry" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f1d0fef1604ba8f7a073c7e701f213e056707210e9020af4528e0101ce11a6" +dependencies = [ + "libc", +] + +[[package]] +name = "signatory" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eaebd4be561a7d8148803baa108092f85090189c4b8c3ffb81602b15b5c1771" +dependencies = [ + "getrandom 0.1.16", + "signature", + "subtle-encoding", + "zeroize", +] + +[[package]] +name = "signature" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0242b8e50dd9accdd56170e94ca1ebd223b098eb9c83539a6e367d0f36ae68" + +[[package]] +name = "slab" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" + +[[package]] +name = "smallvec" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" + +[[package]] +name = "socket2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + +[[package]] +name = "structopt" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5277acd7ee46e63e5168a80734c9f6ee81b1367a7d8772a2d765df2a3705d28c" +dependencies = [ + "clap", + "lazy_static", + "structopt-derive", +] + +[[package]] +name = "structopt-derive" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ba9cdfda491b814720b6b06e0cac513d922fc407582032e8706e9f137976f90" +dependencies = [ + "heck", + "proc-macro-error", + "proc-macro2 1.0.27", + "quote 1.0.9", + "syn 1.0.72", +] + +[[package]] +name = "subtle" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" + +[[package]] +name = "subtle-encoding" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dcb1ed7b8330c5eed5441052651dd7a12c75e2ed88f2ec024ae1fa3a5e59945" +dependencies = [ + "zeroize", +] + +[[package]] +name = "syn" +version = "0.12.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c97c05b8ebc34ddd6b967994d5c6e9852fa92f8b82b3858c39451f97346dcce5" +dependencies = [ + "proc-macro2 0.2.3", + "quote 0.4.2", + "unicode-xid 0.1.0", +] + +[[package]] +name = "syn" +version = "1.0.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82" +dependencies = [ + "proc-macro2 1.0.27", + "quote 1.0.9", + "unicode-xid 0.2.2", +] + +[[package]] +name = "synstructure" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" +dependencies = [ + "proc-macro2 1.0.27", + "quote 1.0.9", + "syn 1.0.72", + "unicode-xid 0.2.2", +] + +[[package]] +name = "system-interface" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd411f50bd848d1efefd5957d494eddc80979380e3c4f80b4ba2ebd26d1b673" +dependencies = [ + "atty", + "bitflags", + "cap-fs-ext", + "cap-std", + "posish", + "rustc_version", + "unsafe-io", + "winapi", + "winx 0.23.0", +] + +[[package]] +name = "tar" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0bcfbd6a598361fda270d82469fff3d65089dc33e175c9a131f7b4cd395f228" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "target-lexicon" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "422045212ea98508ae3d28025bc5aaa2bd4a9cdaecd442a08da2ee620ee9ea95" + +[[package]] +name = "tempfile" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +dependencies = [ + "cfg-if", + "libc", + "rand 0.8.3", + "redox_syscall", + "remove_dir_all", + "winapi", +] + +[[package]] +name = "termcolor" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "thiserror" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" +dependencies = [ + "proc-macro2 1.0.27", + "quote 1.0.9", + "syn 1.0.72", +] + +[[package]] +name = "time" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "tinyvec" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd3076b5c8cc18138b8f8814895c11eb4de37114a5d127bafdc5e55798ceef37" +dependencies = [ + "autocfg", + "bytes 1.0.1", + "libc", + "memchr", + "mio", + "once_cell", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "tokio-macros", + "winapi", +] + +[[package]] +name = "tokio-macros" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c49e3df43841dafb86046472506755d8501c5615673955f6aa17181125d13c37" +dependencies = [ + "proc-macro2 1.0.27", + "quote 1.0.9", + "syn 1.0.72", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1caa0b0c8d94a049db56b5acf8cba99dc0623aab1b26d5b5f5e2d945846b3592" +dependencies = [ + "bytes 1.0.1", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +dependencies = [ + "serde", +] + +[[package]] +name = "tower-service" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" + +[[package]] +name = "tracing" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" +dependencies = [ + "proc-macro2 1.0.27", + "quote 1.0.9", + "syn 1.0.72", +] + +[[package]] +name = "tracing-core" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "trackable" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "017e2a1a93718e4e8386d037cfb8add78f1d690467f4350fb582f55af1203167" +dependencies = [ + "trackable_derive", +] + +[[package]] +name = "trackable_derive" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebeb235c5847e2f82cfe0f07eb971d1e5f6804b18dac2ae16349cc604380f82f" +dependencies = [ + "quote 1.0.9", + "syn 1.0.72", +] + +[[package]] +name = "try-lock" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" + +[[package]] +name = "typenum" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" + +[[package]] +name = "ucd-trie" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" + +[[package]] +name = "unicase" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" +dependencies = [ + "version_check 0.1.5", +] + +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +dependencies = [ + "version_check 0.9.3", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0" +dependencies = [ + "matches", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" + +[[package]] +name = "unicode-width" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" + +[[package]] +name = "unicode-xid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" + +[[package]] +name = "unsafe-io" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0301dd0f2c21baed606faa2717fbfbb1a68b7e289ea29b40bc21a16f5ae9f5aa" +dependencies = [ + "rustc_version", + "winapi", +] + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +dependencies = [ + "idna 0.1.5", + "matches", + "percent-encoding 1.0.1", +] + +[[package]] +name = "url" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +dependencies = [ + "form_urlencoded", + "idna 0.2.3", + "matches", + "percent-encoding 2.1.0", +] + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom 0.2.3", + "serde", +] + +[[package]] +name = "vcpkg" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbdbff6266a24120518560b5dc983096efb98462e51d0d68169895b237be3e5d" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" + +[[package]] +name = "version_check" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" + +[[package]] +name = "vino" +version = "0.1.0" +dependencies = [ + "actix-rt", + "anyhow", + "chrono", + "colored", + "env_logger 0.8.3", + "futures", + "itertools", + "log", + "nats 0.8.6", + "nkeys 0.1.0", + "oci-distribution", + "serde", + "serde_json", + "serde_yaml", + "serdeconv", + "structopt", + "thiserror", + "unsafe-io", + "vino-guest", + "vino-runtime", + "wapc", + "wasmcloud-host", +] + +[[package]] +name = "vino-guest" +version = "0.1.0" +dependencies = [ + "lazy_static", + "rmp-serde 0.15.4", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "wapc-guest", +] + +[[package]] +name = "vino-runtime" +version = "0.1.0" +dependencies = [ + "serde", + "wasmcloud-host", +] + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wapc" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06640cad2b5ba016b6849b56cdab2be4bdd013722d8bdad1d75f5e582bd37cca" +dependencies = [ + "anyhow", + "env_logger 0.7.1", + "log", + "serde", + "serde_json", +] + +[[package]] +name = "wapc-guest" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47cbd9d778b9718eda797278936f93f25ce81064fe26f0bb6a710cd51315f00b" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "wascap" +version = "0.6.0" +dependencies = [ + "base64 0.13.0", + "chrono", + "chrono-humanize", + "data-encoding", + "env_logger 0.8.3", + "lazy_static", + "log", + "nkeys 0.1.0", + "nuid 0.3.0", + "parity-wasm", + "ring", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "wascap" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b5fcc954352daf585bf6808f13616a531e8ee2feb98edb65d0a6e72cb9602b" +dependencies = [ + "base64 0.13.0", + "chrono", + "chrono-humanize", + "data-encoding", + "env_logger 0.8.3", + "lazy_static", + "log", + "nkeys 0.1.0", + "nuid 0.3.0", + "parity-wasm", + "ring", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi-cap-std-sync" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0b98fd34546f203e257fe52e5b337f285e2ddbfafb13e996f34af8e20b0dbd0" +dependencies = [ + "anyhow", + "bitflags", + "cap-fs-ext", + "cap-rand", + "cap-std", + "cap-time-ext", + "fs-set-times", + "lazy_static", + "libc", + "system-interface", + "tracing", + "unsafe-io", + "wasi-common", + "winapi", +] + +[[package]] +name = "wasi-common" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ebe701737907009cc4d643ae61c004e154382d02d99657004114b61d5b2ee5d" +dependencies = [ + "anyhow", + "bitflags", + "cap-rand", + "cap-std", + "libc", + "thiserror", + "tracing", + "wiggle", + "winapi", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d54ee1d4ed486f78874278e63e4069fc1ab9f6a18ca492076ffb90c5eb2997fd" +dependencies = [ + "cfg-if", + "serde", + "serde_json", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2 1.0.27", + "quote 1.0.9", + "syn 1.0.72", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fba7978c679d53ce2d0ac80c8c175840feb849a161664365d1287b41f2e67f1" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "088169ca61430fe1e58b8096c24975251700e7b1f6fd91cc9d59b04fb9b18bd4" +dependencies = [ + "quote 1.0.9", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be2241542ff3d9f241f5e2cb6dd09b37efe786df8851c54957683a49f0987a97" +dependencies = [ + "proc-macro2 1.0.27", + "quote 1.0.9", + "syn 1.0.72", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7cff876b8f18eed75a66cf49b65e7f967cb354a7aa16003fb55dbfd25b44b4f" + +[[package]] +name = "wasmcloud-actor-core" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36ef1e944f088a7203b2fd2d1a21030b315ae915839b0bed482d674dcd36c108" +dependencies = [ + "lazy_static", + "log", + "rmp-serde 0.15.4", + "serde", + "serde_bytes", + "serde_json", +] + +[[package]] +name = "wasmcloud-actor-keyvalue" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ccf42b3615e9b76568627f686e5bf47f8bb9c212ebe883dceb2edaf06c2f1c2" +dependencies = [ + "lazy_static", + "log", + "rmp-serde 0.15.4", + "serde", + "serde_bytes", + "serde_json", +] + +[[package]] +name = "wasmcloud-control-interface" +version = "0.3.1" +dependencies = [ + "actix-rt", + "chrono", + "crossbeam-channel", + "data-encoding", + "futures", + "log", + "nats 0.8.6", + "ring", + "rmp-serde 0.15.4", + "serde", + "serde_json", + "uuid", + "wascap 0.6.0", +] + +[[package]] +name = "wasmcloud-host" +version = "0.18.2" +dependencies = [ + "actix", + "actix-rt", + "anyhow", + "bcrypt", + "chrono", + "crossbeam-channel", + "data-encoding", + "envmnt", + "futures", + "itertools", + "lazy_static", + "libloading", + "log", + "nats 0.8.6", + "oci-distribution", + "once_cell", + "parking_lot", + "provider-archive", + "rand 0.8.3", + "ring", + "rmp-serde 0.15.4", + "serde", + "serde_bytes", + "serde_json", + "serde_yaml", + "uuid", + "vino-guest", + "wapc", + "wascap 0.6.0", + "wasmcloud-actor-keyvalue", + "wasmcloud-control-interface", + "wasmcloud-nats-kvcache", + "wasmcloud-provider-core", + "wasmtime-provider", +] + +[[package]] +name = "wasmcloud-nats-kvcache" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "930a8e02988560586ab1757ecf53cc5460020e04b58a0427bd97e568046c9e4d" +dependencies = [ + "crossbeam-channel", + "env_logger 0.8.3", + "eventsourcing", + "eventsourcing-derive", + "lazy_static", + "log", + "nats 0.9.17", + "serde", + "uuid", + "wascap 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmcloud-actor-core", + "wasmcloud-actor-keyvalue", + "wasmcloud-provider-core", +] + +[[package]] +name = "wasmcloud-provider-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0b8685026259ab32e67bd1aed0c8eb04f15717e9da8b2b262d8bf460cfc2dbc" +dependencies = [ + "rmp-serde 0.15.4", + "serde", + "serde_derive", +] + +[[package]] +name = "wasmparser" +version = "0.76.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "755a9a4afe3f6cccbbe6d7e965eef44cf260b001f93e547eba84255c1d0187d8" + +[[package]] +name = "wasmtime" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718cb52a9fdb7ab12471e9b9d051c9adfa6b5c504e0a1fea045e5eabc81eedd9" +dependencies = [ + "anyhow", + "backtrace", + "bincode", + "cfg-if", + "cpp_demangle", + "indexmap", + "libc", + "log", + "paste", + "region", + "rustc-demangle", + "serde", + "smallvec", + "target-lexicon", + "wasmparser", + "wasmtime-cache", + "wasmtime-environ", + "wasmtime-fiber", + "wasmtime-jit", + "wasmtime-profiling", + "wasmtime-runtime", + "wat", + "winapi", +] + +[[package]] +name = "wasmtime-cache" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f984df56c4adeba91540f9052db9f7a8b3b00cfaac1a023bee50a972f588b0c" +dependencies = [ + "anyhow", + "base64 0.13.0", + "bincode", + "directories-next", + "errno", + "file-per-thread-logger", + "libc", + "log", + "serde", + "sha2", + "toml", + "winapi", + "zstd", +] + +[[package]] +name = "wasmtime-cranelift" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a05abbf94e03c2c8ee02254b1949320c4d45093de5d9d6ed4d9351d536075c9" +dependencies = [ + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "cranelift-wasm", + "wasmparser", + "wasmtime-environ", +] + +[[package]] +name = "wasmtime-debug" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382eecd6281c6c1d1f3c904c3c143e671fc1a9573820cbfa777fba45ce2eda9c" +dependencies = [ + "anyhow", + "gimli 0.23.0", + "more-asserts", + "object 0.23.0", + "target-lexicon", + "thiserror", + "wasmparser", + "wasmtime-environ", +] + +[[package]] +name = "wasmtime-environ" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81011b2b833663d7e0ce34639459a0e301e000fc7331e0298b3a27c78d0cec60" +dependencies = [ + "anyhow", + "cfg-if", + "cranelift-codegen", + "cranelift-entity", + "cranelift-wasm", + "gimli 0.23.0", + "indexmap", + "log", + "more-asserts", + "serde", + "thiserror", + "wasmparser", +] + +[[package]] +name = "wasmtime-fiber" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d92da32e31af2e3d828f485f5f24651ed4d3b7f03a46ea6555eae6940d1402cd" +dependencies = [ + "cc", + "libc", + "winapi", +] + +[[package]] +name = "wasmtime-jit" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b5f649623859a12d361fe4cc4793de44f7c3ff34c322c5714289787e89650bb" +dependencies = [ + "addr2line 0.14.1", + "anyhow", + "cfg-if", + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "cranelift-native", + "cranelift-wasm", + "gimli 0.23.0", + "log", + "more-asserts", + "object 0.23.0", + "rayon", + "region", + "serde", + "target-lexicon", + "thiserror", + "wasmparser", + "wasmtime-cranelift", + "wasmtime-debug", + "wasmtime-environ", + "wasmtime-obj", + "wasmtime-profiling", + "wasmtime-runtime", + "winapi", +] + +[[package]] +name = "wasmtime-obj" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef2e99cd9858f57fd062e9351e07881cedfc8597928385e02a48d9333b9e15a1" +dependencies = [ + "anyhow", + "more-asserts", + "object 0.23.0", + "target-lexicon", + "wasmtime-debug", + "wasmtime-environ", +] + +[[package]] +name = "wasmtime-profiling" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e46c0a590e49278ba7f79ef217af9db4ecc671b50042c185093e22d73524abb2" +dependencies = [ + "anyhow", + "cfg-if", + "gimli 0.23.0", + "lazy_static", + "libc", + "object 0.23.0", + "scroll", + "serde", + "target-lexicon", + "wasmtime-environ", + "wasmtime-runtime", +] + +[[package]] +name = "wasmtime-provider" +version = "0.0.2" +dependencies = [ + "anyhow", + "cap-std", + "log", + "serde", + "serde_json", + "wapc", + "wasi-cap-std-sync", + "wasi-common", + "wasmtime", + "wasmtime-wasi", +] + +[[package]] +name = "wasmtime-runtime" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1438a09185fc7ca067caf1a80d7e5b398eefd4fb7630d94841448ade60feb3d0" +dependencies = [ + "backtrace", + "cc", + "cfg-if", + "indexmap", + "lazy_static", + "libc", + "log", + "memoffset", + "more-asserts", + "psm", + "region", + "thiserror", + "wasmtime-environ", + "winapi", +] + +[[package]] +name = "wasmtime-wasi" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f12e15b404af0ada9a5cf64acc0afa3c94f350578df4526a4479827bcb5b4335" +dependencies = [ + "anyhow", + "wasi-common", + "wasmtime", + "wasmtime-wiggle", + "wiggle", +] + +[[package]] +name = "wasmtime-wiggle" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b78917e71dbcbcc0cb22c764bafe54edfe3debd44cb7902f82d2db026866b983" +dependencies = [ + "wasmtime", + "wasmtime-wiggle-macro", + "wiggle", + "wiggle-borrow", +] + +[[package]] +name = "wasmtime-wiggle-macro" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bb12dd67b6a2d667bd9dc17b3b3b0352791268fc4c983b030314abbe2050c07" +dependencies = [ + "proc-macro2 1.0.27", + "quote 1.0.9", + "syn 1.0.72", + "wiggle-generate", + "witx", +] + +[[package]] +name = "wast" +version = "33.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d04fe175c7f78214971293e7d8875673804e736092206a3a4544dbc12811c1b" +dependencies = [ + "leb128", +] + +[[package]] +name = "wast" +version = "35.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ef140f1b49946586078353a453a1d28ba90adfc54dde75710bc1931de204d68" +dependencies = [ + "leb128", +] + +[[package]] +name = "wat" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ec280a739b69173e0ffd12c1658507996836ba4e992ed9bc1e5385a0bd72a02" +dependencies = [ + "wast 35.0.2", +] + +[[package]] +name = "web-sys" +version = "0.3.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e828417b379f3df7111d3a2a9e5753706cae29c41f7c4029ee9fd77f3e09e582" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "wepoll-sys" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcb14dea929042224824779fbc82d9fab8d2e6d3cbc0ac404de8edf489e77ff" +dependencies = [ + "cc", +] + +[[package]] +name = "wiggle" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dca1f6c471789dedc042ce33d8cb59f3cba349a01f9ecbf95ac24e2a96423413" +dependencies = [ + "bitflags", + "thiserror", + "tracing", + "wiggle-macro", + "witx", +] + +[[package]] +name = "wiggle-borrow" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56a8c49e24925dc2fda810c474c6952c73b630862bb44c2432e6167d401eb503" +dependencies = [ + "wiggle", +] + +[[package]] +name = "wiggle-generate" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "669f5709f6a8e537f9bf32f5b5d96ed326379eadd55edcc666943c4f71131d5c" +dependencies = [ + "anyhow", + "heck", + "proc-macro2 1.0.27", + "quote 1.0.9", + "shellexpand", + "syn 1.0.72", + "witx", +] + +[[package]] +name = "wiggle-macro" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81afb4e41bde0225226d0a82a2ac40a77000c69ac8760cf29199feaf4fe2fe6" +dependencies = [ + "quote 1.0.9", + "syn 1.0.72", + "wiggle-generate", + "witx", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "winreg" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" +dependencies = [ + "winapi", +] + +[[package]] +name = "winx" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a316462681accd062e32c37f9d78128691a4690764917d13bd8ea041baf2913e" +dependencies = [ + "bitflags", + "winapi", +] + +[[package]] +name = "winx" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bdb79e12a5ac98f09e863b99c38c72f942a41f643ae0bb05d4d6d2633481341" +dependencies = [ + "bitflags", + "winapi", +] + +[[package]] +name = "witx" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df4a58e03db38d5e0762afc768ac9abacf826de59602b0a1dfa1b9099f03388e" +dependencies = [ + "anyhow", + "log", + "thiserror", + "wast 33.0.0", +] + +[[package]] +name = "www-authenticate" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c62efb8259cda4e4c732287397701237b78daa4c43edcf3e613c8503a6c07dd" +dependencies = [ + "hyperx", + "unicase 1.4.2", + "url 1.7.2", +] + +[[package]] +name = "xattr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" +dependencies = [ + "libc", +] + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "zeroize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2c1e130bebaeab2f23886bf9acbaca14b092408c452543c857f66399cd6dab1" +dependencies = [ + "proc-macro2 1.0.27", + "quote 1.0.9", + "syn 1.0.72", + "synstructure", +] + +[[package]] +name = "zstd" +version = "0.6.1+zstd.1.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de55e77f798f205d8561b8fe2ef57abfb6e0ff2abe7fd3c089e119cdb5631a3" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "3.0.1+zstd.1.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1387cabcd938127b30ce78c4bf00b30387dddf704e3f0881dbc4ff62b5566f8c" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "1.4.20+zstd.1.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd5b733d7cf2d9447e2c3e76a5589b4f5e5ae065c22a2bc0b023cbc331b6c8e" +dependencies = [ + "cc", + "libc", +] diff --git a/crates/vinoctl/Cargo.toml b/crates/vinoctl/Cargo.toml new file mode 100644 index 000000000..5d190b2d4 --- /dev/null +++ b/crates/vinoctl/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "vinoctl" +version = "0.1.0" +authors = ["Jarrod Overson "] +edition = "2018" +default-run = "vinoctl" +license-file = "LICENSE" +description = "Application data flow platform" +repository = "https://gitlab.com/vino-dev/vino" +documentation = "https://vino.dev" +readme = "README.md" + +[dependencies] +log = "0.4.11" +anyhow = "1.0.34" +actix-rt = "2.1.0" +structopt = "0.3.21" +futures = "0.3.13" +serde_json = "1.0.64" +serde_yaml = "0.8.17" +serde = "1.0.126" +thiserror = "1.0.24" +unsafe-io = "= 0.6.2" +logger = { path = "../logger" } + +[dev-dependencies] + + +[[bin]] +name = "vinoctl" +path = "src/main.rs" diff --git a/crates/vinoctl/LICENSE b/crates/vinoctl/LICENSE new file mode 100644 index 000000000..30404ce4c --- /dev/null +++ b/crates/vinoctl/LICENSE @@ -0,0 +1 @@ +TODO \ No newline at end of file diff --git a/crates/vinoctl/README.md b/crates/vinoctl/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/crates/vinoctl/src/commands.rs b/crates/vinoctl/src/commands.rs new file mode 100644 index 000000000..6f11aadb8 --- /dev/null +++ b/crates/vinoctl/src/commands.rs @@ -0,0 +1,23 @@ +pub mod start; + +use structopt::{clap::AppSettings, StructOpt}; + +pub fn get_args() -> Cli { + Cli::from_args() +} + +#[derive(StructOpt, Debug, Clone)] +#[structopt( + global_settings(&[AppSettings::VersionlessSubcommands]), + name = "vino", about = "Vino host runtime")] +pub struct Cli { + #[structopt(flatten)] + pub command: CliCommand, +} + +#[derive(Debug, Clone, StructOpt)] +pub enum CliCommand { + /// Start a long-running host with a manifest and schematics + #[structopt(name = "start")] + Start(start::StartCommand), +} diff --git a/crates/vinoctl/src/commands/start.rs b/crates/vinoctl/src/commands/start.rs new file mode 100644 index 000000000..153d5ccc6 --- /dev/null +++ b/crates/vinoctl/src/commands/start.rs @@ -0,0 +1,80 @@ +use std::path::PathBuf; + +use crate::Result; + +use structopt::StructOpt; + +use logger::LoggingOptions; + +#[derive(Debug, Clone, StructOpt)] +#[structopt(rename_all = "kebab-case")] +pub struct StartCommand { + #[structopt(flatten)] + pub logging: LoggingOptions, + + /// Host for RPC connection + #[structopt(long = "rpc-host", default_value = "0.0.0.0", env = "VINO_RPC_HOST")] + pub rpc_host: String, + + /// Port for RPC connection + #[structopt(long = "rpc-port", default_value = "4222", env = "VINO_RPC_PORT")] + pub rpc_port: String, + + /// JWT file for RPC authentication. Must be supplied with rpc_seed. + #[structopt(long = "rpc-jwt", env = "VINO_RPC_JWT", hide_env_values = true)] + pub rpc_jwt: Option, + + /// Seed file or literal for RPC authentication. Must be supplied with rpc_jwt. + #[structopt(long = "rpc-seed", env = "VINO_RPC_SEED", hide_env_values = true)] + pub rpc_seed: Option, + + /// Credsfile for RPC authentication + #[structopt(long = "rpc-credsfile", env = "VINO_RPC_CREDS", hide_env_values = true)] + pub rpc_credsfile: Option, + + /// JWT file for control interface authentication. Must be supplied with control_seed. + #[structopt(long = "control-jwt", env = "VINO_CONTROL_JWT", hide_env_values = true)] + pub control_jwt: Option, + + /// Seed file or literal for control interface authentication. Must be supplied with control_jwt. + #[structopt( + long = "control-seed", + env = "VINO_CONTROL_SEED", + hide_env_values = true + )] + pub control_seed: Option, + + /// Credsfile for control interface authentication + #[structopt( + long = "control-credsfile", + env = "VINO_CONTROL_CREDS", + hide_env_values = true + )] + pub control_credsfile: Option, + + /// Allows live updating of actors + #[structopt(long = "allow-live-updates")] + pub allow_live_updates: bool, + + /// Allows the use of "latest" artifact tag + #[structopt(long = "allow-oci-latest")] + pub allow_oci_latest: bool, + + /// Disables strict comparison of live updated actor claims + #[structopt(long = "disable-strict-update-check")] + pub disable_strict_update_check: bool, + + /// Allows the use of HTTP registry connections to these registries + #[structopt(long = "allowed-insecure")] + pub allowed_insecure: Vec, + + /// Specifies a manifest file to apply to the host once started + #[structopt(parse(from_os_str))] + pub manifest: Option, +} + +pub async fn handle_command(command: StartCommand) -> Result { + crate::utils::init_logger(&command.logging)?; + info!("Command started"); + Ok("Done".to_string()) +} diff --git a/crates/vinoctl/src/error.rs b/crates/vinoctl/src/error.rs new file mode 100644 index 000000000..733e0cb8b --- /dev/null +++ b/crates/vinoctl/src/error.rs @@ -0,0 +1,34 @@ +use anyhow::anyhow; +use thiserror::Error; + +type WasmCloudError = Box; + +#[derive(Error, Debug)] +pub enum VinoCtlError { + #[error("invalid configuration")] + ConfigurationError, + #[error("File not found {0}")] + FileNotFound(String), + #[error("Configuration disallows fetching artifacts with the :latest tag ({0})")] + LatestDisallowed(String), + #[error("Could not fetch '{0}': {1}")] + OciFetchFailure(String, String), + #[error("Could not start host: {0}")] + HostStartFailure(String), + #[error("Failed to deserialize configuration {0}")] + ConfigurationDeserialization(String), + #[error(transparent)] + Other(#[from] anyhow::Error), +} + +impl From for VinoCtlError { + fn from(e: WasmCloudError) -> Self { + VinoCtlError::Other(anyhow!(e)) + } +} + +impl From for VinoCtlError { + fn from(e: std::io::Error) -> Self { + VinoCtlError::Other(anyhow!(e)) + } +} diff --git a/crates/vinoctl/src/lib.rs b/crates/vinoctl/src/lib.rs new file mode 100644 index 000000000..2cca24247 --- /dev/null +++ b/crates/vinoctl/src/lib.rs @@ -0,0 +1,20 @@ +pub mod commands; +pub mod error; +mod utils; + +use error::VinoCtlError; + +pub type Result = anyhow::Result; +pub type Error = VinoCtlError; + +#[macro_use] +extern crate log; + +#[cfg(test)] +mod tests { + + #[actix_rt::test] + async fn runs_crud_api_config() -> crate::Result<()> { + Ok(()) + } +} diff --git a/crates/vinoctl/src/main.rs b/crates/vinoctl/src/main.rs new file mode 100644 index 000000000..56d57c56b --- /dev/null +++ b/crates/vinoctl/src/main.rs @@ -0,0 +1,27 @@ +use vinoctl::commands::{get_args, CliCommand}; + +use vinoctl::Result; + +#[macro_use] +extern crate log; + +#[actix_rt::main] +async fn main() -> Result<()> { + let cli = get_args(); + + let res = match cli.command { + CliCommand::Start(cmd) => vinoctl::commands::start::handle_command(cmd).await, + }; + + std::process::exit(match res { + Ok(out) => { + info!("{}", out); + 0 + } + Err(e) => { + eprintln!("Vino exiting with error: {}", e); + println!("Run with --info, --debug, or --trace for more information."); + 1 + } + }); +} diff --git a/crates/vinoctl/src/utils.rs b/crates/vinoctl/src/utils.rs new file mode 100644 index 000000000..28027800f --- /dev/null +++ b/crates/vinoctl/src/utils.rs @@ -0,0 +1,19 @@ +use anyhow::Context; +use logger::LoggingOptions; + +pub fn init_logger(opts: &LoggingOptions) -> crate::Result<()> { + logger::Logger::init( + &opts, + &[ + "logger", + "vino", + "vinoctl", + "wasmcloud", + "wasmcloud_host", + "wapc", + ], + &[], + ) + .context("Could not initialize logger")?; + Ok(()) +} diff --git a/crates/vinoctl/tests/run.rs b/crates/vinoctl/tests/run.rs new file mode 100644 index 000000000..447b6dbd2 --- /dev/null +++ b/crates/vinoctl/tests/run.rs @@ -0,0 +1,4 @@ +#[actix_rt::test] +async fn it_adds_two() -> vinoctl::Result<()> { + Ok(()) +} diff --git a/examples/log.vino b/examples/log.vino new file mode 100755 index 000000000..a69dcee09 --- /dev/null +++ b/examples/log.vino @@ -0,0 +1,22 @@ +#!/usr/bin/env vinox +--- +default_schematic: "logger" +manifest: + schematics: + - name: logger + components: + logger: + ref: vino::log + connections: + - from: + instance: vino::schematic_input + port: input + to: + instance: logger + port: input + - from: + instance: logger + port: output + to: + instance: vino::schematic_output + port: output diff --git a/examples/multiple.vino b/examples/multiple.vino new file mode 100755 index 000000000..21fda9adb --- /dev/null +++ b/examples/multiple.vino @@ -0,0 +1,47 @@ +#!/usr/bin/env vinox +--- +default_schematic: "logger" +manifest: + schematics: + - name: logger + components: + logger: + ref: vino::log + connections: + - from: + instance: vino::schematic_input + port: input + to: + instance: logger + port: input + - from: + instance: logger + port: output + to: + instance: vino::schematic_output + port: output + - name: second_logger + components: + logger: + ref: vino::log + logger2: + ref: vino::log + connections: + - from: + instance: vino::schematic_input + port: input + to: + instance: logger + port: input + - from: + instance: logger + port: output + to: + instance: logger2 + port: input + - from: + instance: logger2 + port: output + to: + instance: vino::schematic_output + port: output diff --git a/src/commands.rs b/src/commands.rs index 4282b0085..c2e578935 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -2,31 +2,13 @@ pub mod exec; pub mod run; pub mod start; +use logger::options::LoggingOptions; use structopt::{clap::AppSettings, StructOpt}; -use crate::{error::VinoError, logger::Logger}; -use anyhow::{Context, Result}; -use env_logger::WriteStyle; - pub fn get_args() -> Cli { Cli::from_args() } -pub fn init_logger(opts: &LoggingOpts) -> Result<()> { - Logger::init(&opts).context("Failed to start logger")?; - trace!("logger initialized"); - Ok(()) -} - -fn parse_write_style(spec: &str) -> std::result::Result { - match spec { - "auto" => Ok(WriteStyle::Auto), - "always" => Ok(WriteStyle::Always), - "never" => Ok(WriteStyle::Never), - _ => Err(VinoError::ConfigurationError), - } -} - #[derive(StructOpt, Debug, Clone)] #[structopt( global_settings(&[AppSettings::VersionlessSubcommands]), @@ -49,38 +31,66 @@ pub enum CliCommand { Run(run::RunCommand), } -#[derive(StructOpt, Debug, Clone)] -pub struct LoggingOpts { - /// Disables logging - #[structopt(long = "quiet", short = "q")] - pub quiet: bool, +#[derive(Debug, Clone, StructOpt)] +#[structopt(rename_all = "kebab-case")] +pub struct NatsOptions { + /// Host for RPC connection, default = 0.0.0.0 + #[structopt(long = "rpc-host", env = "VINO_RPC_HOST")] + pub rpc_host: Option, + + /// Port for RPC connection, default = 4222 + #[structopt(long = "rpc-port", env = "VINO_RPC_PORT")] + pub rpc_port: Option, - /// Outputs the version - #[structopt(long = "version", short = "v")] - pub version: bool, + /// JWT file for RPC authentication. Must be supplied with rpc_seed. + #[structopt(long = "rpc-jwt", env = "VINO_RPC_JWT", hide_env_values = true)] + pub rpc_jwt: Option, - /// Turns on verbose logging - #[structopt(long = "verbose", short = "V")] - pub verbose: bool, + /// Seed file or literal for RPC authentication. Must be supplied with rpc_jwt. + #[structopt(long = "rpc-seed", env = "VINO_RPC_SEED", hide_env_values = true)] + pub rpc_seed: Option, - /// Turns on debug logging - #[structopt(long = "debug")] - pub debug: bool, + /// Credsfile for RPC authentication + #[structopt(long = "rpc-credsfile", env = "VINO_RPC_CREDS", hide_env_values = true)] + pub rpc_credsfile: Option, - /// Turns on trace logging - #[structopt(long = "trace")] - pub trace: bool, + /// Host for control interface, default = 0.0.0.0 + #[structopt(long = "control-host", env = "VINO_RPC_HOST")] + pub control_host: Option, - /// Log as JSON - #[structopt(long = "json")] - pub json: bool, + /// Port for control interface, default = 4222 + #[structopt(long = "control-port", env = "VINO_RPC_PORT")] + pub control_port: Option, - /// Log style + /// JWT file for control interface authentication. Must be supplied with control_seed. + #[structopt(long = "control-jwt", env = "VINO_CONTROL_JWT", hide_env_values = true)] + pub control_jwt: Option, + + /// Seed file or literal for control interface authentication. Must be supplied with control_jwt. + #[structopt( + long = "control-seed", + env = "VINO_CONTROL_SEED", + hide_env_values = true + )] + pub control_seed: Option, + + /// Credsfile for control interface authentication #[structopt( - long = "log-style", - env = "VINO_LOG_STYLE", - parse(try_from_str = parse_write_style), - default_value="auto" + long = "control-credsfile", + env = "VINO_CONTROL_CREDS", + hide_env_values = true )] - pub log_style: WriteStyle, + pub control_credsfile: Option, +} + +#[derive(Debug, Clone, StructOpt)] +#[structopt(rename_all = "kebab-case")] +pub struct HostOptions { + /// Allows the use of "latest" artifact tag + #[structopt(long = "allow-oci-latest", env = "VINO_ALLOW_LATEST")] + pub allow_oci_latest: Option, + + /// Allows the use of HTTP registry connections to these registries + #[structopt(long = "allowed-insecure")] + pub allowed_insecure: Vec, } diff --git a/src/commands/exec.rs b/src/commands/exec.rs index 23e3babaa..e3d058bc0 100644 --- a/src/commands/exec.rs +++ b/src/commands/exec.rs @@ -1,19 +1,19 @@ -use crate::{util::fetch_actor, Result}; +use crate::{utils::fetch_actor, Result}; use anyhow::Context; use serde_json::{json, Value::String as JsonString}; use std::collections::HashMap; use structopt::StructOpt; use wasmcloud_host::{deserialize, HostBuilder, MessagePayload}; -use crate::{commands::init_logger, util::generate_exec_manifest}; +use crate::utils::generate_exec_manifest; -use super::LoggingOpts; +use super::LoggingOptions; #[derive(Debug, Clone, StructOpt)] #[structopt(rename_all = "kebab-case")] pub struct ExecCommand { #[structopt(flatten)] - pub logging: LoggingOpts, + pub logging: LoggingOptions, /// Turn on info logging #[structopt(long = "info")] @@ -37,7 +37,7 @@ pub async fn handle_command(command: ExecCommand) -> Result { if !(command.info || command.logging.trace || command.logging.debug) { logging.quiet = true; } - init_logger(&logging)?; + crate::utils::init_logger(&logging)?; let mut host_builder = HostBuilder::new(); host_builder = host_builder.oci_allow_latest(); @@ -53,7 +53,7 @@ pub async fn handle_command(command: ExecCommand) -> Result { let json_string = command.data; let json: HashMap = - serde_json::from_str(&json_string).context("Could not deserialized JSON input data")?; + serde_json::from_str(&json_string).context("Could not deserialize JSON input data")?; info!("Starting host"); match host.start().await { diff --git a/src/commands/run.rs b/src/commands/run.rs index 484e4ece3..52bfe7b08 100644 --- a/src/commands/run.rs +++ b/src/commands/run.rs @@ -1,42 +1,30 @@ -use crate::{util::load_runconfig, Result}; +use crate::{ + utils::{load_runconfig, merge_runconfig}, + Result, +}; use anyhow::Context; use std::{collections::HashMap, io::Read, path::PathBuf}; use structopt::StructOpt; -use wasmcloud_host::HostBuilder; - -use crate::commands::init_logger; - -use super::LoggingOpts; #[derive(Debug, Clone, StructOpt)] #[structopt(rename_all = "kebab-case")] pub struct RunCommand { #[structopt(flatten)] - pub logging: LoggingOpts, + pub logging: super::LoggingOptions, + + #[structopt(flatten)] + pub nats: super::NatsOptions, + + #[structopt(flatten)] + pub host: super::HostOptions, /// Turn on info logging #[structopt(long = "info")] pub info: bool, - /// JWT file for RPC authentication. Must be supplied with rpc_seed. - #[structopt(long = "rpc-jwt", env = "VINO_RPC_JWT", hide_env_values = true)] - pub rpc_jwt: Option, - - /// Seed file or literal for RPC authentication. Must be supplied with rpc_jwt. - #[structopt(long = "rpc-seed", env = "VINO_RPC_SEED", hide_env_values = true)] - pub rpc_seed: Option, - - /// JWT file for control interface authentication. Must be supplied with control_seed. - #[structopt(long = "control-jwt", env = "VINO_CONTROL_JWT", hide_env_values = true)] - pub control_jwt: Option, - - /// Seed file or literal for control interface authentication. Must be supplied with control_jwt. - #[structopt( - long = "control-seed", - env = "VINO_CONTROL_SEED", - hide_env_values = true - )] - pub control_seed: Option, + /// Default schematic to run + #[structopt(long, short, env = "VINO_DEFAULT_SCHEMATIC")] + pub default_schematic: Option, /// Manifest file manifest: PathBuf, @@ -50,7 +38,7 @@ pub async fn handle_command(command: RunCommand) -> Result { if !(command.info || command.logging.trace || command.logging.debug) { logging.quiet = true; } - init_logger(&logging)?; + crate::utils::init_logger(&logging)?; let data = match command.data { None => { @@ -62,22 +50,18 @@ pub async fn handle_command(command: RunCommand) -> Result { Some(i) => i, }; - let host_builder = HostBuilder::new(); - - let host = host_builder.build(); - let json: HashMap = - serde_json::from_str(&data).context("Could not deserialized JSON input data")?; + serde_json::from_str(&data).context("Could not deserialize JSON input data")?; let config = load_runconfig(command.manifest)?; + let mut config = merge_runconfig(config, command.nats, command.host); + if command.default_schematic.is_some() { + config.default_schematic = command.default_schematic.unwrap(); + } let result = crate::run(config, json).await?; - debug!("Raw result: {:?}", result); - println!("{}", result); - host.stop().await; - Ok("Done".to_string()) } diff --git a/src/commands/start.rs b/src/commands/start.rs index 137edc280..94b8cdd9d 100644 --- a/src/commands/start.rs +++ b/src/commands/start.rs @@ -1,81 +1,26 @@ use std::path::PathBuf; use crate::{ - util::{load_runconfig, nats_connection}, + utils::{load_runconfig, merge_runconfig, nats_connection}, Result, }; -use vino_runtime::run_config::RunConfig; +use vino_runtime::RunConfig; use futures::try_join; use structopt::StructOpt; use wasmcloud_host::HostBuilder; - -use crate::commands::init_logger; - -use super::LoggingOpts; - #[derive(Debug, Clone, StructOpt)] #[structopt(rename_all = "kebab-case")] pub struct StartCommand { #[structopt(flatten)] - pub logging: LoggingOpts, - - /// Host for RPC connection - #[structopt(long = "rpc-host", default_value = "0.0.0.0", env = "VINO_RPC_HOST")] - pub rpc_host: String, - - /// Port for RPC connection - #[structopt(long = "rpc-port", default_value = "4222", env = "VINO_RPC_PORT")] - pub rpc_port: String, - - /// JWT file for RPC authentication. Must be supplied with rpc_seed. - #[structopt(long = "rpc-jwt", env = "VINO_RPC_JWT", hide_env_values = true)] - pub rpc_jwt: Option, - - /// Seed file or literal for RPC authentication. Must be supplied with rpc_jwt. - #[structopt(long = "rpc-seed", env = "VINO_RPC_SEED", hide_env_values = true)] - pub rpc_seed: Option, - - /// Credsfile for RPC authentication - #[structopt(long = "rpc-credsfile", env = "VINO_RPC_CREDS", hide_env_values = true)] - pub rpc_credsfile: Option, - - /// JWT file for control interface authentication. Must be supplied with control_seed. - #[structopt(long = "control-jwt", env = "VINO_CONTROL_JWT", hide_env_values = true)] - pub control_jwt: Option, - - /// Seed file or literal for control interface authentication. Must be supplied with control_jwt. - #[structopt( - long = "control-seed", - env = "VINO_CONTROL_SEED", - hide_env_values = true - )] - pub control_seed: Option, - - /// Credsfile for control interface authentication - #[structopt( - long = "control-credsfile", - env = "VINO_CONTROL_CREDS", - hide_env_values = true - )] - pub control_credsfile: Option, - - /// Allows live updating of actors - #[structopt(long = "allow-live-updates")] - pub allow_live_updates: bool, - - /// Allows the use of "latest" artifact tag - #[structopt(long = "allow-oci-latest")] - pub allow_oci_latest: bool, - - /// Disables strict comparison of live updated actor claims - #[structopt(long = "disable-strict-update-check")] - pub disable_strict_update_check: bool, - - /// Allows the use of HTTP registry connections to these registries - #[structopt(long = "allowed-insecure")] - pub allowed_insecure: Vec, + pub logging: super::LoggingOptions, + + #[structopt(flatten)] + pub nats: super::NatsOptions, + + #[structopt(flatten)] + pub host: super::HostOptions, /// Specifies a manifest file to apply to the host once started #[structopt(parse(from_os_str))] @@ -83,28 +28,28 @@ pub struct StartCommand { } pub async fn handle_command(command: StartCommand) -> Result { - init_logger(&command.logging)?; + crate::utils::init_logger(&command.logging)?; let config = match command.manifest { Some(file) => load_runconfig(file)?, None => RunConfig::default(), }; + let config = merge_runconfig(config, command.nats, command.host); + debug!("Attempting connection to NATS server"); - let nats_url = &format!("{}:{}", command.rpc_host, command.rpc_port); + let nats_url = &format!("{}:{}", config.config.rpc_host, config.config.rpc_port); let nc_rpc = nats_connection( nats_url, - command.rpc_jwt, - command.rpc_seed, - command.rpc_credsfile.or(config.config.rpc_credentials), + config.config.rpc_jwt, + config.config.rpc_seed, + config.config.rpc_credsfile, ); let nc_control = nats_connection( nats_url, - command.control_jwt, - command.control_seed, - command - .control_credsfile - .or(config.config.control_credentials), + config.config.control_jwt, + config.config.control_seed, + config.config.control_credsfile, ); let mut host_builder = HostBuilder::new(); @@ -118,16 +63,16 @@ pub async fn handle_command(command: StartCommand) -> Result { Err(e) => warn!("Could not connect to NATS, operating locally ({})", e), } - if command.allow_oci_latest || config.config.allow_oci_latest { + if config.config.allow_oci_latest { debug!("Enabling :latest tag"); host_builder = host_builder.oci_allow_latest(); } - if !command.allowed_insecure.is_empty() { - host_builder = host_builder.oci_allow_insecure(command.allowed_insecure); - } - if !config.config.allowed_insecure.is_empty() { + debug!( + "Allowing insecure registries: {}", + config.config.allowed_insecure.join(", ") + ); host_builder = host_builder.oci_allow_insecure(config.config.allowed_insecure); } diff --git a/src/lib.rs b/src/lib.rs index 8c90abe50..2bc7348dc 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,8 +1,8 @@ pub mod commands; pub mod error; -pub(crate) mod logger; +// pub(crate) mod logger; pub(crate) mod oci; -pub mod util; +pub mod utils; use std::collections::HashMap; @@ -77,8 +77,8 @@ mod tests { #[actix_rt::test] async fn runs_crud_api_config() -> crate::Result<()> { - let manifest = include_bytes!("../examples/crud-api.vino"); - let config = crate::util::parse_runconfig(String::from_utf8_lossy(manifest).into())?; + let manifest = include_bytes!("../examples/api.vino"); + let config = crate::utils::parse_runconfig(String::from_utf8_lossy(manifest).into())?; let mut input: HashMap = HashMap::new(); input.insert( "content_id".to_string(), diff --git a/src/main.rs b/src/main.rs index 02264ca6a..ee51846f7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,7 +21,7 @@ async fn main() -> Result<()> { 0 } Err(e) => { - eprintln!("Vino exiting with error: {}", e); + println!("Vino exiting with error: {}", e); println!("Run with --info, --debug, or --trace for more information."); 1 } diff --git a/src/util.rs b/src/utils.rs similarity index 67% rename from src/util.rs rename to src/utils.rs index 0a58da8cf..2a3d0c6ce 100644 --- a/src/util.rs +++ b/src/utils.rs @@ -1,5 +1,11 @@ -use crate::{error::VinoError, oci::fetch_oci_bytes, Result}; +use crate::{ + commands::{HostOptions, NatsOptions}, + error::VinoError, + oci::fetch_oci_bytes, + Result, +}; use anyhow::Context; +use logger::LoggingOptions; use std::{ collections::HashMap, fs::File, @@ -124,3 +130,47 @@ pub fn parse_runconfig(src: String) -> Result { serde_yaml::from_slice::(src.as_bytes()) .map_err(|e| VinoError::ConfigurationDeserialization(e.to_string())) } + +fn this_or_that_option(a: Option, b: Option) -> Option { + if a.is_some() { + a + } else { + b + } +} + +pub fn merge_runconfig(base: RunConfig, nats: NatsOptions, host: HostOptions) -> RunConfig { + RunConfig { + manifest: base.manifest, + config: vino_runtime::run_config::CommonConfiguration { + rpc_host: nats.rpc_host.unwrap_or(base.config.rpc_host), + rpc_port: nats.rpc_port.unwrap_or(base.config.rpc_port), + rpc_credsfile: this_or_that_option(nats.rpc_credsfile, base.config.rpc_credsfile), + rpc_jwt: this_or_that_option(nats.rpc_jwt, base.config.rpc_jwt), + rpc_seed: this_or_that_option(nats.rpc_seed, base.config.rpc_seed), + control_host: nats.control_host.unwrap_or(base.config.control_host), + control_port: nats.control_port.unwrap_or(base.config.control_port), + control_credsfile: this_or_that_option( + nats.control_credsfile, + base.config.control_credsfile, + ), + control_jwt: this_or_that_option(nats.control_jwt, base.config.control_jwt), + control_seed: this_or_that_option(nats.control_seed, base.config.control_seed), + allow_oci_latest: host + .allow_oci_latest + .unwrap_or(base.config.allow_oci_latest), + allowed_insecure: vec![base.config.allowed_insecure, host.allowed_insecure].concat(), + }, + default_schematic: base.default_schematic, + } +} + +pub fn init_logger(opts: &LoggingOptions) -> crate::Result<()> { + logger::Logger::init( + &opts, + &["logger", "vino", "wasmcloud", "wasmcloud_host", "wapc"], + &[], + ) + .context("Could not initialize logger")?; + Ok(()) +} diff --git a/tests/run.rs b/tests/run.rs index e2da8430c..22c12e73b 100644 --- a/tests/run.rs +++ b/tests/run.rs @@ -1,4 +1,22 @@ #[actix_rt::test] -async fn it_adds_two() -> vino::Result<()> { +async fn run_log() -> vino::Result<()> { + let output = test_bin::get_test_bin("vino") + .env_clear() + .args(&[ + "run", + "./examples/log.vino", + "{\"input\": \"testing123\"}", + "--trace", + ]) + .output() + .expect("Failed to start my_binary"); + + println!("{}", String::from_utf8_lossy(&output.stderr)); + + assert_eq!( + String::from_utf8_lossy(&output.stdout), + "Logger: testing123\n{\"output\":\"testing123\"}\n" + ); + Ok(()) }