mirror of
				https://github.com/ScoopInstaller/Scoop.git
				synced 2025-10-30 22:28:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
| <#
 | |
| .SYNOPSIS
 | |
|     Search for application description on homepage.
 | |
| .PARAMETER App
 | |
|     Manifest name to search.
 | |
|     Placeholders are supported.
 | |
| .PARAMETER Dir
 | |
|     Where to search for manifest(s).
 | |
| #>
 | |
| param(
 | |
|     [String] $App = '*',
 | |
|     [Parameter(Mandatory = $true)]
 | |
|     [ValidateScript( {
 | |
|         if (!(Test-Path $_ -Type Container)) {
 | |
|             throw "$_ is not a directory!"
 | |
|         } else {
 | |
|             $true
 | |
|         }
 | |
|     })]
 | |
|     [String] $Dir
 | |
| )
 | |
| 
 | |
| . "$PSScriptRoot\..\lib\core.ps1"
 | |
| . "$PSScriptRoot\..\lib\manifest.ps1"
 | |
| . "$PSScriptRoot\..\lib\description.ps1"
 | |
| . "$PSScriptRoot\..\lib\download.ps1"
 | |
| 
 | |
| $Dir = Convert-Path $Dir
 | |
| $Queue = @()
 | |
| 
 | |
| Get-ChildItem $Dir -Filter "$App.json" -Recurse | ForEach-Object {
 | |
|     $manifest = parse_json $_.FullName
 | |
|     $Queue += , @($_.BaseName, $manifest)
 | |
| }
 | |
| 
 | |
| $Queue | ForEach-Object {
 | |
|     $name, $manifest = $_
 | |
|     Write-Host "$name`: " -NoNewline
 | |
| 
 | |
|     if (!$manifest.homepage) {
 | |
|         Write-Host "`nNo homepage set." -ForegroundColor Red
 | |
|         return
 | |
|     }
 | |
|     # get description from homepage
 | |
|     try {
 | |
|         $wc = New-Object Net.Webclient
 | |
|         $wc.Headers.Add('User-Agent', (Get-UserAgent))
 | |
|         $homepage = $wc.DownloadData($manifest.homepage)
 | |
|         $home_html = (Get-Encoding($wc)).GetString($homepage)
 | |
|     } catch {
 | |
|         Write-Host "`n$($_.Exception.Message)" -ForegroundColor Red
 | |
|         return
 | |
|     }
 | |
| 
 | |
|     $description, $descr_method = find_description $manifest.homepage $home_html
 | |
|     if (!$description) {
 | |
|         Write-Host "`nDescription not found ($($manifest.homepage))" -ForegroundColor Red
 | |
|         return
 | |
|     }
 | |
| 
 | |
|     $description = clean_description $description
 | |
| 
 | |
|     Write-Host "(found by $descr_method)"
 | |
|     Write-Host "  ""$description""" -ForegroundColor Green
 | |
| }
 | 
