diff --git a/Cargo.lock b/Cargo.lock index cbd99e9..b0d0249 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -390,7 +390,7 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pigeon" -version = "0.2.1" +version = "0.2.2" dependencies = [ "anyhow", "clap", diff --git a/Cargo.toml b/Cargo.toml index 8245174..0b40678 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pigeon" -version = "0.2.1" +version = "0.2.2" edition = "2021" [dependencies] diff --git a/src/main.rs b/src/main.rs index 22851cc..9837556 100644 --- a/src/main.rs +++ b/src/main.rs @@ -33,7 +33,7 @@ impl Arguments { if self.list { services.view(&self.endpoint); } else { - services.run(&self.endpoint)?; + services.run(&self.endpoint, &self.args)?; } Ok(()) } diff --git a/src/registry/mod.rs b/src/registry/mod.rs index 9c43f47..368cecd 100644 --- a/src/registry/mod.rs +++ b/src/registry/mod.rs @@ -86,7 +86,7 @@ impl Bundle { ); } } - pub fn run>(&self, keys: &[T]) -> Result<(), anyhow::Error> { + pub fn run>(&self, keys: &[T], flags: &[impl Borrow]) -> Result<(), anyhow::Error> { let (Some((endpoint, environments)), _) = self.find(keys) else { error!("couldn't find endpoint with {}", keys.join(".")); return Ok(()); @@ -114,7 +114,7 @@ impl Bundle { entry.or_insert(value.clone()); }); let built_endpoint = endpoint.substitute(&config_store)?; - built_endpoint.execute(current_env.as_ref().try_into()?, &mut config_store) + built_endpoint.execute(current_env.as_ref().try_into()?, &mut config_store, flags) } fn build(package: &impl Borrow, service_mods: HashMap) -> Self { @@ -279,9 +279,10 @@ impl EndPoint { } impl EndPoint { - fn execute(self, base_url: url::Url, config_store: &mut Store) -> anyhow::Result<()> { - let request_hook_flags = Option::<&str>::None.as_slice(); - let response_hook_flags = Option::<&str>::None.as_slice(); + fn execute(self, base_url: url::Url, config_store: &mut Store, flags:&[impl Borrow]) -> anyhow::Result<()> { + let mut flags_iter = flags.split(|flag| &flag.borrow() == &"--"); + let request_hook_flags = flags_iter.next().unwrap_or(&[]); + let response_hook_flags = flags_iter.next().unwrap_or(&[]); let Self { method, mut headers,