From 86762428dcc04bb364b52085c869ac6990e5c410 Mon Sep 17 00:00:00 2001 From: Tony Messias Date: Sun, 2 Mar 2025 10:48:42 -0300 Subject: [PATCH] Make the LazyVIM plugins optional and add uninstall scripts for the dev langs and their lazyvim plugins --- install/terminal/select-dev-language.sh | 10 +++-- uninstall/dev-language.sh | 59 +++++++++++++++++++++++++ uninstall/php.sh | 4 -- uninstall/rust.sh | 1 - 4 files changed, 66 insertions(+), 8 deletions(-) create mode 100644 uninstall/dev-language.sh delete mode 100644 uninstall/php.sh delete mode 100644 uninstall/rust.sh diff --git a/install/terminal/select-dev-language.sh b/install/terminal/select-dev-language.sh index 66a7b1f..40c28cb 100644 --- a/install/terminal/select-dev-language.sh +++ b/install/terminal/select-dev-language.sh @@ -6,6 +6,8 @@ else languages=$(gum choose "${AVAILABLE_LANGUAGES[@]}" --no-limit --height 10 --header "Select programming languages") fi +install_extras=$(gum confirm "Would you like to enable the LazyVIM extras plugins (if available) too?") + enable_lazyvim_extras() { local config_file="$HOME/.config/nvim/lazyvim.json" local extras=("$@") @@ -27,11 +29,11 @@ if [[ -n "$languages" ]]; then ;; Node.js) mise use --global node@lts - enable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" ;; Go) mise use --global go@latest - enable_lazyvim_extras "lazyvim.plugins.extras.lang.go" + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.go" ;; PHP) sudo add-apt-repository -y ppa:ondrej/php @@ -39,7 +41,7 @@ if [[ -n "$languages" ]]; then php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php --quiet && sudo mv composer.phar /usr/local/bin/composer rm composer-setup.php - enable_lazyvim_extras "lazyvim.plugins.extras.lang.php" + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.php" ;; Python) mise use --global python@latest @@ -48,9 +50,11 @@ if [[ -n "$languages" ]]; then mise use --global erlang@latest mise use --global elixir@latest mise x elixir -- mix local.hex --force + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.elixir" "lazyvim.plugins.extras.lang.erlang" ;; Rust) bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs)" -- -y + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.rust" ;; Java) mise use --global java@latest diff --git a/uninstall/dev-language.sh b/uninstall/dev-language.sh new file mode 100644 index 0000000..2c98e71 --- /dev/null +++ b/uninstall/dev-language.sh @@ -0,0 +1,59 @@ +# Uninstall default programming languages +if [[ -v OMAKUB_FIRST_RUN_LANGUAGES ]]; then + languages=$OMAKUB_FIRST_RUN_LANGUAGES +else + AVAILABLE_LANGUAGES=("Ruby on Rails" "Node.js" "Go" "PHP" "Python" "Elixir" "Rust" "Java") + languages=$(gum choose "${AVAILABLE_LANGUAGES[@]}" --no-limit --height 10 --header "Select programming languages to uninstall") +fi + +disable_lazyvim_extras() { + local config_file="$HOME/.config/nvim/lazyvim.json" + local extras=("$@") + + local extras_json + extras_json=$(printf '"%s",' "${extras[@]}") + extras_json="[${extras_json%,}]" + + # This is cheating to mimic an in-place editing of files (without a tmp file)... + { rm "$config_file" && jq --argjson extras "$extras_json" '.extras |= (. - $extras)' >"$config_file"; } <"$config_file" +} + +if [[ -n "$languages" ]]; then + for language in $languages; do + case $language in + Ruby) + mise uninstall ruby@3.4 + mise x ruby -- gem uninstall rails + ;; + Node.js) + mise uninstall node@lts + disable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" + ;; + Go) + mise uninstall go@latest + disable_lazyvim_extras "lazyvim.plugins.extras.lang.go" + ;; + PHP) + sudo apt -y purge php8.4 php8.4-{curl,apcu,intl,mbstring,opcache,pgsql,mysql,sqlite3,redis,xml,zip} + sudo add-apt-repository -y --remove ppa:ondrej/php + sudo rm /usr/local/bin/composer + disable_lazyvim_extras "lazyvim.plugins.extras.lang.php" + ;; + Python) + mise uninstall python@latest + ;; + Elixir) + mise uninstall elixir@latest + mise uninstall erlang@latest + disable_lazyvim_extras "lazyvim.plugins.extras.lang.elixir" "lazyvim.plugins.extras.lang.erlang" + ;; + Rust) + rustup self uninstall -y + disable_lazyvim_extras "lazyvim.plugins.extras.lang.rust" + ;; + Java) + mise uninnstall java@latest + ;; + esac + done +fi diff --git a/uninstall/php.sh b/uninstall/php.sh deleted file mode 100644 index da7db13..0000000 --- a/uninstall/php.sh +++ /dev/null @@ -1,4 +0,0 @@ -sudo apt -y purge "php8.3*" -sudo add-apt-repository -y --remove ppa:ondrej/php - -sudo rm /usr/local/bin/composer diff --git a/uninstall/rust.sh b/uninstall/rust.sh deleted file mode 100644 index 93dcd9d..0000000 --- a/uninstall/rust.sh +++ /dev/null @@ -1 +0,0 @@ -rustup self uninstall -y