mirror of
https://github.com/mistralai/mistral-vibe
synced 2026-04-25 17:14:55 +02:00
Co-authored-by: Clément Sirieix <clement.sirieix@mistral.ai> Co-authored-by: Kim-Adeline Miguel <kimadeline.miguel@mistral.ai> Co-authored-by: Lucas Marandat <31749711+lucasmrdt@users.noreply.github.com> Co-authored-by: Michel Thomazo <51709227+michelTho@users.noreply.github.com> Co-authored-by: Paul Cacheux <paul.cacheux@mistral.ai> Co-authored-by: Peter Evers <pevers90@gmail.com> Co-authored-by: Pierre Rossinès <pierre.rossines@mistral.ai> Co-authored-by: Pierre Rossinès <pierre.rossines@protonmail.com> Co-authored-by: Quentin <quentin.torroba@mistral.ai> Co-authored-by: Simon Van de Kerckhove <simon.vandekerckhove@mistral.ai> Co-authored-by: Val <102326092+vdeva@users.noreply.github.com> Co-authored-by: Vincent G <10739306+VinceOPS@users.noreply.github.com> Co-authored-by: Mistral Vibe <vibe@mistral.ai>
192 lines
5.2 KiB
Bash
Executable File
192 lines
5.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Mistral Vibe Installation Script
|
|
# This script installs uv if not present and then installs mistral-vibe using uv
|
|
|
|
set -euo pipefail
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
ORIGINAL_PATH="${PATH}"
|
|
|
|
function error() {
|
|
echo -e "${RED}[ERROR]${NC} $1" >&2
|
|
}
|
|
|
|
function info() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
function success() {
|
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
}
|
|
|
|
function warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
function find_command_in_path() {
|
|
local cmd="$1"
|
|
local path_value="$2"
|
|
PATH="$path_value" command -v "$cmd" 2>/dev/null || true
|
|
}
|
|
|
|
function print_missing_path_instructions() {
|
|
local executable_name="$1"
|
|
local executable_path="$2"
|
|
local bin_dir
|
|
bin_dir=$(dirname "$executable_path")
|
|
|
|
warning "Installation completed, and '$executable_name' was installed at: $executable_path"
|
|
error "Your PATH does not include the folder that contains '$executable_name'."
|
|
error "Add this directory to your shell profile, then restart your terminal:"
|
|
error " export PATH=\"$bin_dir:\$PATH\""
|
|
}
|
|
|
|
function check_platform() {
|
|
local platform=$(uname -s)
|
|
|
|
if [[ "$platform" == "Linux" ]]; then
|
|
info "Detected Linux platform"
|
|
PLATFORM="linux"
|
|
elif [[ "$platform" == "Darwin" ]]; then
|
|
info "Detected macOS platform"
|
|
PLATFORM="macos"
|
|
else
|
|
error "Unsupported platform: $platform"
|
|
error "This installation script currently only supports Linux and macOS"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
function check_uv_installed() {
|
|
if command -v uv >/dev/null 2>&1; then
|
|
info "uv is already installed: $(uv --version)"
|
|
UV_INSTALLED=true
|
|
else
|
|
info "uv is not installed"
|
|
UV_INSTALLED=false
|
|
fi
|
|
}
|
|
|
|
function install_uv() {
|
|
info "Installing uv using the official Astral installer..."
|
|
|
|
if ! command -v curl &> /dev/null; then
|
|
error "curl is required to install uv. Please install curl first."
|
|
exit 1
|
|
fi
|
|
|
|
if curl -LsSf https://astral.sh/uv/install.sh | sh; then
|
|
success "uv installed successfully"
|
|
|
|
export PATH="$HOME/.local/bin:$PATH"
|
|
|
|
if ! command -v uv &> /dev/null; then
|
|
warning "uv was installed but not found in PATH for this session"
|
|
warning "You may need to restart your terminal or run:"
|
|
warning " export PATH=\"\$HOME/.cargo/bin:\$HOME/.local/bin:\$PATH\""
|
|
fi
|
|
else
|
|
error "Failed to install uv"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
function check_vibe_installed() {
|
|
if [[ -n "$(find_command_in_path vibe "$ORIGINAL_PATH")" ]]; then
|
|
info "vibe is already installed"
|
|
VIBE_INSTALLED=true
|
|
return
|
|
fi
|
|
|
|
local uv_bin_dir
|
|
uv_bin_dir=$(uv tool dir --bin 2>/dev/null || true)
|
|
if [[ -n "$uv_bin_dir" && -x "$uv_bin_dir/vibe" ]]; then
|
|
info "vibe is already installed (off PATH) at $uv_bin_dir/vibe"
|
|
VIBE_INSTALLED=true
|
|
return
|
|
fi
|
|
|
|
VIBE_INSTALLED=false
|
|
}
|
|
|
|
function install_vibe() {
|
|
info "Installing mistral-vibe from GitHub repository using uv..."
|
|
uv tool install mistral-vibe
|
|
|
|
success "Mistral Vibe installed successfully! (commands: vibe, vibe-acp)"
|
|
}
|
|
|
|
function update_vibe() {
|
|
info "Updating mistral-vibe from GitHub repository using uv..."
|
|
uv tool upgrade mistral-vibe
|
|
|
|
success "Mistral Vibe updated successfully!"
|
|
}
|
|
|
|
function main() {
|
|
echo
|
|
echo "██████████████████░░"
|
|
echo "██████████████████░░"
|
|
echo "████ ██████ ████░░"
|
|
echo "████ ██ ████░░"
|
|
echo "████ ████░░"
|
|
echo "████ ██ ██ ████░░"
|
|
echo "██ ██ ██░░"
|
|
echo "██████████████████░░"
|
|
echo "██████████████████░░"
|
|
echo
|
|
echo "Starting Mistral Vibe installation..."
|
|
echo
|
|
|
|
check_platform
|
|
|
|
check_uv_installed
|
|
|
|
if [[ "$UV_INSTALLED" == "false" ]]; then
|
|
install_uv
|
|
fi
|
|
|
|
check_vibe_installed
|
|
|
|
if [[ "$VIBE_INSTALLED" == "false" ]]; then
|
|
install_vibe
|
|
else
|
|
update_vibe
|
|
fi
|
|
|
|
if [[ -n "$(find_command_in_path vibe "$ORIGINAL_PATH")" ]]; then
|
|
success "Installation completed successfully!"
|
|
echo
|
|
echo "You can now run vibe with:"
|
|
echo " vibe"
|
|
echo
|
|
echo "Or for ACP mode:"
|
|
echo " vibe-acp"
|
|
else
|
|
local UV_BIN_DIR
|
|
local VIBE_BIN_PATH=""
|
|
UV_BIN_DIR=$(uv tool dir --bin 2>/dev/null || true)
|
|
if [[ -n "$UV_BIN_DIR" && -x "$UV_BIN_DIR/vibe" ]]; then
|
|
VIBE_BIN_PATH="$UV_BIN_DIR/vibe"
|
|
fi
|
|
|
|
if [[ -n "$VIBE_BIN_PATH" ]]; then
|
|
print_missing_path_instructions "vibe" "$VIBE_BIN_PATH"
|
|
else
|
|
error "Installation completed but 'vibe' command not found"
|
|
error "uv did not expose a 'vibe' executable in the expected tools directory."
|
|
error "Please check your installation and PATH settings"
|
|
fi
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
main
|