Skip to content

Commit

Permalink
fix #1: stop background jobs on abort
Browse files Browse the repository at this point in the history
  • Loading branch information
mineugene committed Feb 13, 2022
1 parent a712e39 commit fc91af6
Showing 1 changed file with 31 additions and 7 deletions.
38 changes: 31 additions & 7 deletions winget-upgrade.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,40 @@ function Iterate-Async {
param($Cmd, $ArgsList)

$tasks = @()
foreach ($a in $ArgsList) {
$tasks += start-job -argumentlist $a -scriptblock $Cmd
$success = $false
try {
foreach ($a in $ArgsList) {
$tasks += start-job -argumentlist $a -scriptblock $Cmd
}
$success = $true
}
finally {
if ($success) {
write-host -nonewline "..."
} else {
write-host "ABORTING"
stop-job $tasks; remove-job $tasks
}
}
return $tasks
}

function Resolve-All {
param($tasks)

wait-job -job $tasks | Out-Null
$success = $false
try {
wait-job -job $tasks | Out-Null
$success = $true
}
finally {
if ($success) {
write-host "DONE"
} else {
write-host "ABORTING"
stop-job $tasks; remove-job $tasks
}
}
return ($tasks | % {receive-job $_.Id;remove-job $_.Id}) -split ' '
}

Expand Down Expand Up @@ -113,20 +137,20 @@ if (

write-header "Starting full upgrade"

write-host -nonewline "resolving packages..."
write-host -nonewline "resolving packages"
$tasks_resolve = iterate-async -cmd $resolve_names -argslist $programs.programs
$unresolved = resolve-all -tasks $tasks_resolve
write-host "DONE"

if ($unresolved.Length -gt 0) {
write-error -category NotInstalled `
-message "$($unresolved.Item(0)) : target not found."
exit 0xffffffff
}

write-host -nonewline "looking for conflicting packages..."
write-host -nonewline "looking for conflicting packages"
$tasks_exists = iterate-async -cmd $find_installed -argslist $programs.programs
$installed = resolve-all -tasks $tasks_exists
write-host "DONE"

$new_programs = $programs.programs
foreach ($prog_name in $installed) {
# filter out programs already installed on system
Expand Down

0 comments on commit fc91af6

Please sign in to comment.