php-versions # Find all installed php versions in laragon folder (configurate)
php-use <version/lastest> # Switch to a php version changing env variables ($PATH)
(**NEW**) php-switch # Interactive beautiful menu using fzf
Put this on your .bashrc
(NOTE: This script is made to use in Windows with Git Bash)
# The folder where you have all the PHP versions
PHP_FOLDER="/c/laragon/bin/php"
# List all PHP versions
php-versions() {
versions=$(ls -1 $PHP_FOLDER | cut -d'-' -f2 | sort -u)
lastest=$(ls -1 $PHP_FOLDER | cut -d'-' -f2 | sort -u | tail -n 1)
for version in $versions; do
if [ "$version" = "$lastest" ]; then
echo "$version (lastest)"
else
echo "$version"
fi
done
}
# Switch between PHP versions
php-use() {
if [ -z "$1" ]; then
echo "Usage: php-switch <version>"
return
fi
# Check if PHP command exists
if ! command -v php &> /dev/null; then
previous="none"
else
previous=$(php -v | head -n 1 | cut -d' ' -f2)
fi
version=$1
# Check if version is "lastest"
if [ "$version" = "lastest" ]; then
version=$(php-versions | tail -n 1 | cut -d' ' -f1)
fi
# Check if PHP version is already that version
if [ "$version" = "$previous" ]; then
echo "PHP version $version is already active"
return
fi
# Check if the new version exists
PHP_FILE=$(ls -1 /c/laragon/bin/php | grep $version | head -n 1)
if [ -z "$PHP_FILE" ]; then
echo "PHP version $version not found"
return
fi
# Get previous PHP path
PHP_PREV_FILE=$(ls -1 /c/laragon/bin/php | grep $previous | head -n 1)
# Change PHP version in env path
export PATH="/c/laragon/bin/php/$PHP_FILE:$PATH"
echo "Using php $version"
}
# Create command php-switch that combines the two commands using fzf to select the version
php-switch() {
# Check if fzf is installed, if not tells where and how can install on Windows with Choco, Scoop or curl
if ! command -v fzf &> /dev/null; then
echo "fzf is not installed. You can install it with:"
echo " - Manually: download fzf.exe from the official repo (https://github.com/junegunn/fzf-bin/releases/tag/0.23.1) and put it on your git-bash-path/usr/bin/"
echo " - Using scoop: scoop install fzf"
echo " - Using choco: choco install fzf"
echo -e " - Using curl: curl -fsSL https://raw.githubusercontent.com/junegunn/fzf/master/install | bash \e[32m(recommended) \e[0m"
return
fi
# Current PHP version if command php not exists then "none"
if ! command -v php &> /dev/null; then
current="You are not using php."
else
current=$(php -v)
fi
version=$(php-versions | fzf --height 40% --reverse --border --prompt="Select the PHP version: ")
if [ -z "$version" ]; then
return
fi
php-use $(echo $version | cut -d' ' -f1)
}
php-use lastest
Now is working in vscode terminal 👍