浏览代码

feat(lando): bypass `lando` if command is not available in container (#11993)

Closes #11993
Ryan Tvenge 7 月之前
父节点
当前提交
a8dee63ffe
共有 1 个文件被更改,包括 12 次插入4 次删除
  1. 12 4
      plugins/lando/lando.plugin.zsh

+ 12 - 4
plugins/lando/lando.plugin.zsh

@@ -11,15 +11,23 @@ function artisan \
          php \
          wp \
          yarn {
-  if checkForLandoFile; then
-    lando "$0" "$@"
+  # If the lando task is available in `lando --help`, then it means:
+  #
+  # 1. `lando` is in a project with a `.lando.yml` file.
+  # 2. The lando task is available for lando, based on the .lando.yml config file.
+  #
+  # This has a penalty of about 250ms, so we still want to check if the lando file
+  # exists before, which is the fast path. If it exists, checking help output is
+  # still faster than running the command and failing.
+  if _lando_file_exists && lando --help 2>&1 | command grep -Eq "^ +lando $0 "; then
+    command lando "$0" "$@"
   else
     command "$0" "$@"
   fi
 }
 
 # Check for the file in the current and parent directories.
-checkForLandoFile() {
+_lando_file_exists() {
   # Only bother checking for lando within the Sites directory.
   if [[ "$PWD/" != "$LANDO_ZSH_SITES_DIRECTORY"/* ]]; then
     # Not within $LANDO_ZSH_SITES_DIRECTORY
@@ -38,4 +46,4 @@ checkForLandoFile() {
   # Could not find $LANDO_ZSH_CONFIG_FILE in the current directory
   # or in any of its parents up to $LANDO_ZSH_SITES_DIRECTORY.
   return 1
-}
+}