From 37736cf4e61fc53c950cb77dfcdc5aa7a107e0dd Mon Sep 17 00:00:00 2001 From: zenobit Date: Tue, 21 Mar 2023 15:29:47 +0100 Subject: [PATCH] renew.sh --- config/renew.sh | 116 ++++++++++++++++++++++++------------------------ 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/config/renew.sh b/config/renew.sh index 2715f7b..245e90a 100755 --- a/config/renew.sh +++ b/config/renew.sh @@ -1,35 +1,30 @@ #!/bin/bash -# shellcheck source=./distrohopper.conf -export LC_ALL=C - -echo "Updating VMs..." -# distrohopper config file +# config path CONFIG_DIR="$HOME/.config/distrohopper" -source "$CONFIG_DIR/distrohopper.conf" -# shellcheck source=distrohopper.conf -# remove desktop files (ready to run VMs) -rm -r "$CONFIG_DIR/ready" -mkdir "$CONFIG_DIR/ready" -# Enter ditrohopper VMs dir -cd "$VMS_DIR" || exit -# check for VMs .conf files (ready to run VMs) -for vm_conf in *.conf; do - vm_desktop=$(basename "$VMS_DIR/$vm_conf" .conf) - # Use fuzzy matching to find the best matching icon file (ready to run VMs) - icon_name=$(basename "$VMS_DIR/$vm_conf" .conf | cut -d'-' -f -2) - icon_file=$(find "$ICON_DIR" -type f -iname "${icon_name// /}.*") - # If no icon was found, try shorter name (ready to run VMs) - if [ -z "$icon_file" ]; then - icon_name=$(basename "$VMS_DIR/$vm_conf" .conf | cut -d'-' -f1) +source "$CONFIG_DIR"/distrohopper.conf +# Renew VMs +renew_ready() { + echo "Updating VMs..." + # Enter ditrohopper VMs dir + cd "$VMS_DIR" || exit + # check for VMs .conf files (ready to run VMs) + for vm_conf in *.conf; do + vm_desktop=$(basename "$VMS_DIR/$vm_conf" .conf) + # Use fuzzy matching to find the best matching icon file (ready to run VMs) + icon_name=$(basename "$VMS_DIR/$vm_conf" .conf | cut -d'-' -f -2) icon_file=$(find "$ICON_DIR" -type f -iname "${icon_name// /}.*") - fi - # If no icon was found, use a default icon (ready to run VMs) - if [ -z "$icon_file" ]; then - icon_file="$ICON_DIR/tux.svg" - fi - # content of desktop files (ready to run VMs) - desktop_file_content="[Desktop Entry] + # If no icon was found, try shorter name (ready to run VMs) + if [ -z "$icon_file" ]; then + icon_name=$(basename "$VMS_DIR/$vm_conf" .conf | cut -d'-' -f1) + icon_file=$(find "$ICON_DIR" -type f -iname "${icon_name// /}.*") + fi + # If no icon was found, use a default icon (ready to run VMs) + if [ -z "$icon_file" ]; then + icon_file="$ICON_DIR/tux.svg" + fi + # content of desktop files (ready to run VMs) + desktop_file_content="[Desktop Entry] Type=Application Name=$vm_desktop Exec=sh -c 'cd \"$VMS_DIR\" && quickemu -vm \"$vm_conf\"' @@ -37,40 +32,39 @@ Icon=$icon_file Categories=System;Virtualization;" # create desktop files (ready to run VMs) echo "$desktop_file_content" > "$CONFIG_DIR"/ready/"$vm_desktop".desktop -done + done +} -# remove desktop files (supported VMs) -rm -r "$CONFIG_DIR/supported" -mkdir "$CONFIG_DIR/supported" -# get supported VMs -quickget | sed 1d | cut -d':' -f2 | grep -o '[^ ]*' > "$CONFIG_DIR/supported.md" -while read -r get_name; do - vm_desktop=$(echo "$get_name" | tr ' ' '_') - releases=$(quickget "$vm_desktop" | grep 'Releases' | cut -d':' -f2 | sed 's/^ //') - editions=$(quickget "$vm_desktop" | grep 'Editions' | cut -d':' -f2 | sed 's/^ //') - icon_name="$ICON_DIR/$get_name" - if [ -f "$icon_name.svg" ]; then - icon_file="$icon_name.svg" - elif [ -f "$icon_name.png" ]; then - icon_file="$icon_name.png" - else - icon_file="$ICON_DIR/tux.svg" - fi - # Check if there are editions - if [ -z "$editions" ]; then - # Create desktop file for VMs without editions - desktop_file_content="[Desktop Entry] +renew_supported() { + # get supported VMs + quickget | sed 1d | cut -d':' -f2 | grep -o '[^ ]*' > "$CONFIG_DIR/supported.md" + while read -r get_name; do + vm_desktop=$(echo "$get_name" | tr ' ' '_') + releases=$(quickget "$vm_desktop" | grep 'Releases' | cut -d':' -f2 | sed 's/^ //') + editions=$(quickget "$vm_desktop" | grep 'Editions' | cut -d':' -f2 | sed 's/^ //') + icon_name="$ICON_DIR/$get_name" + if [ -f "$icon_name.svg" ]; then + icon_file="$icon_name.svg" + elif [ -f "$icon_name.png" ]; then + icon_file="$icon_name.png" + else + icon_file="$ICON_DIR/tux.svg" + fi + # Check if there are editions + if [ -z "$editions" ]; then + # Create desktop file for VMs without editions + desktop_file_content="[Desktop Entry] Type=Application Name=$get_name releases=$releases -replace='\"!\"' +replace=$replace Exec=sh -c 'cd \"$VMS_DIR\" && yad --form --field=\"Release:CB\" \"${releases// /$replace}\" | cut -d\"|\" -f1 | xargs -I{} sh -c \"quickget $get_name {}\"' Icon=$icon_file Categories=System;Virtualization;" - echo "$desktop_file_content" > "$CONFIG_DIR"/supported/"$vm_desktop".desktop - else - # Create desktop file for VMs with editions - desktop_file_content="[Desktop Entry] + echo "$desktop_file_content" > "$CONFIG_DIR"/supported/"$vm_desktop".desktop + else + # Create desktop file for VMs with editions + desktop_file_content="[Desktop Entry] Type=Application Name=$get_name releases=$releases @@ -79,6 +73,12 @@ replace=$replace Exec=sh -c 'cd \"$VMS_DIR\" && yad --form --separator=\" \" --field=\"Release:CB\" \"${releases// /$replace}\" --field=\"Edition:CB\" \"${editions// /$replace}\" | xargs -I{} sh -c \"quickget $get_name {}\"' Icon=$icon_file Categories=System;Virtualization;" - echo "$desktop_file_content" > "$CONFIG_DIR"/supported/"$vm_desktop".desktop - fi -done < "$CONFIG_DIR"/supported.md + echo "$desktop_file_content" > "$CONFIG_DIR"/supported/"$vm_desktop".desktop + fi + done < "$CONFIG_DIR"/supported.md +} + +renew_supported +renew_ready + +echo "Done"