Files
Scoop/libexec/scoop-create.ps1
Hsiao-nan Cheung 1dbab1fee8 Merge branch 'develop' into 'master' (#4594)
Related PRs:
- #4531 @filmor 
  - ac71fcc @niheaven 
- #4535 @rashil2000 
- #4522 @pratikpc 
- #4550 @niheaven 
- #4528 @niheaven 
- #4532 @MrNuggelz
- #4155 @MrNuggelz Co-authored-by: @rashil2000 
  - #4581 @niheaven 
  - fb496c4 @rashil2000 
- #4543 @rashil2000 Co-authored-by: @niheaven 
  - #4555 @rashil2000 
  - 3c90d1a @rashil2000 
  - 2ec00d5 @rashil2000 
- #4567 @rashil2000 
  - cbe29ed @rashil2000 
- #4570 @niheaven 
  - #4582 @niheaven 
- #4571 @niheaven 
- #3244 @nickbudi 
- #3821 @jfastnacht Co-authored-by: @rasa 
- #4578 @tukanos
- #4579 @rashil2000 

Co-authored-by: Hsiao-nan Cheung <niheaven@gmail.com>
Co-authored-by: Rashil Gandhi <46838874+rashil2000@users.noreply.github.com>
Co-authored-by: Jakub Čábera <cabera.jakub@gmail.com>
Co-authored-by: Ross Smith II <ross@smithii.com>
Co-authored-by: Benedikt Reinartz <filmor@gmail.com>
Co-authored-by: Joris <MrNuggelz@users.noreply.github.com>
Co-authored-by: Pratik Chowdhury <pratikc@live.co.uk>
Co-authored-by: Rashil Gandhi <rashil2000@gmail.com>
Co-authored-by: nickbudi <nickbudi@users.noreply.github.com>
Co-authored-by: Julian <github@fastnacht.consulting>
Co-authored-by: tukanos <patrik.svestka@gmail.com>
2021-12-25 23:09:49 +08:00

68 lines
1.4 KiB
PowerShell

# Usage: scoop create <url>
# Summary: Create a custom app manifest
# Help: Create your own custom app manifest
param($url)
function create_manifest($url) {
$manifest = new_manifest
$manifest.url = $url
$url_parts = $null
try {
$url_parts = parse_url $url
} catch {
abort "Error: $url is not a valid URL"
}
$name = choose_item $url_parts 'App name'
$name = if ($name.Length -gt 0) {
$name
} else {
file_name ($url_parts | Select-Object -Last 1)
}
$manifest.version = choose_item $url_parts 'Version'
$manifest | ConvertTo-Json | Out-File -FilePath "$name.json" -Encoding ASCII
$manifest_path = Join-Path $pwd "$name.json"
Write-Host "Created '$manifest_path'."
}
function new_manifest() {
@{ 'homepage' = ''; 'license' = ''; 'version' = ''; 'url' = '';
'hash' = ''; 'extract_dir' = ''; 'bin' = ''; 'depends' = ''
}
}
function file_name($segment) {
$segment.substring(0, $segment.lastindexof('.'))
}
function parse_url($url) {
$uri = New-Object Uri $url
$uri.pathandquery.substring(1).split('/')
}
function choose_item($list, $query) {
for ($i = 0; $i -lt $list.count; $i++) {
$item = $list[$i]
Write-Host "$($i + 1)) $item"
}
$sel = Read-Host $query
if ($sel.trim() -match '^[0-9+]$') {
return $list[$sel - 1]
}
$sel
}
if (!$url) {
scoop help create
} else {
create_manifest $url
}
exit 0