mirror of
https://github.com/ScoopInstaller/Scoop.git
synced 2025-10-30 06:07:56 +00:00
* fix (decompress): `Expand-7zipArchive` only delete temp dir / `$extractDir` if it is empty (#6092) Co-authored-by: Hsiao-nan Cheung <niheaven@gmail.com> * refactor(download): Move download-related functions to 'download.ps1' (#6095) * fix(download): Fallback to default downloader when aria2 fails (#4292) * fix(commands): Handling broken aliases (#6141) * fix(shim): properly check `wslpath`/`cygpath` command first (#6114) Co-authored-by: Hsiao-nan Cheung <niheaven@gmail.com> * fix(scoop-bucket): Add missing import for `no_junction` envs (#6181) Signed-off-by: Chawye Hsu <su+git@chawyehsu.com> * docs(chglog): Update to 0.5.3 (#6258) * perf(shim): Update kiennq-shim to v3.1.2 (#6261) * fix(decompress): Replace deprecated 7ZIPEXTRACT_USE_EXTERNAL config (#6327) Co-authored-by: Hsiao-nan Cheung <niheaven@gmail.com> * fix(scoop-uninstall): Fix uninstaller does not gain Global state (#6430) * global arg * changelog * refactor(Get-Manifest): Select actual source for manifest (#6142) * first step * Revert "first step" This reverts commitc5907c3e25. * refactor(Get-Manifest): Select actual source for installed manifest * rework sub-commands, `scoop-depends` is NOT working at this stage * URI manifest * opt * deprecated manifest * source of manifests * source of manifest pt2 - Mark URI(path/URL/UNC/etc.) query as standalone manifest - Drop `installed` and `available update` items for [query] and [installed] are different sources. * remove variable preventing I forget it * scoop-info: fix source of manifest on bucket * fix `scoop-depends` * Fix Standalone and Source detection * fix global install * Fix scoop-cat, scoop-home - Query for remote manifest * scoop-list: info +deprecated * manifest: Fix first selected manifest * gramma.. * Fix61b3259* length * fix(scoop-depends-tests): Mocking `USE_EXTERNAL_7ZIP` as $false (#6431) * fix(scoop-depends-tests): Mocking `USE_EXTERNAL_7ZIP` as $false to avoding error when it is $true * CHANGELOG * feat(autoupdate): GitHub predefined hashes support (#6416) * feat(autoupdate): predefined hash case for GitHub - Remove `sha256:` prefix in `format_hash()` - Add GitHub support in `get_hash_for_app()` Close #6381 * doc(chglog): GitHub auto hash update * fix(autoupdate): remove prefix only * docs(CHANGELOG): Update to 0.5.3 (#6432) * docs(CHANGELOG): Update to 0.5.3 * 6416 --------- Signed-off-by: Chawye Hsu <su+git@chawyehsu.com> Co-authored-by: Olav Rønnestad Birkeland <6450056+o-l-a-v@users.noreply.github.com> Co-authored-by: kiennq <kien.n.quang@gmail.com> Co-authored-by: HUMORCE <humorce@outlook.com> Co-authored-by: Ryan <sitiom@proton.me> Co-authored-by: Chawye Hsu <su+git@chawyehsu.com> Co-authored-by: Bassel Rachid <101208715+basselworkforce@users.noreply.github.com> Co-authored-by: Wordless Echo <wordless@echo.moe>
86 lines
3.2 KiB
PowerShell
86 lines
3.2 KiB
PowerShell
# Usage: scoop status
|
|
# Summary: Show status and check for new app versions
|
|
# Help: Options:
|
|
# -l, --local Checks the status for only the locally installed apps,
|
|
# and disables remote fetching/checking for Scoop and buckets
|
|
|
|
. "$PSScriptRoot\..\lib\manifest.ps1" # 'manifest' 'parse_json' "install_info"
|
|
. "$PSScriptRoot\..\lib\versions.ps1" # 'Select-CurrentVersion'
|
|
. "$PSScriptRoot\..\lib\download.ps1" # 'Get-UserAgent'
|
|
|
|
# check if scoop needs updating
|
|
$currentdir = versiondir 'scoop' 'current'
|
|
$needs_update = $false
|
|
$bucket_needs_update = $false
|
|
$script:network_failure = $false
|
|
$no_remotes = $args[0] -eq '-l' -or $args[0] -eq '--local'
|
|
if (!(Get-Command git -ErrorAction SilentlyContinue)) { $no_remotes = $true }
|
|
$list = @()
|
|
if (!(Get-FormatData ScoopStatus)) {
|
|
Update-FormatData "$PSScriptRoot\..\supporting\formats\ScoopTypes.Format.ps1xml"
|
|
}
|
|
|
|
function Test-UpdateStatus($repopath) {
|
|
if (Test-Path "$repopath\.git") {
|
|
Invoke-Git -Path $repopath -ArgumentList @('fetch', '-q', 'origin')
|
|
$script:network_failure = 128 -eq $LASTEXITCODE
|
|
$branch = Invoke-Git -Path $repopath -ArgumentList @('branch', '--show-current')
|
|
$commits = Invoke-Git -Path $repopath -ArgumentList @('log', "HEAD..origin/$branch", '--oneline')
|
|
if ($commits) { return $true }
|
|
else { return $false }
|
|
} else {
|
|
return $true
|
|
}
|
|
}
|
|
|
|
if (!$no_remotes) {
|
|
$needs_update = Test-UpdateStatus $currentdir
|
|
foreach ($bucket in Get-LocalBucket) {
|
|
if (Test-UpdateStatus (Find-BucketDirectory $bucket -Root)) {
|
|
$bucket_needs_update = $true
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($needs_update) {
|
|
warn "Scoop out of date. Run 'scoop update' to get the latest changes."
|
|
} elseif ($bucket_needs_update) {
|
|
warn "Scoop bucket(s) out of date. Run 'scoop update' to get the latest changes."
|
|
} elseif (!$script:network_failure -and !$no_remotes) {
|
|
success 'Scoop is up to date.'
|
|
}
|
|
|
|
$true, $false | ForEach-Object { # local and global apps
|
|
$global = $_
|
|
$dir = appsdir $global
|
|
if (!(Test-Path $dir)) { return }
|
|
|
|
Get-ChildItem $dir | Where-Object name -NE 'scoop' | ForEach-Object {
|
|
$app = $_.name
|
|
$status = app_status $app $global
|
|
if (!$status.outdated -and !$status.failed -and !$status.deprecated -and !$status.removed -and !$status.missing_deps) { return }
|
|
|
|
$item = [ordered]@{}
|
|
$item.Name = $app
|
|
$item.'Installed Version' = $status.version
|
|
$item.'Latest Version' = if ($status.outdated) { $status.latest_version } else { "" }
|
|
$item.'Missing Dependencies' = $status.missing_deps -Split ' ' -Join ' | '
|
|
$info = @()
|
|
if ($status.failed) { $info += 'Install failed' }
|
|
if ($status.hold) { $info += 'Held package' }
|
|
if ($status.deprecated) { $info += 'Deprecated' }
|
|
if ($status.removed) { $info += 'Manifest removed' }
|
|
$item.Info = $info -join ', '
|
|
$list += [PSCustomObject]$item
|
|
}
|
|
}
|
|
|
|
if ($list.Length -eq 0 -and !$needs_update -and !$bucket_needs_update -and !$script:network_failure) {
|
|
success 'Everything is ok!'
|
|
}
|
|
|
|
$list | Add-Member -TypeName ScoopStatus -PassThru
|
|
|
|
exit 0
|