@eshanized pushed another commit via script 🔥🔥🔥

This commit is contained in:
2024-03-11 14:06:57 +05:30
parent 766c129ecc
commit 089c666803

View File

@@ -0,0 +1,115 @@
#!/usr/bin/expect -f
if {![exp_debug]} {trap {exit 1} {SIGINT SIGTERM}}
variable noconfirm [string equal $::env(AUTOPACMAN_PACMAN_NOCONFIRM) "1"]
variable noconfirm_downloading false
variable conflictsfile_set [expr [info exist ::env(AUTOPACMAN_CONFLICTSFILE)] && [file exist $::env(AUTOPACMAN_CONFLICTSFILE)] ? true : false]
# [package to be replaced]: [package to be replaced with]
array set auto_replace_conflicts {
python-xdg python-pyxdg
vimix-gtk-themes snigdhaos-vimix-dark
bibata-cursor-theme sweet-theme-full-git
kvantum-theme-sweet-git sweet-theme-full-git
sweet-gtk-theme-dark sweet-theme-full-git
plasma5-theme-sweet-git sweet-theme-full-git
xcursor-sweet sweet-theme-full-git
exe-thumbnailer icoextract
pipewire-media-session wireplumber
qemu-base qemu-desktop
libretro-mame-git libretro-meta
jack2 pipewire-jack
networkmanager-fortisslvpn networkmanager-support
ananicy-rules cachyos-ananicy-rules-git
sweet-theme-full-git plasma5-themes-sweet-full-git
sweet-kde-theme-git plasma5-themes-sweet-kde-git
jre-openjdk jdk-openjdk
jre-openjdk-headless {jdk-openjdk jre-openjdk}
}
if { $::conflictsfile_set } {
set conflictsfile [open $::env(AUTOPACMAN_CONFLICTSFILE) r]
array set auto_replace_conflicts [gets $conflictsfile]
close $conflictsfile
}
proc parseConflicts {first second} {
foreach {key value} [array get ::auto_replace_conflicts] {
if { [string equal $second $key] && [lsearch -exact $value $first] != -1 } {
send "y\r"
return
}
}
if { $::noconfirm } {
return
} elseif { $::conflictsfile_set } {
send "n\r"
} else {
expect_user -timeout -1 -re "(.*)\n"
if {[regexp {^[Yy]$} $expect_out(1,string)]} {
set ::auto_replace_conflicts($second) $first
send "y\r"
} else {
send "n\r"
}
}
}
proc doExit {} {
catch wait result
if {[info exist ::env(AUTOPACMAN_CONFLICTSFILE)] && ![file exist $::env(AUTOPACMAN_CONFLICTSFILE)] } {
set conflictsfile [open $::env(AUTOPACMAN_CONFLICTSFILE) [list WRONLY CREAT EXCL] 0600]
puts $conflictsfile [array get ::auto_replace_conflicts]
close $conflictsfile
}
exit [lindex $result 3]
}
spawn {*}$argv
log_user 1
set timeout -1
expect {
"Starting full system upgrade..." { }
eof doExit
}
set timeout 15
expect {
-re {Replace \S+ with \S+ \[Y\/n\]} { send "y\r"; exp_continue }
"resolving dependencies..." { }
timeout { }
eof doExit
}
expect {
"looking for conflicting packages" { exp_continue }
"Enter a number (default=1):" { if { $noconfirm } { send "1\r"; exp_continue; } { interact -o "\r" exp_continue; } }
-re {(\S+) and (\S+) are in conflict( \(\S+\))?\.} { parseConflicts $expect_out(1,string) $expect_out(2,string); exp_continue }
-re {Proceed with installation.*} { if { [info exist ::env(AUTOPACMAN_LOG)] } { log_file $::env(AUTOPACMAN_LOG) }; if { $::noconfirm || $::conflictsfile_set } { send "y\r"; set noconfirm_downloading true } }
timeout { }
eof doExit
}
if { $noconfirm } {
if { $noconfirm_downloading } {
set timeout -1
expect {
-re {Do you want to delete it.*} { send "y\r"; exp_continue }
-re {.*\[Y/n\]} { }
eof doExit
}
}
exp_send_error "\nUnexpected user input required. Try again without --noconfirm"
close
} else {
expect_background {
-re {Do you want to delete it.*} { send "y\r"; exp_continue }
}
catch interact
}
doExit