async fn main() {
let opts = <Opts as clap::Parser>::parse();
let (ics,) = config::startup("hippotat", LinkEnd::Client,
- &opts.config, &opts.log, |ics| {
+ &opts.config, &opts.log, |_, ics| {
PrintConfigOpt(&&opts.print_config)
.implement(&mut ics.iter(), )?;
config::startup(
"hippotatd", LinkEnd::Server,
- &opts.config, &opts.log, |ics|
+ &opts.config, &opts.log, |_, ics|
{
let global_config = config::InstanceConfigGlobal::from(&ics);
}
#[throws(AE)]
-pub fn read(opts: &Opts, end: LinkEnd) -> Vec<InstanceConfig> {
+pub fn read(opts: &Opts, end: LinkEnd)
+ -> (Option<ServerName>, Vec<InstanceConfig>)
+{
let agg = (||{
let mut agg = Aggregate::new(
end,
ics.push(ic);
}
- ics
+ (server_name, ics)
}
pub fn startup<F,T>(progname: &str, end: LinkEnd,
opts: &Opts, logopts: &LogOpts,
f: F) -> T
- where F: FnOnce(Vec<InstanceConfig>) -> Result<T,AE>
+ where F: FnOnce(Option<ServerName>, Vec<InstanceConfig>) -> Result<T,AE>
{
(||{
dedup_eyre_setup()?;
- let ics = config::read(opts, end)?;
+ let (server_name, ics) = config::read(opts, end)?;
if ics.is_empty() { throw!(anyhow!("no associations, quitting")); }
logopts.log_init()?;
- let t = f(ics)?;
+ let t = f(server_name, ics)?;
Ok::<_,AE>(t)
})().unwrap_or_else(|e| {