diff options
| author | Spyros Roum <spyros.roum@posteo.net> | 2022-05-28 03:20:41 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-28 12:20:41 +0200 |
| commit | 2f58835f07035345f7ed62675bc7364b12ea7ba2 (patch) | |
| tree | 9fabcd721a689b3bf0a25b3953b4bc8210ebc83d | |
| parent | chore(assets): update Dracula Theme (#1435) (diff) | |
| download | sl0ppij-2f58835f07035345f7ed62675bc7364b12ea7ba2.tar.gz sl0ppij-2f58835f07035345f7ed62675bc7364b12ea7ba2.tar.xz sl0ppij-2f58835f07035345f7ed62675bc7364b12ea7ba2.zip | |
feat(cli): merge --layout and --layout-path (#1426)
* Merge --layout and --layout-path
* Fix e2e tests
* style(comment): reword help text
Co-authored-by: Aram Drevekenin <aram@poor.dev>
| -rw-r--r-- | src/tests/e2e/remote_runner.rs | 2 | ||||
| -rw-r--r-- | zellij-utils/src/cli.rs | 6 | ||||
| -rw-r--r-- | zellij-utils/src/input/layout.rs | 15 | ||||
| -rw-r--r-- | zellij-utils/src/setup.rs | 7 |
4 files changed, 16 insertions, 14 deletions
diff --git a/src/tests/e2e/remote_runner.rs b/src/tests/e2e/remote_runner.rs index 05f4bf2a..466b1805 100644 --- a/src/tests/e2e/remote_runner.rs +++ b/src/tests/e2e/remote_runner.rs @@ -127,7 +127,7 @@ fn start_zellij_with_layout(channel: &mut ssh2::Channel, layout_path: &str) { channel .write_all( format!( - "{} --layout-path {} --session {} --data-dir {}\n", + "{} --layout {} --session {} --data-dir {}\n", ZELLIJ_EXECUTABLE_LOCATION, layout_path, SESSION_NAME, ZELLIJ_DATA_DIR ) .as_bytes(), diff --git a/zellij-utils/src/cli.rs b/zellij-utils/src/cli.rs index 39ee0cbf..0a8d8a9e 100644 --- a/zellij-utils/src/cli.rs +++ b/zellij-utils/src/cli.rs @@ -26,14 +26,10 @@ pub struct CliArgs { #[clap(long, short, overrides_with = "session")] pub session: Option<String>, - /// Name of a layout file in the layout directory + /// Name of a predefined layout or path to a layout file #[clap(short, long, parse(from_os_str), overrides_with = "layout")] pub layout: Option<PathBuf>, - /// Path to a layout yaml file - #[clap(long, parse(from_os_str), overrides_with = "layout_path")] - pub layout_path: Option<PathBuf>, - /// Change where zellij looks for the configuration file #[clap(short, long, overrides_with = "config", env = ZELLIJ_CONFIG_FILE_ENV, parse(from_os_str))] pub config: Option<PathBuf>, diff --git a/zellij-utils/src/input/layout.rs b/zellij-utils/src/input/layout.rs index 59fdbbe4..14b2971b 100644 --- a/zellij-utils/src/input/layout.rs +++ b/zellij-utils/src/input/layout.rs @@ -239,12 +239,21 @@ impl LayoutFromYamlIntermediate { pub fn from_path_or_default( layout: Option<&PathBuf>, - layout_path: Option<&PathBuf>, layout_dir: Option<PathBuf>, ) -> Option<LayoutFromYamlIntermediateResult> { layout - .map(|p| LayoutFromYamlIntermediate::from_dir(p, layout_dir.as_ref())) - .or_else(|| layout_path.map(|p| LayoutFromYamlIntermediate::from_path(p))) + .map(|layout| { + // The way we determine where to look for the layout is similar to + // how a path would look for an executable. + // See the gh issue for more: https://github.com/zellij-org/zellij/issues/1412#issuecomment-1131559720 + if layout.extension().is_some() || layout.components().count() > 1 { + // We look localy! + LayoutFromYamlIntermediate::from_path(layout) + } else { + // We look in the default dir + LayoutFromYamlIntermediate::from_dir(layout, layout_dir.as_ref()) + } + }) .or_else(|| { Some(LayoutFromYamlIntermediate::from_dir( &std::path::PathBuf::from("default"), diff --git a/zellij-utils/src/setup.rs b/zellij-utils/src/setup.rs index 79392c2e..301bcee9 100644 --- a/zellij-utils/src/setup.rs +++ b/zellij-utils/src/setup.rs @@ -223,11 +223,8 @@ impl Setup { .layout_dir .clone() .or_else(|| get_layout_dir(opts.config_dir.clone().or_else(find_default_config_dir))); - let layout_result = LayoutFromYamlIntermediate::from_path_or_default( - opts.layout.as_ref(), - opts.layout_path.as_ref(), - layout_dir, - ); + let layout_result = + LayoutFromYamlIntermediate::from_path_or_default(opts.layout.as_ref(), layout_dir); let layout = match layout_result { None => None, Some(Ok(layout)) => Some(layout), |
