diff options
| author | a-kenji <aks.kenji@protonmail.com> | 2021-07-22 18:44:29 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-22 18:44:29 +0200 |
| commit | e2d086d591dc97c612cdb0778deea1c123a8cfb0 (patch) | |
| tree | dd6a10add6d29492631e44e9833d0274f1586094 | |
| parent | docs(changelog): display session-name in tab-bar (diff) | |
| parent | Add cmd to dump layout to stdout (diff) | |
| download | sl0ppij-e2d086d591dc97c612cdb0778deea1c123a8cfb0.tar.gz sl0ppij-e2d086d591dc97c612cdb0778deea1c123a8cfb0.tar.xz sl0ppij-e2d086d591dc97c612cdb0778deea1c123a8cfb0.zip | |
Merge pull request #623 from a-kenji/feature/dump-layout
Add cmd to dump `layout` to stdout
| -rw-r--r-- | src/main.rs | 10 | ||||
| -rw-r--r-- | zellij-utils/src/setup.rs | 22 |
2 files changed, 29 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs index 612e130e..22f373a2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -36,8 +36,14 @@ pub fn main() { let config_options = Options::from_cli(&config.options, opts.command.clone()); if let Some(Command::Setup(ref setup)) = opts.command { - Setup::from_cli(setup, &opts, &config_options).expect("Failed to print to stdout"); - } + Setup::from_cli(setup, &opts, &config_options).map_or_else( + |e| { + eprintln!("{:?}", e); + process::exit(1); + }, + |_| {}, + ); + }; atomic_create_dir(&*ZELLIJ_TMP_DIR).unwrap(); atomic_create_dir(&*ZELLIJ_TMP_LOG_DIR).unwrap(); diff --git a/zellij-utils/src/setup.rs b/zellij-utils/src/setup.rs index 61c330cd..aa0bb642 100644 --- a/zellij-utils/src/setup.rs +++ b/zellij-utils/src/setup.rs @@ -96,13 +96,25 @@ pub const STRIDER_LAYOUT: &[u8] = include_bytes!(concat!( pub const NO_STATUS_LAYOUT: &[u8] = include_bytes!(concat!( env!("CARGO_MANIFEST_DIR"), "/", - "assets/layouts/default.yaml" + "assets/layouts/disable-status-bar.yaml" )); pub fn dump_default_config() -> std::io::Result<()> { dump_asset(DEFAULT_CONFIG) } +pub fn dump_specified_layout(layout: &str) -> std::io::Result<()> { + match layout { + "strider" => dump_asset(STRIDER_LAYOUT), + "default" => dump_asset(DEFAULT_LAYOUT), + "disable-status" => dump_asset(NO_STATUS_LAYOUT), + not_found => Err(std::io::Error::new( + std::io::ErrorKind::Other, + format!("Layout: {} not found", not_found), + )), + } +} + #[derive(Debug, Default, Clone, StructOpt, Serialize, Deserialize)] pub struct Setup { /// Dump the default configuration file to stdout @@ -117,6 +129,9 @@ pub struct Setup { #[structopt(long)] pub check: bool, + /// Dump the specified layout file to stdout + #[structopt(long)] + pub dump_layout: Option<String>, /// Generates completion for the specified shell #[structopt(long)] pub generate_completion: Option<String>, @@ -144,6 +159,11 @@ impl Setup { std::process::exit(0); } + if let Some(layout) = &self.dump_layout { + dump_specified_layout(layout)?; + std::process::exit(0); + } + Ok(()) } |
