diff --git a/usr/local/bin/snigdhaos-all-cores b/usr/local/bin/snigdhaos-all-cores index 68ad558..cf1ed1f 100755 --- a/usr/local/bin/snigdhaos-all-cores +++ b/usr/local/bin/snigdhaos-all-cores @@ -4,25 +4,71 @@ set -e # Author : Eshan Roy # Author URL : https://eshanized.github.io/ +# Function to check if the user has sudo privileges +check_sudo() { + if ! sudo -v &>/dev/null; then + echo "ERROR: You need to have sudo privileges to run this script." + exit 1 + fi +} + +# Function to back up the original makepkg.conf +backup_makepkg_conf() { + if [ ! -f /etc/makepkg.conf.bak ]; then + echo "Backing up /etc/makepkg.conf to /etc/makepkg.conf.bak..." + sudo cp /etc/makepkg.conf /etc/makepkg.conf.bak + else + echo "/etc/makepkg.conf.bak already exists. Skipping backup." + fi +} + +# Function to restore the makepkg.conf from backup +restore_makepkg_conf() { + if [ -f /etc/makepkg.conf.bak ]; then + echo "Restoring /etc/makepkg.conf from backup..." + sudo cp /etc/makepkg.conf.bak /etc/makepkg.conf + else + echo "ERROR: No backup found. Cannot restore makepkg.conf." + exit 1 + fi +} + +# Function to perform the optimizations +optimize_makepkg_conf() { + numberofcores=$(nproc) + + if (( numberofcores > 1 )); then + echo "TOTAL CORES : $numberofcores" + echo "Changing makeflags for $numberofcores cores." + + # Update MAKEFLAGS to utilize all available cores + sudo sed -i "/^MAKEFLAGS=/c\MAKEFLAGS=\"-j$((numberofcores+1))\"" /etc/makepkg.conf + + echo "Changing Compression..." + # Enable multi-threaded compression for xz and zstd + sudo sed -i 's/COMPRESSXZ=(xz -c -z -)/COMPRESSXZ=(xz -c -z --threads=0 -)/g' /etc/makepkg.conf + sudo sed -i 's/COMPRESSZST=(zstd -c -z -)/COMPRESSZST=(zstd -c -z --threads=0 -)/g' /etc/makepkg.conf + + echo "Changing Default PKGEXT..." + # Change the default package extension to use zstd + sudo sed -i 's/PKGEXT=.pkg.tar.xz/PKGEXT=.pkg.tar.zst/g' /etc/makepkg.conf + else + echo "Nothing changed, only one core detected." + fi +} + +# Main script execution echo echo "Starting Execution..." echo -numberofcores=$(nproc) +check_sudo +backup_makepkg_conf -if (( numberofcores > 1 )); then - echo "TOTAL CORES : $numberofcores" - echo "Changing makeflags for $numberofcores cores." - sudo sed -i "/^MAKEFLAGS=/c\MAKEFLAGS=\"-j$((numberofcores+1))\"" /etc/makepkg.conf - echo "Changing Compression..." - sudo sed -i 's/COMPRESSXZ=(xz -c -z -)/COMPRESSXZ=(xz -c -z --threads=0 -)/g' /etc/makepkg.conf - sudo sed -i 's/COMPRESSZST=(zstd -c -z -)/COMPRESSZST=(zstd -c -z --threads=0 -)/g' /etc/makepkg.conf - echo "Changing Default PKGEXT" - sudo sed -i 's/PKGEXT=.pkg.tar.xz/PKGEXT=.pkg.tar.zst/g' /etc/makepkg.conf -else - echo "Nothing Changed!" -fi +# Try to apply optimizations and handle any issues +trap 'echo "An error occurred. Restoring the previous makepkg.conf..."; restore_makepkg_conf' ERR +optimize_makepkg_conf echo -echo "End Execution!" -echo \ No newline at end of file +echo "Execution Complete!" +echo