- exec "yarnpkg", *ARGV
-rescue Errno::ENOENT
- warn "Yarn executable was not detected in the system."
- warn "Download Yarn at https://yarnpkg.com/en/docs/install"
- exit 1
+ yarn = ENV["PATH"].split(File::PATH_SEPARATOR)
+ .reject { |dir| File.expand_path(dir) == __dir__ }
+ .product(["yarnpkg", "yarn", "yarn.cmd", "yarn.ps1"])
+ .map { |dir, file| File.expand_path(file, dir) }
+ .find { |file| File.executable?(file) }
+
+ if yarn
+ exec yarn, *ARGV
+ else
+ warn "Yarn executable was not detected in the system."
+ warn "Download Yarn at https://yarnpkg.com/en/docs/install"
+ exit 1
+ end