/// Daemonise
#[structopt(long)]
daemon: bool,
+
+ /// Print a config item, do not actually run
+ #[structopt(long)]
+ print_config: Option<String>,
}
pub const METADATA_MAX_LEN: usize = MAX_OVERHEAD;
fn main() {
let opts = Opts::from_args();
- let daemon = if opts.daemon {
+ let daemon = if opts.daemon && opts.print_config.is_none() {
Some(Daemoniser::phase1())
} else {
None
{
let global_config = config::InstanceConfigGlobal::from(&ics);
+ if let Some(key) = opts.print_config.as_ref() {
+ if let Some(inspectable) = global_config.inspect_key(key) {
+ println!("{}", DisplayInspectable(inspectable));
+ process::exit(0);
+ } else {
+ throw!(anyhow!("unknown config key {:?}", key));
+ }
+ }
+
let ipif = Ipif::start(&global_config.ipif, None)?;
let ics = ics.into_iter().map(Arc::new).collect_vec();