summaryrefslogtreecommitdiffstats
path: root/zellij-utils
diff options
context:
space:
mode:
authorSpyros Roum <spyros.roum@posteo.net>2022-05-28 03:20:41 -0700
committerGitHub <noreply@github.com>2022-05-28 12:20:41 +0200
commit2f58835f07035345f7ed62675bc7364b12ea7ba2 (patch)
tree9fabcd721a689b3bf0a25b3953b4bc8210ebc83d /zellij-utils
parentfd79b22d59ec18e0b9672b27ab29c286651048a0 (diff)
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>
Diffstat (limited to 'zellij-utils')
-rw-r--r--zellij-utils/src/cli.rs6
-rw-r--r--zellij-utils/src/input/layout.rs15
-rw-r--r--zellij-utils/src/setup.rs7
3 files changed, 15 insertions, 13 deletions
diff --git a/zellij-utils/src/cli.rs b/zellij-utils/src/cli.rs
index 39ee0cbf6..0a8d8a9e3 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 59fdbbe49..14b2971b8 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 79392c2ee..301bcee93 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),