aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authora-kenji <aks.kenji@protonmail.com>2021-07-22 18:44:29 +0200
committerGitHub <noreply@github.com>2021-07-22 18:44:29 +0200
commite2d086d591dc97c612cdb0778deea1c123a8cfb0 (patch)
treedd6a10add6d29492631e44e9833d0274f1586094
parentdocs(changelog): display session-name in tab-bar (diff)
parentAdd cmd to dump layout to stdout (diff)
downloadsl0ppij-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.rs10
-rw-r--r--zellij-utils/src/setup.rs22
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(())
}